late-sdk 0.0.686 → 0.0.688

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/docs/CommentAutomationTemplate.md +20 -0
  4. data/docs/CommentAutomationTemplateElement.md +24 -0
  5. data/docs/CommentAutomationTemplateElementButtonsInner.md +24 -0
  6. data/docs/CreateCommentAutomation200ResponseAutomation.md +2 -0
  7. data/docs/CreateCommentAutomationRequest.md +2 -0
  8. data/docs/GetCommentAutomation200ResponseAutomation.md +2 -0
  9. data/docs/ListCommentAutomations200ResponseAutomationsInner.md +2 -0
  10. data/docs/MessagesApi.md +2 -2
  11. data/docs/SendInboxMessageRequest.md +1 -1
  12. data/docs/UpdateCommentAutomation200ResponseAutomation.md +2 -0
  13. data/docs/UpdateCommentAutomationRequest.md +2 -0
  14. data/docs/WebhookEventsApi.md +1 -1
  15. data/lib/zernio-sdk/api/messages_api.rb +4 -4
  16. data/lib/zernio-sdk/api/webhook_events_api.rb +2 -2
  17. data/lib/zernio-sdk/models/comment_automation_template.rb +235 -0
  18. data/lib/zernio-sdk/models/comment_automation_template_element.rb +244 -0
  19. data/lib/zernio-sdk/models/comment_automation_template_element_buttons_inner.rb +243 -0
  20. data/lib/zernio-sdk/models/create_comment_automation200_response_automation.rb +11 -1
  21. data/lib/zernio-sdk/models/create_comment_automation_request.rb +12 -1
  22. data/lib/zernio-sdk/models/get_comment_automation200_response_automation.rb +11 -1
  23. data/lib/zernio-sdk/models/list_comment_automations200_response_automations_inner.rb +10 -1
  24. data/lib/zernio-sdk/models/send_inbox_message_request.rb +1 -1
  25. data/lib/zernio-sdk/models/send_inbox_message_request_template.rb +1 -1
  26. data/lib/zernio-sdk/models/update_comment_automation200_response_automation.rb +11 -1
  27. data/lib/zernio-sdk/models/update_comment_automation_request.rb +11 -1
  28. data/lib/zernio-sdk/models/webhook_payload_reaction.rb +1 -1
  29. data/lib/zernio-sdk/models/webhook_payload_reaction_reaction_sender.rb +1 -1
  30. data/lib/zernio-sdk/version.rb +1 -1
  31. data/lib/zernio-sdk.rb +3 -0
  32. data/openapi.yaml +77 -9
  33. data/spec/api/messages_api_spec.rb +2 -2
  34. data/spec/models/comment_automation_template_element_buttons_inner_spec.rb +58 -0
  35. data/spec/models/comment_automation_template_element_spec.rb +54 -0
  36. data/spec/models/comment_automation_template_spec.rb +46 -0
  37. data/spec/models/create_comment_automation200_response_automation_spec.rb +6 -0
  38. data/spec/models/create_comment_automation_request_spec.rb +6 -0
  39. data/spec/models/get_comment_automation200_response_automation_spec.rb +6 -0
  40. data/spec/models/list_comment_automations200_response_automations_inner_spec.rb +6 -0
  41. data/spec/models/update_comment_automation200_response_automation_spec.rb +6 -0
  42. data/spec/models/update_comment_automation_request_spec.rb +6 -0
  43. data/zernio-sdk-0.0.688.gem +0 -0
  44. metadata +1584 -1572
  45. data/zernio-sdk-0.0.686.gem +0 -0
@@ -45,6 +45,8 @@ module Zernio
45
45
  # Inline DM buttons (up to 3). Omitted when none are set.
46
46
  attr_accessor :buttons
47
47
 
48
+ attr_accessor :template
49
+
48
50
  attr_accessor :comment_reply
49
51
 
50
52
  # Alternate DM texts rotated at random with dmMessage. Omitted when none.
@@ -109,6 +111,7 @@ module Zernio
109
111
  :'typo_tolerance' => :'typoTolerance',
110
112
  :'dm_message' => :'dmMessage',
111
113
  :'buttons' => :'buttons',
114
+ :'template' => :'template',
112
115
  :'comment_reply' => :'commentReply',
113
116
  :'dm_message_variations' => :'dmMessageVariations',
114
117
  :'comment_reply_variations' => :'commentReplyVariations',
@@ -148,6 +151,7 @@ module Zernio
148
151
  :'typo_tolerance' => :'Boolean',
149
152
  :'dm_message' => :'String',
150
153
  :'buttons' => :'Array<DmButton>',
154
+ :'template' => :'CommentAutomationTemplate',
151
155
  :'comment_reply' => :'String',
152
156
  :'dm_message_variations' => :'Array<String>',
153
157
  :'comment_reply_variations' => :'Array<String>',
@@ -241,6 +245,10 @@ module Zernio
241
245
  end
242
246
  end
243
247
 
248
+ if attributes.key?(:'template')
249
+ self.template = attributes[:'template']
250
+ end
251
+
244
252
  if attributes.key?(:'comment_reply')
245
253
  self.comment_reply = attributes[:'comment_reply']
246
254
  end
@@ -355,6 +363,7 @@ module Zernio
355
363
  typo_tolerance == o.typo_tolerance &&
356
364
  dm_message == o.dm_message &&
357
365
  buttons == o.buttons &&
366
+ template == o.template &&
358
367
  comment_reply == o.comment_reply &&
359
368
  dm_message_variations == o.dm_message_variations &&
360
369
  comment_reply_variations == o.comment_reply_variations &&
@@ -376,7 +385,7 @@ module Zernio
376
385
  # Calculates hash code according to all attributes.
377
386
  # @return [Integer] Hash code
378
387
  def 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
388
+ [id, name, platform, trigger, account_id, platform_post_id, post_title, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, template, 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
380
389
  end
381
390
 
382
391
  # Builds the object from hash
@@ -39,7 +39,7 @@ module Zernio
39
39
  # Quick reply buttons. Mutually exclusive with buttons. Max 13 items.
40
40
  attr_accessor :quick_replies
41
41
 
42
- # Action buttons. Mutually exclusive with quickReplies. Max 3 items. WhatsApp: buttons always render as interactive reply buttons. Only `title` and `payload` are used — `type`, `url`, and `phone` are ignored (WhatsApp has no URL/phone button in this field; use the `interactive` field with `type: cta_url` for a link button). `payload` becomes the button reply ID delivered on the `message.received` webhook when the user taps. To send a simple reply-button message, provide `title` + `payload` and set `type: postback`, e.g. `{ \"type\": \"postback\", \"title\": \"Yes\", \"payload\": \"yes\" }`.
42
+ # Action buttons. Mutually exclusive with quickReplies. Max 3 items. Instagram / Facebook: also mutually exclusive with `template`. A Meta message carries one body shape, so sending both is a 400 rather than a silent drop of the buttons. WhatsApp: buttons always render as interactive reply buttons. Only `title` and `payload` are used — `type`, `url`, and `phone` are ignored (WhatsApp has no URL/phone button in this field; use the `interactive` field with `type: cta_url` for a link button). `payload` becomes the button reply ID delivered on the `message.received` webhook when the user taps. To send a simple reply-button message, provide `title` + `payload` and set `type: postback`, e.g. `{ \"type\": \"postback\", \"title\": \"Yes\", \"payload\": \"yes\" }`.
43
43
  attr_accessor :buttons
44
44
 
45
45
  attr_accessor :template
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- # Platform-dependent template payload. Ignored on Telegram. Instagram / Facebook: a generic template (carousel). Set `type: generic` and provide up to 10 `elements`, each with a `title` (required) and optional `subtitle`, `imageUrl`, and `buttons`. WhatsApp: sends an approved WhatsApp template message, the only message type WhatsApp accepts when the 24-hour customer-service window is closed. Provide exactly one element carrying the template reference: `{ \"elements\": [{ \"name\": \"order_update\", \"language\": \"en_US\", \"components\": [...] }] }` (`type` is ignored on WhatsApp). `components` is optional and is forwarded unchanged as the `template.components` array of Meta's Cloud API send payload; use it to fill body/header variables and button parameters, e.g. `[{ \"type\": \"body\", \"parameters\": [{ \"type\": \"text\", \"text\": \"John\" }] }]`. Templates with media headers (image, video, document) must include the header component with its media link here at send time. To send a template to a phone number with no existing conversation, or to have media headers filled in automatically from the template definition, use the create-conversation endpoint (POST /v1/inbox/conversations) instead.
17
+ # Platform-dependent template payload. Ignored on Telegram. Instagram / Facebook: a generic template (carousel). Set `type: generic` and provide up to 10 `elements`, each with a `title` (required) and optional `subtitle`, `imageUrl`, and `buttons`. Mutually exclusive with the top-level `buttons` field (sending both is a 400); put the card's buttons on its `elements` instead. WhatsApp: sends an approved WhatsApp template message, the only message type WhatsApp accepts when the 24-hour customer-service window is closed. Provide exactly one element carrying the template reference: `{ \"elements\": [{ \"name\": \"order_update\", \"language\": \"en_US\", \"components\": [...] }] }` (`type` is ignored on WhatsApp). `components` is optional and is forwarded unchanged as the `template.components` array of Meta's Cloud API send payload; use it to fill body/header variables and button parameters, e.g. `[{ \"type\": \"body\", \"parameters\": [{ \"type\": \"text\", \"text\": \"John\" }] }]`. Templates with media headers (image, video, document) must include the header component with its media link here at send time. To send a template to a phone number with no existing conversation, or to have media headers filled in automatically from the template definition, use the create-conversation endpoint (POST /v1/inbox/conversations) instead.
18
18
  class SendInboxMessageRequestTemplate < ApiModelBase
19
19
  # Template type. Required for Instagram/Facebook generic templates; ignored on WhatsApp.
20
20
  attr_accessor :type
@@ -35,6 +35,8 @@ module Zernio
35
35
  # Inline DM buttons (up to 3). Omitted when none are set.
36
36
  attr_accessor :buttons
37
37
 
38
+ attr_accessor :template
39
+
38
40
  attr_accessor :comment_reply
39
41
 
40
42
  # Alternate DM texts rotated at random with dmMessage. Omitted when none.
@@ -84,6 +86,7 @@ module Zernio
84
86
  :'typo_tolerance' => :'typoTolerance',
85
87
  :'dm_message' => :'dmMessage',
86
88
  :'buttons' => :'buttons',
89
+ :'template' => :'template',
87
90
  :'comment_reply' => :'commentReply',
88
91
  :'dm_message_variations' => :'dmMessageVariations',
89
92
  :'comment_reply_variations' => :'commentReplyVariations',
@@ -115,6 +118,7 @@ module Zernio
115
118
  :'typo_tolerance' => :'Boolean',
116
119
  :'dm_message' => :'String',
117
120
  :'buttons' => :'Array<DmButton>',
121
+ :'template' => :'CommentAutomationTemplate',
118
122
  :'comment_reply' => :'String',
119
123
  :'dm_message_variations' => :'Array<String>',
120
124
  :'comment_reply_variations' => :'Array<String>',
@@ -128,6 +132,7 @@ module Zernio
128
132
  # List of attributes with nullable: true
129
133
  def self.openapi_nullable
130
134
  Set.new([
135
+ :'template',
131
136
  ])
132
137
  end
133
138
 
@@ -185,6 +190,10 @@ module Zernio
185
190
  end
186
191
  end
187
192
 
193
+ if attributes.key?(:'template')
194
+ self.template = attributes[:'template']
195
+ end
196
+
188
197
  if attributes.key?(:'comment_reply')
189
198
  self.comment_reply = attributes[:'comment_reply']
190
199
  end
@@ -258,6 +267,7 @@ module Zernio
258
267
  typo_tolerance == o.typo_tolerance &&
259
268
  dm_message == o.dm_message &&
260
269
  buttons == o.buttons &&
270
+ template == o.template &&
261
271
  comment_reply == o.comment_reply &&
262
272
  dm_message_variations == o.dm_message_variations &&
263
273
  comment_reply_variations == o.comment_reply_variations &&
@@ -276,7 +286,7 @@ module Zernio
276
286
  # Calculates hash code according to all attributes.
277
287
  # @return [Integer] Hash code
278
288
  def hash
279
- [id, name, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, comment_reply, dm_message_variations, comment_reply_variations, audience, follow_gate, is_active, updated_at].hash
289
+ [id, name, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, template, comment_reply, dm_message_variations, comment_reply_variations, audience, follow_gate, is_active, updated_at].hash
280
290
  end
281
291
 
282
292
  # Builds the object from hash
@@ -36,6 +36,8 @@ module Zernio
36
36
  # Inline DM buttons (1-3). Pass [] to clear all buttons.
37
37
  attr_accessor :buttons
38
38
 
39
+ attr_accessor :template
40
+
39
41
  attr_accessor :comment_reply
40
42
 
41
43
  # Alternate DM texts for random rotation (see create). Pass [] to clear.
@@ -95,6 +97,7 @@ module Zernio
95
97
  :'typo_tolerance' => :'typoTolerance',
96
98
  :'dm_message' => :'dmMessage',
97
99
  :'buttons' => :'buttons',
100
+ :'template' => :'template',
98
101
  :'comment_reply' => :'commentReply',
99
102
  :'dm_message_variations' => :'dmMessageVariations',
100
103
  :'comment_reply_variations' => :'commentReplyVariations',
@@ -129,6 +132,7 @@ module Zernio
129
132
  :'typo_tolerance' => :'Boolean',
130
133
  :'dm_message' => :'String',
131
134
  :'buttons' => :'Array<DmButton>',
135
+ :'template' => :'CommentAutomationTemplate',
132
136
  :'comment_reply' => :'String',
133
137
  :'dm_message_variations' => :'Array<String>',
134
138
  :'comment_reply_variations' => :'Array<String>',
@@ -145,6 +149,7 @@ module Zernio
145
149
  # List of attributes with nullable: true
146
150
  def self.openapi_nullable
147
151
  Set.new([
152
+ :'template',
148
153
  ])
149
154
  end
150
155
 
@@ -202,6 +207,10 @@ module Zernio
202
207
  end
203
208
  end
204
209
 
210
+ if attributes.key?(:'template')
211
+ self.template = attributes[:'template']
212
+ end
213
+
205
214
  if attributes.key?(:'comment_reply')
206
215
  self.comment_reply = attributes[:'comment_reply']
207
216
  end
@@ -412,6 +421,7 @@ module Zernio
412
421
  typo_tolerance == o.typo_tolerance &&
413
422
  dm_message == o.dm_message &&
414
423
  buttons == o.buttons &&
424
+ template == o.template &&
415
425
  comment_reply == o.comment_reply &&
416
426
  dm_message_variations == o.dm_message_variations &&
417
427
  comment_reply_variations == o.comment_reply_variations &&
@@ -433,7 +443,7 @@ module Zernio
433
443
  # Calculates hash code according to all attributes.
434
444
  # @return [Integer] Hash code
435
445
  def hash
436
- [name, trigger, 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].hash
446
+ [name, trigger, keywords, match_mode, exclude_keywords, typo_tolerance, dm_message, buttons, template, comment_reply, dm_message_variations, comment_reply_variations, link_tracking, click_tag, dm_delay_seconds, comment_reply_delay_seconds, audience, follow_gate, is_active].hash
437
447
  end
438
448
 
439
449
  # Builds the object from hash
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- # Webhook payload for reaction received events (WhatsApp, Telegram)
17
+ # Webhook payload for reaction received events (WhatsApp, Telegram, Slack, Instagram, Facebook Messenger)
18
18
  class WebhookPayloadReaction < ApiModelBase
19
19
  # Stable webhook event ID
20
20
  attr_accessor :id
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- # The participant who added or removed the reaction.
17
+ # Whoever added or removed the reaction. Usually the participant, but on Slack, Instagram and Facebook Messenger it is the business own platform id when the reaction was made from the native app: compare it with conversation.participantId.
18
18
  class WebhookPayloadReactionReactionSender < ApiModelBase
19
19
  attr_accessor :id
20
20
 
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.686'
14
+ VERSION = '0.0.688'
15
15
  end
data/lib/zernio-sdk.rb CHANGED
@@ -134,6 +134,9 @@ require 'zernio-sdk/models/check_verification200_response'
134
134
  require 'zernio-sdk/models/check_verification_request'
135
135
  require 'zernio-sdk/models/comment_automation_audience'
136
136
  require 'zernio-sdk/models/comment_automation_follow_gate'
137
+ require 'zernio-sdk/models/comment_automation_template'
138
+ require 'zernio-sdk/models/comment_automation_template_element'
139
+ require 'zernio-sdk/models/comment_automation_template_element_buttons_inner'
137
140
  require 'zernio-sdk/models/complete_google_business_verification_request'
138
141
  require 'zernio-sdk/models/complete_telegram_connect200_response'
139
142
  require 'zernio-sdk/models/complete_whats_app_phone_selection200_response'
data/openapi.yaml CHANGED
@@ -158,7 +158,7 @@ x-documentation:
158
158
  - `message.delivered` - An outgoing message was delivered (WhatsApp, Messenger)
159
159
  - `message.read` - An outgoing message was read by the recipient (WhatsApp, Messenger, Instagram)
160
160
  - `message.failed` - An outgoing message failed delivery (WhatsApp)
161
- - `reaction.received` - A participant added or removed an emoji reaction on a message (WhatsApp, Telegram)
161
+ - `reaction.received` - A participant added or removed an emoji reaction on a message (WhatsApp, Telegram, Slack, Instagram, Facebook Messenger)
162
162
  - `comment.received` - New comment received on a post
163
163
  - `review.new` - New review posted on a connected account (Google Business Profile)
164
164
  - `review.updated` - Review updated or reply added (Google Business Profile, or via reply API)
@@ -1461,6 +1461,44 @@ components:
1461
1461
  url: { type: string, format: uri, description: Target URL (required when type is url) }
1462
1462
  payload: { type: string, description: Postback payload delivered via the messaging_postbacks webhook (required when type is postback) }
1463
1463
  phone: { type: string, description: "Phone number, e.g. +14155551234 (required when type is phone; Facebook only)" }
1464
+ CommentAutomationTemplate:
1465
+ type: object
1466
+ description: |
1467
+ A Meta generic template (product card) sent as the automation's first DM.
1468
+ It REPLACES the plain `dmMessage` bubble: a Meta message carries one body
1469
+ shape, and a comment gets exactly one private reply, so the card and the
1470
+ text cannot both be delivered. Put your selling copy in `subtitle`.
1471
+ Mutually exclusive with `buttons` (sending both is a 400). Works on both
1472
+ the `comment` and `story_reply` triggers.
1473
+ Up to 10 elements, rendered as a horizontally swipeable carousel.
1474
+ Rendering confirmed on the Instagram and Messenger mobile apps.
1475
+ required: [type, elements]
1476
+ properties:
1477
+ type: { type: string, enum: [generic] }
1478
+ elements:
1479
+ type: array
1480
+ minItems: 1
1481
+ maxItems: 10
1482
+ items: { $ref: '#/components/schemas/CommentAutomationTemplateElement' }
1483
+ CommentAutomationTemplateElement:
1484
+ type: object
1485
+ required: [title]
1486
+ properties:
1487
+ title: { type: string, maxLength: 80, description: 'Card headline (80 chars max). Also used as the Inbox preview for the sent DM.' }
1488
+ subtitle: { type: string, maxLength: 80, description: 'Card description, e.g. the price or a short pitch (80 chars max).' }
1489
+ imageUrl: { type: string, format: uri, description: 'Publicly reachable http(s) image rendered large above the card.' }
1490
+ buttons:
1491
+ type: array
1492
+ maxItems: 3
1493
+ description: 'Up to 3 card buttons. A generic template has NO phone button, on either platform. `url` buttons are click-tracked when linkTracking is on.'
1494
+ items:
1495
+ type: object
1496
+ required: [type, title]
1497
+ properties:
1498
+ type: { type: string, enum: [url, postback] }
1499
+ title: { type: string, maxLength: 20 }
1500
+ url: { type: string, format: uri, description: 'Target URL (required when type is url)' }
1501
+ payload: { type: string, description: 'Postback payload delivered via the messaging_postbacks webhook (required when type is postback)' }
1464
1502
  WhatsAppTemplateButton:
1465
1503
  type: object
1466
1504
  required: [type]
@@ -3211,7 +3249,7 @@ components:
3211
3249
  # ────────────────────────────────────────────────────────────────────────
3212
3250
  WebhookPayloadReaction:
3213
3251
  type: object
3214
- description: Webhook payload for reaction received events (WhatsApp, Telegram)
3252
+ description: 'Webhook payload for reaction received events (WhatsApp, Telegram, Slack, Instagram, Facebook Messenger)'
3215
3253
  required: [id, event, reaction, conversation, account, timestamp]
3216
3254
  properties:
3217
3255
  id:
@@ -3241,7 +3279,7 @@ components:
3241
3279
  sender:
3242
3280
  type: object
3243
3281
  required: [id]
3244
- description: The participant who added or removed the reaction.
3282
+ description: 'Whoever added or removed the reaction. Usually the participant, but on Slack, Instagram and Facebook Messenger it is the business own platform id when the reaction was made from the native app: compare it with conversation.participantId.'
3245
3283
  properties:
3246
3284
  id:
3247
3285
  type: string
@@ -8317,11 +8355,15 @@ webhooks:
8317
8355
  summary: Reaction received event
8318
8356
  description: |
8319
8357
  Fired when a participant adds or removes an emoji reaction on a message.
8320
- Supported on WhatsApp and Telegram. Distinct from message.received so a
8321
- reaction (e.g. a thumbs-up) is not mistaken for an inbound message.
8322
- The `reaction.action` field is `added` or `removed`. On WhatsApp removals
8323
- the platform does not report which emoji was removed, so `reaction.emoji`
8324
- may be an empty string. Requires the Inbox add-on.
8358
+ Supported on WhatsApp, Telegram, Slack, Instagram and Facebook Messenger.
8359
+ Distinct from message.received so a reaction (e.g. a thumbs-up) is not
8360
+ mistaken for an inbound message.
8361
+ The `reaction.action` field is `added` or `removed`. On WhatsApp and Meta
8362
+ removals the platform does not report which emoji was removed, so
8363
+ `reaction.emoji` may be an empty string.
8364
+ Instagram and Facebook accounts connected before reactions shipped only
8365
+ emit this event after their webhook subscription is refreshed; reconnect
8366
+ the account if reactions never arrive. Requires the Inbox add-on.
8325
8367
  tags: [Webhook Events]
8326
8368
  requestBody:
8327
8369
  required: true
@@ -24358,6 +24400,10 @@ paths:
24358
24400
  description: |
24359
24401
  Action buttons. Mutually exclusive with quickReplies. Max 3 items.
24360
24402
 
24403
+ Instagram / Facebook: also mutually exclusive with `template`.
24404
+ A Meta message carries one body shape, so sending both is a 400
24405
+ rather than a silent drop of the buttons.
24406
+
24361
24407
  WhatsApp: buttons always render as interactive reply buttons.
24362
24408
  Only `title` and `payload` are used — `type`, `url`, and `phone`
24363
24409
  are ignored (WhatsApp has no URL/phone button in this field; use
@@ -24383,7 +24429,9 @@ paths:
24383
24429
 
24384
24430
  Instagram / Facebook: a generic template (carousel). Set `type: generic`
24385
24431
  and provide up to 10 `elements`, each with a `title` (required) and
24386
- optional `subtitle`, `imageUrl`, and `buttons`.
24432
+ optional `subtitle`, `imageUrl`, and `buttons`. Mutually exclusive with
24433
+ the top-level `buttons` field (sending both is a 400); put the card's
24434
+ buttons on its `elements` instead.
24387
24435
 
24388
24436
  WhatsApp: sends an approved WhatsApp template message, the only message
24389
24437
  type WhatsApp accepts when the 24-hour customer-service window is closed.
@@ -25078,6 +25126,8 @@ paths:
25078
25126
  Add an emoji reaction to a message. Platform support:
25079
25127
  - Telegram: Supports a subset of Unicode emoji reactions
25080
25128
  - WhatsApp: Supports any standard emoji (one reaction per message per sender)
25129
+ - Instagram and Facebook Messenger: Any standard emoji, subject to Meta's 24h messaging window
25130
+ - Slack: The emoji must have a Slack name (e.g. `:thumbsup:`); unnamed characters return 400
25081
25131
  - All others: Returns 400 (not supported)
25082
25132
  tags: [Messages]
25083
25133
  security: [{ bearerAuth: [] }]
@@ -25126,6 +25176,8 @@ paths:
25126
25176
  Remove a reaction from a message. Platform support:
25127
25177
  - Telegram: Send empty reaction array to clear
25128
25178
  - WhatsApp: Send empty emoji to remove
25179
+ - Instagram and Facebook Messenger: Sends Meta's `unreact` action; the emoji does not need to be repeated
25180
+ - Slack: Removes the reaction we previously sent on that message
25129
25181
  - All others: Returns 400 (not supported)
25130
25182
  tags: [Messages]
25131
25183
  security: [{ bearerAuth: [] }]
@@ -35865,6 +35917,8 @@ paths:
35865
35917
  type: array
35866
35918
  items: { $ref: '#/components/schemas/DmButton' }
35867
35919
  description: Inline DM buttons (up to 3). Omitted when none are set.
35920
+ template:
35921
+ $ref: '#/components/schemas/CommentAutomationTemplate'
35868
35922
  commentReply: { type: string }
35869
35923
  dmMessageVariations: { type: array, items: { type: string }, description: "Alternate DM texts rotated at random with dmMessage. Omitted when none." }
35870
35924
  commentReplyVariations: { type: array, items: { type: string }, description: "Alternate public replies rotated at random with commentReply. Omitted when none." }
@@ -35952,6 +36006,9 @@ paths:
35952
36006
  maxItems: 3
35953
36007
  items: { $ref: '#/components/schemas/DmButton' }
35954
36008
  description: "Optional inline DM buttons (1-3). Phone buttons are Facebook-only. Omit or pass [] for a plain-text DM."
36009
+ template:
36010
+ allOf: [{ $ref: '#/components/schemas/CommentAutomationTemplate' }]
36011
+ description: "Optional product card sent INSTEAD of the plain dmMessage bubble. Mutually exclusive with buttons. dmMessage stays required: it is what gets sent the moment the card is cleared."
35955
36012
  commentReply: { type: string, description: Optional public reply to the comment }
35956
36013
  dmMessageVariations:
35957
36014
  type: array
@@ -35995,6 +36052,8 @@ paths:
35995
36052
  type: array
35996
36053
  items: { $ref: '#/components/schemas/DmButton' }
35997
36054
  description: Inline DM buttons (up to 3). Omitted when none are set.
36055
+ template:
36056
+ $ref: '#/components/schemas/CommentAutomationTemplate'
35998
36057
  commentReply: { type: string }
35999
36058
  dmMessageVariations: { type: array, items: { type: string }, description: "Alternate DM texts rotated at random with dmMessage. Omitted when none." }
36000
36059
  commentReplyVariations: { type: array, items: { type: string }, description: "Alternate public replies rotated at random with commentReply. Omitted when none." }
@@ -36051,6 +36110,8 @@ paths:
36051
36110
  type: array
36052
36111
  items: { $ref: '#/components/schemas/DmButton' }
36053
36112
  description: Inline DM buttons (up to 3). Omitted when none are set.
36113
+ template:
36114
+ $ref: '#/components/schemas/CommentAutomationTemplate'
36054
36115
  commentReply: { type: string }
36055
36116
  dmMessageVariations: { type: array, items: { type: string }, description: "Alternate DM texts rotated at random with dmMessage. Omitted when none." }
36056
36117
  commentReplyVariations: { type: array, items: { type: string }, description: "Alternate public replies rotated at random with commentReply. Omitted when none." }
@@ -36116,6 +36177,11 @@ paths:
36116
36177
  maxItems: 3
36117
36178
  items: { $ref: '#/components/schemas/DmButton' }
36118
36179
  description: "Inline DM buttons (1-3). Pass [] to clear all buttons."
36180
+ template:
36181
+ oneOf:
36182
+ - $ref: '#/components/schemas/CommentAutomationTemplate'
36183
+ - type: 'null'
36184
+ description: "Product card sent instead of the plain dmMessage bubble. Pass null to clear it and fall back to dmMessage. Mutually exclusive with buttons, including with the buttons already stored on the automation."
36119
36185
  commentReply: { type: string }
36120
36186
  dmMessageVariations:
36121
36187
  type: array
@@ -36157,6 +36223,8 @@ paths:
36157
36223
  type: array
36158
36224
  items: { $ref: '#/components/schemas/DmButton' }
36159
36225
  description: Inline DM buttons (up to 3). Omitted when none are set.
36226
+ template:
36227
+ $ref: '#/components/schemas/CommentAutomationTemplate'
36160
36228
  commentReply: { type: string }
36161
36229
  dmMessageVariations: { type: array, items: { type: string }, description: "Alternate DM texts rotated at random with dmMessage. Omitted when none." }
36162
36230
  commentReplyVariations: { type: array, items: { type: string }, description: "Alternate public replies rotated at random with commentReply. Omitted when none." }
@@ -34,7 +34,7 @@ describe 'MessagesApi' do
34
34
 
35
35
  # unit tests for add_message_reaction
36
36
  # Add reaction
37
- # Add an emoji reaction to a message. Platform support: - Telegram: Supports a subset of Unicode emoji reactions - WhatsApp: Supports any standard emoji (one reaction per message per sender) - All others: Returns 400 (not supported)
37
+ # Add an emoji reaction to a message. Platform support: - Telegram: Supports a subset of Unicode emoji reactions - WhatsApp: Supports any standard emoji (one reaction per message per sender) - Instagram and Facebook Messenger: Any standard emoji, subject to Meta&#39;s 24h messaging window - Slack: The emoji must have a Slack name (e.g. &#x60;:thumbsup:&#x60;); unnamed characters return 400 - All others: Returns 400 (not supported)
38
38
  # @param conversation_id The conversation ID
39
39
  # @param message_id The platform message ID to react to
40
40
  # @param add_message_reaction_request
@@ -148,7 +148,7 @@ describe 'MessagesApi' do
148
148
 
149
149
  # unit tests for remove_message_reaction
150
150
  # Remove reaction
151
- # Remove a reaction from a message. Platform support: - Telegram: Send empty reaction array to clear - WhatsApp: Send empty emoji to remove - All others: Returns 400 (not supported)
151
+ # Remove a reaction from a message. Platform support: - Telegram: Send empty reaction array to clear - WhatsApp: Send empty emoji to remove - Instagram and Facebook Messenger: Sends Meta&#39;s &#x60;unreact&#x60; action; the emoji does not need to be repeated - Slack: Removes the reaction we previously sent on that message - All others: Returns 400 (not supported)
152
152
  # @param conversation_id The conversation ID
153
153
  # @param message_id The platform message ID
154
154
  # @param account_id Social account ID
@@ -0,0 +1,58 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
5
+
6
+ The version of the OpenAPI document: 1.0.4
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+ require 'date'
16
+
17
+ # Unit tests for Zernio::CommentAutomationTemplateElementButtonsInner
18
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
+ # Please update as you see appropriate
20
+ describe Zernio::CommentAutomationTemplateElementButtonsInner do
21
+ #let(:instance) { Zernio::CommentAutomationTemplateElementButtonsInner.new }
22
+
23
+ describe 'test an instance of CommentAutomationTemplateElementButtonsInner' do
24
+ it 'should create an instance of CommentAutomationTemplateElementButtonsInner' do
25
+ # uncomment below to test the instance creation
26
+ #expect(instance).to be_instance_of(Zernio::CommentAutomationTemplateElementButtonsInner)
27
+ end
28
+ end
29
+
30
+ describe 'test attribute "type"' do
31
+ it 'should work' do
32
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
33
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["url", "postback"])
34
+ # validator.allowable_values.each do |value|
35
+ # expect { instance.type = value }.not_to raise_error
36
+ # end
37
+ end
38
+ end
39
+
40
+ describe 'test attribute "title"' do
41
+ it 'should work' do
42
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
43
+ end
44
+ end
45
+
46
+ describe 'test attribute "url"' do
47
+ it 'should work' do
48
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
49
+ end
50
+ end
51
+
52
+ describe 'test attribute "payload"' do
53
+ it 'should work' do
54
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
55
+ end
56
+ end
57
+
58
+ end
@@ -0,0 +1,54 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
5
+
6
+ The version of the OpenAPI document: 1.0.4
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+ require 'date'
16
+
17
+ # Unit tests for Zernio::CommentAutomationTemplateElement
18
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
+ # Please update as you see appropriate
20
+ describe Zernio::CommentAutomationTemplateElement do
21
+ #let(:instance) { Zernio::CommentAutomationTemplateElement.new }
22
+
23
+ describe 'test an instance of CommentAutomationTemplateElement' do
24
+ it 'should create an instance of CommentAutomationTemplateElement' do
25
+ # uncomment below to test the instance creation
26
+ #expect(instance).to be_instance_of(Zernio::CommentAutomationTemplateElement)
27
+ end
28
+ end
29
+
30
+ describe 'test attribute "title"' do
31
+ it 'should work' do
32
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
33
+ end
34
+ end
35
+
36
+ describe 'test attribute "subtitle"' do
37
+ it 'should work' do
38
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
39
+ end
40
+ end
41
+
42
+ describe 'test attribute "image_url"' do
43
+ it 'should work' do
44
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
45
+ end
46
+ end
47
+
48
+ describe 'test attribute "buttons"' do
49
+ it 'should work' do
50
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,46 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
5
+
6
+ The version of the OpenAPI document: 1.0.4
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+ require 'date'
16
+
17
+ # Unit tests for Zernio::CommentAutomationTemplate
18
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
+ # Please update as you see appropriate
20
+ describe Zernio::CommentAutomationTemplate do
21
+ #let(:instance) { Zernio::CommentAutomationTemplate.new }
22
+
23
+ describe 'test an instance of CommentAutomationTemplate' do
24
+ it 'should create an instance of CommentAutomationTemplate' do
25
+ # uncomment below to test the instance creation
26
+ #expect(instance).to be_instance_of(Zernio::CommentAutomationTemplate)
27
+ end
28
+ end
29
+
30
+ describe 'test attribute "type"' do
31
+ it 'should work' do
32
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
33
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["generic"])
34
+ # validator.allowable_values.each do |value|
35
+ # expect { instance.type = value }.not_to raise_error
36
+ # end
37
+ end
38
+ end
39
+
40
+ describe 'test attribute "elements"' do
41
+ it 'should work' do
42
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
43
+ end
44
+ end
45
+
46
+ end
@@ -101,6 +101,12 @@ describe Zernio::CreateCommentAutomation200ResponseAutomation do
101
101
  end
102
102
  end
103
103
 
104
+ describe 'test attribute "template"' do
105
+ it 'should work' do
106
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
107
+ end
108
+ end
109
+
104
110
  describe 'test attribute "comment_reply"' do
105
111
  it 'should work' do
106
112
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
@@ -113,6 +113,12 @@ describe Zernio::CreateCommentAutomationRequest do
113
113
  end
114
114
  end
115
115
 
116
+ describe 'test attribute "template"' do
117
+ it 'should work' do
118
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
119
+ end
120
+ end
121
+
116
122
  describe 'test attribute "comment_reply"' do
117
123
  it 'should work' do
118
124
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
@@ -119,6 +119,12 @@ describe Zernio::GetCommentAutomation200ResponseAutomation do
119
119
  end
120
120
  end
121
121
 
122
+ describe 'test attribute "template"' do
123
+ it 'should work' do
124
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
125
+ end
126
+ end
127
+
122
128
  describe 'test attribute "comment_reply"' do
123
129
  it 'should work' do
124
130
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/