late-sdk 0.0.685 → 0.0.686

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 (31) hide show
  1. checksums.yaml +4 -4
  2. data/docs/CommentAutomationsApi.md +1 -1
  3. data/docs/ConversionEvent.md +1 -1
  4. data/docs/ConversionEventUser.md +2 -0
  5. data/docs/CreateCommentAutomation200ResponseAutomation.md +4 -0
  6. data/docs/CreateCommentAutomationRequest.md +4 -0
  7. data/docs/GetCommentAutomation200ResponseAutomation.md +4 -0
  8. data/docs/GetCommentAutomation200ResponseLogsInner.md +3 -1
  9. data/docs/ListCommentAutomations200ResponseAutomationsInner.md +4 -0
  10. data/docs/UpdateCommentAutomationRequest.md +4 -0
  11. data/lib/zernio-sdk/api/comment_automations_api.rb +1 -1
  12. data/lib/zernio-sdk/models/conversion_event.rb +1 -1
  13. data/lib/zernio-sdk/models/conversion_event_user.rb +11 -1
  14. data/lib/zernio-sdk/models/create_comment_automation200_response_automation.rb +21 -1
  15. data/lib/zernio-sdk/models/create_comment_automation_request.rb +77 -1
  16. data/lib/zernio-sdk/models/get_comment_automation200_response_automation.rb +21 -1
  17. data/lib/zernio-sdk/models/get_comment_automation200_response_logs_inner.rb +14 -4
  18. data/lib/zernio-sdk/models/list_comment_automations200_response_automations_inner.rb +21 -1
  19. data/lib/zernio-sdk/models/update_comment_automation_request.rb +77 -1
  20. data/lib/zernio-sdk/version.rb +1 -1
  21. data/openapi.yaml +30 -4
  22. data/spec/models/conversion_event_user_spec.rb +6 -0
  23. data/spec/models/create_comment_automation200_response_automation_spec.rb +12 -0
  24. data/spec/models/create_comment_automation_request_spec.rb +12 -0
  25. data/spec/models/get_comment_automation200_response_automation_spec.rb +12 -0
  26. data/spec/models/get_comment_automation200_response_logs_inner_spec.rb +7 -1
  27. data/spec/models/list_comment_automations200_response_automations_inner_spec.rb +12 -0
  28. data/spec/models/update_comment_automation_request_spec.rb +12 -0
  29. data/zernio-sdk-0.0.686.gem +0 -0
  30. metadata +1567 -1567
  31. data/zernio-sdk-0.0.685.gem +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b50a43152d2db82a260e610f7406f4f21656d252cfba4797c4a6aa71479925b
4
- data.tar.gz: b8aa82d53fef8d14baf0cd9a1204a9228a9afec0a0328d110a3605b4195c847b
3
+ metadata.gz: f4f22a8096310e1cc8f40bb4e8c383ec0e349773ef668159de65699f0542512d
4
+ data.tar.gz: 2772a4785d3e100f8a3b370f7bcdd12b7accbae51ab231e3c9ed16b86883b56c
5
5
  SHA512:
6
- metadata.gz: e2bbc652dc88a41a6eb9ec396c97dae836f5075dd1a685dcb9c903e2bc8481f5b6277c67939a61e51f1928286347007009bad7553d55bed1da92ced66db88819
7
- data.tar.gz: 338e379aa6567330d0d7980ff8f7d0d0b77d96824862e07acf9cd876ce9da3e021c2356220f0b3a4d29c79e74175e7d3abcc25341aad2cefa66d1d6c51d711ed
6
+ metadata.gz: e52482d8cb3484b6e2339788b85e51455ba117ecb6ce0a0fddb14afbf093a6268da890b8cd6d2bcd09cb2d26368762a0184758e98977a66f04e5824bff650c0f
7
+ data.tar.gz: 7ab9db137b6dc2e723e48f102315dcc7fe7eb869d63e8dfbe11cc9efc89150e3fb5ffe2db35c97f7ace0679d20e31ea512aad814f280bc1895b202ef785981c9
@@ -240,7 +240,7 @@ end
240
240
  api_instance = Zernio::CommentAutomationsApi.new
241
241
  automation_id = 'automation_id_example' # String |
242
242
  opts = {
243
- status: 'sent', # String | Filter by result status
243
+ status: 'pending', # String | Filter by result status
244
244
  limit: 56, # Integer |
245
245
  skip: 56 # Integer |
246
246
  }
@@ -13,7 +13,7 @@
13
13
  | **items** | [**Array<ConversionEventItemsInner>**](ConversionEventItemsInner.md) | Item-level detail for ecommerce events. | [optional] |
14
14
  | **source_url** | **String** | URL where the conversion originated (used by Meta). | [optional] |
15
15
  | **action_source** | **String** | Where the conversion happened. Used by Meta. Google also requires an event source internally; omitting this field sends OTHER to Google. Send an explicit value for accurate origin reporting. | [optional] |
16
- | **platform_data** | **Hash<String, Object>** | Escape hatch for platform-specific fields we haven't normalized. Forwarded as-is. | [optional] |
16
+ | **platform_data** | **Hash<String, Object>** | Escape hatch for platform-specific fields we haven't normalized. On Meta, keys are shallow-merged into `custom_data` only: fields Zernio already builds (`value`, `currency`, `contents`, `num_items`) always win on collision, and `user_data` (hashed match keys) is never touched. Use first-class fields (e.g. `user.leadId`) for anything that must reach `user_data`. | [optional] |
17
17
 
18
18
  ## Example
19
19
 
@@ -17,6 +17,7 @@
17
17
  | **zip** | **String** | Meta advanced matching (zp). US uses first 5 digits; hashed server-side. Meta only. | [optional] |
18
18
  | **dob** | **String** | Meta advanced matching (db). YYYYMMDD; hashed server-side. Meta only. | [optional] |
19
19
  | **gender** | **String** | Meta advanced matching (ge). 'f' or 'm'; hashed server-side. Meta only. | [optional] |
20
+ | **lead_id** | **String** | Meta lead ID from a Lead Ad submission, as a string. Required for Conversion Leads CRM events: send it with `actionSource: 'crm'` and `platformData: { event_source: 'crm', lead_event_source: '<CRM name>' }`. Forwarded unhashed to Meta's `user_data.lead_id`. Meta only. | [optional] |
20
21
  | **click_ids** | [**ConversionEventUserClickIds**](ConversionEventUserClickIds.md) | | [optional] |
21
22
 
22
23
  ## Example
@@ -38,6 +39,7 @@ instance = Zernio::ConversionEventUser.new(
38
39
  zip: null,
39
40
  dob: null,
40
41
  gender: null,
42
+ lead_id: null,
41
43
  click_ids: null
42
44
  )
43
45
  ```
@@ -20,6 +20,8 @@
20
20
  | **comment_reply_variations** | **Array<String>** | Alternate public replies rotated at random with commentReply. Omitted when none. | [optional] |
21
21
  | **link_tracking** | **Boolean** | | [optional] |
22
22
  | **click_tag** | **String** | | [optional] |
23
+ | **dm_delay_seconds** | **Integer** | Seconds waited after the trigger before the DM is sent. Absent when the DM goes out immediately. | [optional] |
24
+ | **comment_reply_delay_seconds** | **Integer** | Seconds waited before the public reply is posted. Absent when it follows the DM immediately. | [optional] |
23
25
  | **audience** | [**CommentAutomationAudience**](CommentAutomationAudience.md) | | [optional] |
24
26
  | **follow_gate** | [**CommentAutomationFollowGate**](CommentAutomationFollowGate.md) | | [optional] |
25
27
  | **is_active** | **Boolean** | | [optional] |
@@ -48,6 +50,8 @@ instance = Zernio::CreateCommentAutomation200ResponseAutomation.new(
48
50
  comment_reply_variations: null,
49
51
  link_tracking: null,
50
52
  click_tag: null,
53
+ dm_delay_seconds: null,
54
+ comment_reply_delay_seconds: null,
51
55
  audience: null,
52
56
  follow_gate: null,
53
57
  is_active: null,
@@ -22,6 +22,8 @@
22
22
  | **comment_reply_variations** | **Array<String>** | Optional alternate public replies, rotated at random alongside commentReply (picked independently of the DM). Up to 5. | [optional] |
23
23
  | **link_tracking** | **Boolean** | Wrap link buttons in the DM in a tracked redirect so clicks are counted (Link Clicks / CTR). Pass false to send links exactly as written. Defaults to on. | [optional][default to true] |
24
24
  | **click_tag** | **String** | Optional tag applied to a contact when they click a tracked link (requires linkTracking). Lets you segment clickers for broadcasts/sequences. | [optional] |
25
+ | **dm_delay_seconds** | **Integer** | Seconds to wait after the trigger before sending the DM. Omit or send 0 to reply immediately (the default). Max 86400 (24h). The trigger is still matched and deduplicated the moment the comment arrives, so a delay only moves when the response is sent. | [optional] |
26
+ | **comment_reply_delay_seconds** | **Integer** | Seconds to wait before posting the public comment reply. Omit or send 0 to post it right after the DM (the default). The reply never goes out before the DM, so a value below dmDelaySeconds is raised to it. Ignored when trigger=story_reply, which has no public reply. | [optional] |
25
27
  | **audience** | [**CommentAutomationAudience**](CommentAutomationAudience.md) | | [optional] |
26
28
  | **follow_gate** | [**CommentAutomationFollowGate**](CommentAutomationFollowGate.md) | | [optional] |
27
29
 
@@ -49,6 +51,8 @@ instance = Zernio::CreateCommentAutomationRequest.new(
49
51
  comment_reply_variations: null,
50
52
  link_tracking: null,
51
53
  click_tag: null,
54
+ dm_delay_seconds: null,
55
+ comment_reply_delay_seconds: null,
52
56
  audience: null,
53
57
  follow_gate: null
54
58
  )
@@ -23,6 +23,8 @@
23
23
  | **comment_reply_variations** | **Array<String>** | Alternate public replies rotated at random with commentReply. Omitted when none. | [optional] |
24
24
  | **link_tracking** | **Boolean** | | [optional] |
25
25
  | **click_tag** | **String** | | [optional] |
26
+ | **dm_delay_seconds** | **Integer** | Seconds waited after the trigger before the DM is sent. Absent when the DM goes out immediately. | [optional] |
27
+ | **comment_reply_delay_seconds** | **Integer** | Seconds waited before the public reply is posted. Absent when it follows the DM immediately. | [optional] |
26
28
  | **audience** | [**CommentAutomationAudience**](CommentAutomationAudience.md) | | [optional] |
27
29
  | **follow_gate** | [**CommentAutomationFollowGate**](CommentAutomationFollowGate.md) | | [optional] |
28
30
  | **is_active** | **Boolean** | | [optional] |
@@ -55,6 +57,8 @@ instance = Zernio::GetCommentAutomation200ResponseAutomation.new(
55
57
  comment_reply_variations: null,
56
58
  link_tracking: null,
57
59
  click_tag: null,
60
+ dm_delay_seconds: null,
61
+ comment_reply_delay_seconds: null,
58
62
  audience: null,
59
63
  follow_gate: null,
60
64
  is_active: null,
@@ -9,13 +9,14 @@
9
9
  | **commenter_id** | **String** | | [optional] |
10
10
  | **commenter_name** | **String** | | [optional] |
11
11
  | **comment_text** | **String** | | [optional] |
12
- | **status** | **String** | DM outcome. 'gated' = the follow-gate confirmation DM went out and we are waiting for the tap; it flips to 'sent' or 'skipped' when they tap. | [optional] |
12
+ | **status** | **String** | DM outcome. 'pending' = the automation has a dmDelaySeconds and the response is queued but not sent yet. 'gated' = the follow-gate confirmation DM went out and we are waiting for the tap; it flips to 'sent' or 'skipped' when they tap. | [optional] |
13
13
  | **audience_outcome** | **String** | How the audience rule resolved. Absent on automations without one. | [optional] |
14
14
  | **commenter_is_follower** | **Boolean** | Follow relationship at decision time. Absent when Instagram would not tell us (the commenter never messaged the account). | [optional] |
15
15
  | **commenter_follower_count** | **Integer** | | [optional] |
16
16
  | **error** | **String** | DM error message if status is failed | [optional] |
17
17
  | **comment_reply_status** | **String** | Outcome of the optional public reply on the triggering comment. 'skipped' if no commentReply was configured or if the DM failed (the public reply is not attempted in that case). | [optional] |
18
18
  | **comment_reply_error** | **String** | Public-reply error message if commentReplyStatus is failed | [optional] |
19
+ | **next_due_at** | **Time** | When the next queued send fires. Present only while something is still pending. | [optional] |
19
20
  | **created_at** | **Time** | | [optional] |
20
21
 
21
22
  ## Example
@@ -36,6 +37,7 @@ instance = Zernio::GetCommentAutomation200ResponseLogsInner.new(
36
37
  error: null,
37
38
  comment_reply_status: null,
38
39
  comment_reply_error: null,
40
+ next_due_at: null,
39
41
  created_at: null
40
42
  )
41
43
  ```
@@ -22,6 +22,8 @@
22
22
  | **comment_reply_variations** | **Array<String>** | Alternate public replies rotated at random with commentReply. Omitted when none. | [optional] |
23
23
  | **link_tracking** | **Boolean** | Whether link buttons in the DM are wrapped in a tracked redirect to count clicks. | [optional] |
24
24
  | **click_tag** | **String** | Tag applied to a contact when they click a tracked link. | [optional] |
25
+ | **dm_delay_seconds** | **Integer** | Seconds waited after the trigger before the DM is sent. Absent when the DM goes out immediately. | [optional] |
26
+ | **comment_reply_delay_seconds** | **Integer** | Seconds waited before the public reply is posted. Absent when it follows the DM immediately. | [optional] |
25
27
  | **is_active** | **Boolean** | | [optional] |
26
28
  | **stats** | [**ListCommentAutomations200ResponseAutomationsInnerStats**](ListCommentAutomations200ResponseAutomationsInnerStats.md) | | [optional] |
27
29
  | **created_at** | **Time** | | [optional] |
@@ -50,6 +52,8 @@ instance = Zernio::ListCommentAutomations200ResponseAutomationsInner.new(
50
52
  comment_reply_variations: null,
51
53
  link_tracking: null,
52
54
  click_tag: null,
55
+ dm_delay_seconds: null,
56
+ comment_reply_delay_seconds: null,
53
57
  is_active: null,
54
58
  stats: null,
55
59
  created_at: null
@@ -17,6 +17,8 @@
17
17
  | **comment_reply_variations** | **Array<String>** | Alternate public replies for random rotation. Pass [] to clear. | [optional] |
18
18
  | **link_tracking** | **Boolean** | Wrap link buttons in a tracked redirect to count clicks. Pass false to send links untouched. | [optional] |
19
19
  | **click_tag** | **String** | Tag applied to a contact when they click a tracked link (requires linkTracking). Empty string clears it. | [optional] |
20
+ | **dm_delay_seconds** | **Integer** | Seconds to wait after the trigger before sending the DM. Send 0 to clear the delay and reply immediately. | [optional] |
21
+ | **comment_reply_delay_seconds** | **Integer** | Seconds to wait before posting the public comment reply. Send 0 to clear it. The reply never goes out before the DM. | [optional] |
20
22
  | **audience** | [**CommentAutomationAudience**](CommentAutomationAudience.md) | | [optional] |
21
23
  | **follow_gate** | [**CommentAutomationFollowGate**](CommentAutomationFollowGate.md) | | [optional] |
22
24
  | **is_active** | **Boolean** | | [optional] |
@@ -40,6 +42,8 @@ instance = Zernio::UpdateCommentAutomationRequest.new(
40
42
  comment_reply_variations: null,
41
43
  link_tracking: null,
42
44
  click_tag: null,
45
+ dm_delay_seconds: null,
46
+ comment_reply_delay_seconds: null,
43
47
  audience: null,
44
48
  follow_gate: null,
45
49
  is_active: null
@@ -242,7 +242,7 @@ module Zernio
242
242
  if @api_client.config.client_side_validation && automation_id.nil?
243
243
  fail ArgumentError, "Missing the required parameter 'automation_id' when calling CommentAutomationsApi.list_comment_automation_logs"
244
244
  end
245
- allowable_values = ["sent", "failed", "skipped", "gated"]
245
+ allowable_values = ["pending", "sent", "failed", "skipped", "gated"]
246
246
  if @api_client.config.client_side_validation && opts[:'status'] && !allowable_values.include?(opts[:'status'])
247
247
  fail ArgumentError, "invalid value for \"status\", must be one of #{allowable_values}"
248
248
  end
@@ -42,7 +42,7 @@ module Zernio
42
42
  # Where the conversion happened. Used by Meta. Google also requires an event source internally; omitting this field sends OTHER to Google. Send an explicit value for accurate origin reporting.
43
43
  attr_accessor :action_source
44
44
 
45
- # Escape hatch for platform-specific fields we haven't normalized. Forwarded as-is.
45
+ # Escape hatch for platform-specific fields we haven't normalized. On Meta, keys are shallow-merged into `custom_data` only: fields Zernio already builds (`value`, `currency`, `contents`, `num_items`) always win on collision, and `user_data` (hashed match keys) is never touched. Use first-class fields (e.g. `user.leadId`) for anything that must reach `user_data`.
46
46
  attr_accessor :platform_data
47
47
 
48
48
  class EnumAttributeValidator
@@ -55,6 +55,9 @@ module Zernio
55
55
  # Meta advanced matching (ge). 'f' or 'm'; hashed server-side. Meta only.
56
56
  attr_accessor :gender
57
57
 
58
+ # Meta lead ID from a Lead Ad submission, as a string. Required for Conversion Leads CRM events: send it with `actionSource: 'crm'` and `platformData: { event_source: 'crm', lead_event_source: '<CRM name>' }`. Forwarded unhashed to Meta's `user_data.lead_id`. Meta only.
59
+ attr_accessor :lead_id
60
+
58
61
  attr_accessor :click_ids
59
62
 
60
63
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -73,6 +76,7 @@ module Zernio
73
76
  :'zip' => :'zip',
74
77
  :'dob' => :'dob',
75
78
  :'gender' => :'gender',
79
+ :'lead_id' => :'leadId',
76
80
  :'click_ids' => :'clickIds'
77
81
  }
78
82
  end
@@ -103,6 +107,7 @@ module Zernio
103
107
  :'zip' => :'String',
104
108
  :'dob' => :'String',
105
109
  :'gender' => :'String',
110
+ :'lead_id' => :'String',
106
111
  :'click_ids' => :'ConversionEventUserClickIds'
107
112
  }
108
113
  end
@@ -181,6 +186,10 @@ module Zernio
181
186
  self.gender = attributes[:'gender']
182
187
  end
183
188
 
189
+ if attributes.key?(:'lead_id')
190
+ self.lead_id = attributes[:'lead_id']
191
+ end
192
+
184
193
  if attributes.key?(:'click_ids')
185
194
  self.click_ids = attributes[:'click_ids']
186
195
  end
@@ -219,6 +228,7 @@ module Zernio
219
228
  zip == o.zip &&
220
229
  dob == o.dob &&
221
230
  gender == o.gender &&
231
+ lead_id == o.lead_id &&
222
232
  click_ids == o.click_ids
223
233
  end
224
234
 
@@ -231,7 +241,7 @@ module Zernio
231
241
  # Calculates hash code according to all attributes.
232
242
  # @return [Integer] Hash code
233
243
  def hash
234
- [email, phone, first_name, last_name, external_id, ip_address, user_agent, country, city, state, zip, dob, gender, click_ids].hash
244
+ [email, phone, first_name, last_name, external_id, ip_address, user_agent, country, city, state, zip, dob, gender, lead_id, click_ids].hash
235
245
  end
236
246
 
237
247
  # Builds the object from hash
@@ -53,6 +53,12 @@ module Zernio
53
53
 
54
54
  attr_accessor :click_tag
55
55
 
56
+ # Seconds waited after the trigger before the DM is sent. Absent when the DM goes out immediately.
57
+ attr_accessor :dm_delay_seconds
58
+
59
+ # Seconds waited before the public reply is posted. Absent when it follows the DM immediately.
60
+ attr_accessor :comment_reply_delay_seconds
61
+
56
62
  attr_accessor :audience
57
63
 
58
64
  attr_accessor :follow_gate
@@ -104,6 +110,8 @@ module Zernio
104
110
  :'comment_reply_variations' => :'commentReplyVariations',
105
111
  :'link_tracking' => :'linkTracking',
106
112
  :'click_tag' => :'clickTag',
113
+ :'dm_delay_seconds' => :'dmDelaySeconds',
114
+ :'comment_reply_delay_seconds' => :'commentReplyDelaySeconds',
107
115
  :'audience' => :'audience',
108
116
  :'follow_gate' => :'followGate',
109
117
  :'is_active' => :'isActive',
@@ -141,6 +149,8 @@ module Zernio
141
149
  :'comment_reply_variations' => :'Array<String>',
142
150
  :'link_tracking' => :'Boolean',
143
151
  :'click_tag' => :'String',
152
+ :'dm_delay_seconds' => :'Integer',
153
+ :'comment_reply_delay_seconds' => :'Integer',
144
154
  :'audience' => :'CommentAutomationAudience',
145
155
  :'follow_gate' => :'CommentAutomationFollowGate',
146
156
  :'is_active' => :'Boolean',
@@ -245,6 +255,14 @@ module Zernio
245
255
  self.click_tag = attributes[:'click_tag']
246
256
  end
247
257
 
258
+ if attributes.key?(:'dm_delay_seconds')
259
+ self.dm_delay_seconds = attributes[:'dm_delay_seconds']
260
+ end
261
+
262
+ if attributes.key?(:'comment_reply_delay_seconds')
263
+ self.comment_reply_delay_seconds = attributes[:'comment_reply_delay_seconds']
264
+ end
265
+
248
266
  if attributes.key?(:'audience')
249
267
  self.audience = attributes[:'audience']
250
268
  end
@@ -326,6 +344,8 @@ module Zernio
326
344
  comment_reply_variations == o.comment_reply_variations &&
327
345
  link_tracking == o.link_tracking &&
328
346
  click_tag == o.click_tag &&
347
+ dm_delay_seconds == o.dm_delay_seconds &&
348
+ comment_reply_delay_seconds == o.comment_reply_delay_seconds &&
329
349
  audience == o.audience &&
330
350
  follow_gate == o.follow_gate &&
331
351
  is_active == o.is_active &&
@@ -342,7 +362,7 @@ module Zernio
342
362
  # Calculates hash code according to all attributes.
343
363
  # @return [Integer] Hash code
344
364
  def hash
345
- [id, name, platform, trigger, platform_post_id, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, comment_reply, dm_message_variations, comment_reply_variations, link_tracking, click_tag, audience, follow_gate, is_active, stats, created_at].hash
365
+ [id, name, platform, trigger, platform_post_id, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, comment_reply, dm_message_variations, comment_reply_variations, link_tracking, click_tag, dm_delay_seconds, comment_reply_delay_seconds, audience, follow_gate, is_active, stats, created_at].hash
346
366
  end
347
367
 
348
368
  # Builds the object from hash
@@ -68,6 +68,12 @@ module Zernio
68
68
  # Optional tag applied to a contact when they click a tracked link (requires linkTracking). Lets you segment clickers for broadcasts/sequences.
69
69
  attr_accessor :click_tag
70
70
 
71
+ # Seconds to wait after the trigger before sending the DM. Omit or send 0 to reply immediately (the default). Max 86400 (24h). The trigger is still matched and deduplicated the moment the comment arrives, so a delay only moves when the response is sent.
72
+ attr_accessor :dm_delay_seconds
73
+
74
+ # Seconds to wait before posting the public comment reply. Omit or send 0 to post it right after the DM (the default). The reply never goes out before the DM, so a value below dmDelaySeconds is raised to it. Ignored when trigger=story_reply, which has no public reply.
75
+ attr_accessor :comment_reply_delay_seconds
76
+
71
77
  attr_accessor :audience
72
78
 
73
79
  attr_accessor :follow_gate
@@ -115,6 +121,8 @@ module Zernio
115
121
  :'comment_reply_variations' => :'commentReplyVariations',
116
122
  :'link_tracking' => :'linkTracking',
117
123
  :'click_tag' => :'clickTag',
124
+ :'dm_delay_seconds' => :'dmDelaySeconds',
125
+ :'comment_reply_delay_seconds' => :'commentReplyDelaySeconds',
118
126
  :'audience' => :'audience',
119
127
  :'follow_gate' => :'followGate'
120
128
  }
@@ -151,6 +159,8 @@ module Zernio
151
159
  :'comment_reply_variations' => :'Array<String>',
152
160
  :'link_tracking' => :'Boolean',
153
161
  :'click_tag' => :'String',
162
+ :'dm_delay_seconds' => :'Integer',
163
+ :'comment_reply_delay_seconds' => :'Integer',
154
164
  :'audience' => :'CommentAutomationAudience',
155
165
  :'follow_gate' => :'CommentAutomationFollowGate'
156
166
  }
@@ -274,6 +284,14 @@ module Zernio
274
284
  self.click_tag = attributes[:'click_tag']
275
285
  end
276
286
 
287
+ if attributes.key?(:'dm_delay_seconds')
288
+ self.dm_delay_seconds = attributes[:'dm_delay_seconds']
289
+ end
290
+
291
+ if attributes.key?(:'comment_reply_delay_seconds')
292
+ self.comment_reply_delay_seconds = attributes[:'comment_reply_delay_seconds']
293
+ end
294
+
277
295
  if attributes.key?(:'audience')
278
296
  self.audience = attributes[:'audience']
279
297
  end
@@ -316,6 +334,22 @@ module Zernio
316
334
  invalid_properties.push('invalid value for "comment_reply_variations", number of items must be less than or equal to 5.')
317
335
  end
318
336
 
337
+ if !@dm_delay_seconds.nil? && @dm_delay_seconds > 86400
338
+ invalid_properties.push('invalid value for "dm_delay_seconds", must be smaller than or equal to 86400.')
339
+ end
340
+
341
+ if !@dm_delay_seconds.nil? && @dm_delay_seconds < 0
342
+ invalid_properties.push('invalid value for "dm_delay_seconds", must be greater than or equal to 0.')
343
+ end
344
+
345
+ if !@comment_reply_delay_seconds.nil? && @comment_reply_delay_seconds > 86400
346
+ invalid_properties.push('invalid value for "comment_reply_delay_seconds", must be smaller than or equal to 86400.')
347
+ end
348
+
349
+ if !@comment_reply_delay_seconds.nil? && @comment_reply_delay_seconds < 0
350
+ invalid_properties.push('invalid value for "comment_reply_delay_seconds", must be greater than or equal to 0.')
351
+ end
352
+
319
353
  invalid_properties
320
354
  end
321
355
 
@@ -334,6 +368,10 @@ module Zernio
334
368
  return false if !@buttons.nil? && @buttons.length > 3
335
369
  return false if !@dm_message_variations.nil? && @dm_message_variations.length > 5
336
370
  return false if !@comment_reply_variations.nil? && @comment_reply_variations.length > 5
371
+ return false if !@dm_delay_seconds.nil? && @dm_delay_seconds > 86400
372
+ return false if !@dm_delay_seconds.nil? && @dm_delay_seconds < 0
373
+ return false if !@comment_reply_delay_seconds.nil? && @comment_reply_delay_seconds > 86400
374
+ return false if !@comment_reply_delay_seconds.nil? && @comment_reply_delay_seconds < 0
337
375
  true
338
376
  end
339
377
 
@@ -439,6 +477,42 @@ module Zernio
439
477
  @comment_reply_variations = comment_reply_variations
440
478
  end
441
479
 
480
+ # Custom attribute writer method with validation
481
+ # @param [Object] dm_delay_seconds Value to be assigned
482
+ def dm_delay_seconds=(dm_delay_seconds)
483
+ if dm_delay_seconds.nil?
484
+ fail ArgumentError, 'dm_delay_seconds cannot be nil'
485
+ end
486
+
487
+ if dm_delay_seconds > 86400
488
+ fail ArgumentError, 'invalid value for "dm_delay_seconds", must be smaller than or equal to 86400.'
489
+ end
490
+
491
+ if dm_delay_seconds < 0
492
+ fail ArgumentError, 'invalid value for "dm_delay_seconds", must be greater than or equal to 0.'
493
+ end
494
+
495
+ @dm_delay_seconds = dm_delay_seconds
496
+ end
497
+
498
+ # Custom attribute writer method with validation
499
+ # @param [Object] comment_reply_delay_seconds Value to be assigned
500
+ def comment_reply_delay_seconds=(comment_reply_delay_seconds)
501
+ if comment_reply_delay_seconds.nil?
502
+ fail ArgumentError, 'comment_reply_delay_seconds cannot be nil'
503
+ end
504
+
505
+ if comment_reply_delay_seconds > 86400
506
+ fail ArgumentError, 'invalid value for "comment_reply_delay_seconds", must be smaller than or equal to 86400.'
507
+ end
508
+
509
+ if comment_reply_delay_seconds < 0
510
+ fail ArgumentError, 'invalid value for "comment_reply_delay_seconds", must be greater than or equal to 0.'
511
+ end
512
+
513
+ @comment_reply_delay_seconds = comment_reply_delay_seconds
514
+ end
515
+
442
516
  # Checks equality by comparing each attribute.
443
517
  # @param [Object] Object to be compared
444
518
  def ==(o)
@@ -462,6 +536,8 @@ module Zernio
462
536
  comment_reply_variations == o.comment_reply_variations &&
463
537
  link_tracking == o.link_tracking &&
464
538
  click_tag == o.click_tag &&
539
+ dm_delay_seconds == o.dm_delay_seconds &&
540
+ comment_reply_delay_seconds == o.comment_reply_delay_seconds &&
465
541
  audience == o.audience &&
466
542
  follow_gate == o.follow_gate
467
543
  end
@@ -475,7 +551,7 @@ module Zernio
475
551
  # Calculates hash code according to all attributes.
476
552
  # @return [Integer] Hash code
477
553
  def hash
478
- [profile_id, account_id, trigger, platform_post_id, post_id, post_title, name, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, comment_reply, dm_message_variations, comment_reply_variations, link_tracking, click_tag, audience, follow_gate].hash
554
+ [profile_id, account_id, trigger, platform_post_id, post_id, post_title, name, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, comment_reply, dm_message_variations, comment_reply_variations, link_tracking, click_tag, dm_delay_seconds, comment_reply_delay_seconds, audience, follow_gate].hash
479
555
  end
480
556
 
481
557
  # Builds the object from hash
@@ -59,6 +59,12 @@ module Zernio
59
59
 
60
60
  attr_accessor :click_tag
61
61
 
62
+ # Seconds waited after the trigger before the DM is sent. Absent when the DM goes out immediately.
63
+ attr_accessor :dm_delay_seconds
64
+
65
+ # Seconds waited before the public reply is posted. Absent when it follows the DM immediately.
66
+ attr_accessor :comment_reply_delay_seconds
67
+
62
68
  attr_accessor :audience
63
69
 
64
70
  attr_accessor :follow_gate
@@ -115,6 +121,8 @@ module Zernio
115
121
  :'comment_reply_variations' => :'commentReplyVariations',
116
122
  :'link_tracking' => :'linkTracking',
117
123
  :'click_tag' => :'clickTag',
124
+ :'dm_delay_seconds' => :'dmDelaySeconds',
125
+ :'comment_reply_delay_seconds' => :'commentReplyDelaySeconds',
118
126
  :'audience' => :'audience',
119
127
  :'follow_gate' => :'followGate',
120
128
  :'is_active' => :'isActive',
@@ -156,6 +164,8 @@ module Zernio
156
164
  :'comment_reply_variations' => :'Array<String>',
157
165
  :'link_tracking' => :'Boolean',
158
166
  :'click_tag' => :'String',
167
+ :'dm_delay_seconds' => :'Integer',
168
+ :'comment_reply_delay_seconds' => :'Integer',
159
169
  :'audience' => :'CommentAutomationAudience',
160
170
  :'follow_gate' => :'CommentAutomationFollowGate',
161
171
  :'is_active' => :'Boolean',
@@ -273,6 +283,14 @@ module Zernio
273
283
  self.click_tag = attributes[:'click_tag']
274
284
  end
275
285
 
286
+ if attributes.key?(:'dm_delay_seconds')
287
+ self.dm_delay_seconds = attributes[:'dm_delay_seconds']
288
+ end
289
+
290
+ if attributes.key?(:'comment_reply_delay_seconds')
291
+ self.comment_reply_delay_seconds = attributes[:'comment_reply_delay_seconds']
292
+ end
293
+
276
294
  if attributes.key?(:'audience')
277
295
  self.audience = attributes[:'audience']
278
296
  end
@@ -361,6 +379,8 @@ module Zernio
361
379
  comment_reply_variations == o.comment_reply_variations &&
362
380
  link_tracking == o.link_tracking &&
363
381
  click_tag == o.click_tag &&
382
+ dm_delay_seconds == o.dm_delay_seconds &&
383
+ comment_reply_delay_seconds == o.comment_reply_delay_seconds &&
364
384
  audience == o.audience &&
365
385
  follow_gate == o.follow_gate &&
366
386
  is_active == o.is_active &&
@@ -378,7 +398,7 @@ module Zernio
378
398
  # Calculates hash code according to all attributes.
379
399
  # @return [Integer] Hash code
380
400
  def hash
381
- [id, name, platform, trigger, account_id, platform_post_id, post_id, post_title, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, comment_reply, dm_message_variations, comment_reply_variations, link_tracking, click_tag, audience, follow_gate, is_active, stats, created_at, updated_at].hash
401
+ [id, name, platform, trigger, account_id, platform_post_id, post_id, post_title, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, comment_reply, dm_message_variations, comment_reply_variations, link_tracking, click_tag, dm_delay_seconds, comment_reply_delay_seconds, audience, follow_gate, is_active, stats, created_at, updated_at].hash
382
402
  end
383
403
 
384
404
  # Builds the object from hash
@@ -25,7 +25,7 @@ module Zernio
25
25
 
26
26
  attr_accessor :comment_text
27
27
 
28
- # DM outcome. 'gated' = the follow-gate confirmation DM went out and we are waiting for the tap; it flips to 'sent' or 'skipped' when they tap.
28
+ # DM outcome. 'pending' = the automation has a dmDelaySeconds and the response is queued but not sent yet. 'gated' = the follow-gate confirmation DM went out and we are waiting for the tap; it flips to 'sent' or 'skipped' when they tap.
29
29
  attr_accessor :status
30
30
 
31
31
  # How the audience rule resolved. Absent on automations without one.
@@ -45,6 +45,9 @@ module Zernio
45
45
  # Public-reply error message if commentReplyStatus is failed
46
46
  attr_accessor :comment_reply_error
47
47
 
48
+ # When the next queued send fires. Present only while something is still pending.
49
+ attr_accessor :next_due_at
50
+
48
51
  attr_accessor :created_at
49
52
 
50
53
  class EnumAttributeValidator
@@ -84,6 +87,7 @@ module Zernio
84
87
  :'error' => :'error',
85
88
  :'comment_reply_status' => :'commentReplyStatus',
86
89
  :'comment_reply_error' => :'commentReplyError',
90
+ :'next_due_at' => :'nextDueAt',
87
91
  :'created_at' => :'createdAt'
88
92
  }
89
93
  end
@@ -113,6 +117,7 @@ module Zernio
113
117
  :'error' => :'String',
114
118
  :'comment_reply_status' => :'String',
115
119
  :'comment_reply_error' => :'String',
120
+ :'next_due_at' => :'Time',
116
121
  :'created_at' => :'Time'
117
122
  }
118
123
  end
@@ -187,6 +192,10 @@ module Zernio
187
192
  self.comment_reply_error = attributes[:'comment_reply_error']
188
193
  end
189
194
 
195
+ if attributes.key?(:'next_due_at')
196
+ self.next_due_at = attributes[:'next_due_at']
197
+ end
198
+
190
199
  if attributes.key?(:'created_at')
191
200
  self.created_at = attributes[:'created_at']
192
201
  end
@@ -204,7 +213,7 @@ module Zernio
204
213
  # @return true if the model is valid
205
214
  def valid?
206
215
  warn '[DEPRECATED] the `valid?` method is obsolete'
207
- status_validator = EnumAttributeValidator.new('String', ["sent", "failed", "skipped", "gated"])
216
+ status_validator = EnumAttributeValidator.new('String', ["pending", "sent", "failed", "skipped", "gated"])
208
217
  return false unless status_validator.valid?(@status)
209
218
  audience_outcome_validator = EnumAttributeValidator.new('String', ["passed", "blocked", "gate_sent", "gate_passed", "gate_failed"])
210
219
  return false unless audience_outcome_validator.valid?(@audience_outcome)
@@ -216,7 +225,7 @@ module Zernio
216
225
  # Custom attribute writer method checking allowed values (enum).
217
226
  # @param [Object] status Object to be assigned
218
227
  def status=(status)
219
- validator = EnumAttributeValidator.new('String', ["sent", "failed", "skipped", "gated"])
228
+ validator = EnumAttributeValidator.new('String', ["pending", "sent", "failed", "skipped", "gated"])
220
229
  unless validator.valid?(status)
221
230
  fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
222
231
  end
@@ -260,6 +269,7 @@ module Zernio
260
269
  error == o.error &&
261
270
  comment_reply_status == o.comment_reply_status &&
262
271
  comment_reply_error == o.comment_reply_error &&
272
+ next_due_at == o.next_due_at &&
263
273
  created_at == o.created_at
264
274
  end
265
275
 
@@ -272,7 +282,7 @@ module Zernio
272
282
  # Calculates hash code according to all attributes.
273
283
  # @return [Integer] Hash code
274
284
  def hash
275
- [id, comment_id, commenter_id, commenter_name, comment_text, status, audience_outcome, commenter_is_follower, commenter_follower_count, error, comment_reply_status, comment_reply_error, created_at].hash
285
+ [id, comment_id, commenter_id, commenter_name, comment_text, status, audience_outcome, commenter_is_follower, commenter_follower_count, error, comment_reply_status, comment_reply_error, next_due_at, created_at].hash
276
286
  end
277
287
 
278
288
  # Builds the object from hash
@@ -59,6 +59,12 @@ module Zernio
59
59
  # Tag applied to a contact when they click a tracked link.
60
60
  attr_accessor :click_tag
61
61
 
62
+ # Seconds waited after the trigger before the DM is sent. Absent when the DM goes out immediately.
63
+ attr_accessor :dm_delay_seconds
64
+
65
+ # Seconds waited before the public reply is posted. Absent when it follows the DM immediately.
66
+ attr_accessor :comment_reply_delay_seconds
67
+
62
68
  attr_accessor :is_active
63
69
 
64
70
  attr_accessor :stats
@@ -108,6 +114,8 @@ module Zernio
108
114
  :'comment_reply_variations' => :'commentReplyVariations',
109
115
  :'link_tracking' => :'linkTracking',
110
116
  :'click_tag' => :'clickTag',
117
+ :'dm_delay_seconds' => :'dmDelaySeconds',
118
+ :'comment_reply_delay_seconds' => :'commentReplyDelaySeconds',
111
119
  :'is_active' => :'isActive',
112
120
  :'stats' => :'stats',
113
121
  :'created_at' => :'createdAt'
@@ -145,6 +153,8 @@ module Zernio
145
153
  :'comment_reply_variations' => :'Array<String>',
146
154
  :'link_tracking' => :'Boolean',
147
155
  :'click_tag' => :'String',
156
+ :'dm_delay_seconds' => :'Integer',
157
+ :'comment_reply_delay_seconds' => :'Integer',
148
158
  :'is_active' => :'Boolean',
149
159
  :'stats' => :'ListCommentAutomations200ResponseAutomationsInnerStats',
150
160
  :'created_at' => :'Time'
@@ -255,6 +265,14 @@ module Zernio
255
265
  self.click_tag = attributes[:'click_tag']
256
266
  end
257
267
 
268
+ if attributes.key?(:'dm_delay_seconds')
269
+ self.dm_delay_seconds = attributes[:'dm_delay_seconds']
270
+ end
271
+
272
+ if attributes.key?(:'comment_reply_delay_seconds')
273
+ self.comment_reply_delay_seconds = attributes[:'comment_reply_delay_seconds']
274
+ end
275
+
258
276
  if attributes.key?(:'is_active')
259
277
  self.is_active = attributes[:'is_active']
260
278
  end
@@ -342,6 +360,8 @@ module Zernio
342
360
  comment_reply_variations == o.comment_reply_variations &&
343
361
  link_tracking == o.link_tracking &&
344
362
  click_tag == o.click_tag &&
363
+ dm_delay_seconds == o.dm_delay_seconds &&
364
+ comment_reply_delay_seconds == o.comment_reply_delay_seconds &&
345
365
  is_active == o.is_active &&
346
366
  stats == o.stats &&
347
367
  created_at == o.created_at
@@ -356,7 +376,7 @@ module Zernio
356
376
  # Calculates hash code according to all attributes.
357
377
  # @return [Integer] Hash code
358
378
  def hash
359
- [id, name, platform, trigger, account_id, platform_post_id, post_title, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, comment_reply, dm_message_variations, comment_reply_variations, link_tracking, click_tag, is_active, stats, created_at].hash
379
+ [id, name, platform, trigger, account_id, platform_post_id, post_title, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, comment_reply, dm_message_variations, comment_reply_variations, link_tracking, click_tag, dm_delay_seconds, comment_reply_delay_seconds, is_active, stats, created_at].hash
360
380
  end
361
381
 
362
382
  # Builds the object from hash