late-sdk 0.0.772 → 0.0.774

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a624e7747a9cc05325e7b597a2832f12bf29df06dc60df2b0683bfe6e6d6e4c4
4
- data.tar.gz: 72fc9d4ccc9fb86df390dfe3b1073c079deb91d3f3e8d003fe7cf4606ca44f22
3
+ metadata.gz: f73bfd6aa43d9405a8c2bc69edc5bfdd14271747fb106fa12d9be80411318786
4
+ data.tar.gz: 515d5498446a1002c7036e535b9b9101c7c58d07f1d2e0a3503c61e919667f15
5
5
  SHA512:
6
- metadata.gz: 1d7064ca8eb30b6fc42471286636fb6ed945201e4c9fe58b1fce8f7341a56181e12d01b8bda9cc4dc3ec70fbc0cc243a6ed0fb6e7277e7472bd770684b977e8d
7
- data.tar.gz: c1f4d33a4abb18a7c1f73f11186f74437a1212be6b73f0cfd8852da23e4b7c5e51203c9830cd4550da55b1e45bc38bcabf680962c0329ec24869e70f24fba8da
6
+ metadata.gz: 7aac3eeb4adacb99189fac8c66a389fc5a4f85dfcea44a1bbe1e813c0ad39e7762fb4a7578730bd6e778a2a9772eefea29f2d7fca82bf2d1e8e5e6c9e8f37f4a
7
+ data.tar.gz: 442cf699d5585b8d768313c2feb93e2255db829f77ac1210fc9d974b0b9855d8808d89b6ba0999c6e4ed6f97e5b66b2ce0d8c49aee2bbbed5836730a94749aa2
@@ -30,7 +30,8 @@
30
30
  | **sent_at** | **Time** | Original send time for outgoing messages (used for Messenger watermark queries). | [optional] |
31
31
  | **delivery_error** | [**GetInboxConversationMessages200ResponseMessagesInnerDeliveryError**](GetInboxConversationMessages200ResponseMessagesInnerDeliveryError.md) | | [optional] |
32
32
  | **reactions** | [**Array<GetInboxConversationMessages200ResponseMessagesInnerReactionsInner>**](GetInboxConversationMessages200ResponseMessagesInnerReactionsInner.md) | Emoji reactions on this message (WhatsApp / Telegram). At most one per party in a 1:1 thread. | [optional] |
33
- | **metadata** | **Hash<String, Object>** | Platform-specific extras. Free-form, but commonly includes: `quotedMessageId` (platformMessageId this message replies to), `waInteractive` (a compact descriptor of WhatsApp interactive content sent: buttons / list / cta_url / flow / location_request), and for inbound interactive taps `interactiveType` / `interactiveId`. | [optional] |
33
+ | **metadata** | **Hash<String, Object>** | Platform-specific extras. Free-form, but commonly includes: `quotedMessageId` (platformMessageId this message replies to), `waInteractive` (a compact descriptor of WhatsApp interactive content sent: buttons / list / cta_url / flow / location_request), and for inbound interactive taps `interactiveType` / `interactiveId`. It can also carry `source` (`whatsapp_business_app` / `coexistence_history` on a WhatsApp Coexistence number, `bulk-api` on a POST /v1/whatsapp/bulk send), which is where the message reached us from rather than who produced it: read `sentVia` for that. | [optional] |
34
+ | **sent_via** | **String** | Which Zernio surface produced this outgoing message: `human` (an operator in the Zernio inbox), `api` (a call to this API), `broadcast`, `sequence`, `workflow`, `comment_automation`, or `bulk-api` (POST /v1/whatsapp/bulk). Same vocabulary as the `source` filter on the inbox analytics endpoints. Always present, and `null` whenever the lineage is unknown: every incoming message, any outgoing message sent from the platform's own app, and every message stored before this field shipped (2026-08). Existing messages are NOT backfilled, so treat `null` as \"unknown\", never as \"sent by a human\". | [optional] |
34
35
 
35
36
  ## Example
36
37
 
@@ -64,7 +65,8 @@ instance = Zernio::GetInboxConversationMessages200ResponseMessagesInner.new(
64
65
  sent_at: null,
65
66
  delivery_error: null,
66
67
  reactions: null,
67
- metadata: null
68
+ metadata: null,
69
+ sent_via: null
68
70
  )
69
71
  ```
70
72
 
@@ -14,6 +14,7 @@
14
14
  | **sender** | [**WebhookPayloadMessageMessageSender**](WebhookPayloadMessageMessageSender.md) | | |
15
15
  | **sent_at** | **Time** | When the message was sent, as reported by the platform and passed through unmodified. Full ISO 8601 date-time: Instagram and Facebook carry millisecond precision, while some platforms (for example WhatsApp and Telegram) report whole seconds. Use this field as the chronological ordering key. If two messages share the same value, fetch the conversation messages with sortOrder=desc for the deterministic order. | |
16
16
  | **is_read** | **Boolean** | | |
17
+ | **sent_via** | **String** | Which Zernio surface produced the message. Always present and always `null` on this event, since nobody on our side produced an inbound message; it is only informative on `message.sent`, which documents the vocabulary. | [optional] |
17
18
 
18
19
  ## Example
19
20
 
@@ -30,7 +31,8 @@ instance = Zernio::WebhookPayloadMessageMessage.new(
30
31
  attachments: null,
31
32
  sender: null,
32
33
  sent_at: null,
33
- is_read: null
34
+ is_read: null,
35
+ sent_via: null
34
36
  )
35
37
  ```
36
38
 
@@ -14,7 +14,8 @@
14
14
  | **sender** | [**WebhookPayloadMessageSentMessageSender**](WebhookPayloadMessageSentMessageSender.md) | | |
15
15
  | **sent_at** | **Time** | When the message was sent, as reported by the platform and passed through unmodified. Full ISO 8601 date-time: Instagram and Facebook carry millisecond precision, while some platforms (for example WhatsApp and Telegram) report whole seconds. Use this field as the chronological ordering key. If two messages share the same value, fetch the conversation messages with sortOrder=desc for the deterministic order. | |
16
16
  | **is_read** | **Boolean** | | |
17
- | **source** | **String** | WhatsApp send origin. whatsapp_business_app when sent from the WhatsApp Business phone app on a Coexistence number; cloud_api when sent through Zernio (dashboard, API, or broadcasts). Absent on non-WhatsApp platforms. This is not the inbox metadata.source lineage field. | [optional] |
17
+ | **source** | **String** | WhatsApp send origin. whatsapp_business_app when sent from the WhatsApp Business phone app on a Coexistence number; cloud_api when sent through Zernio (dashboard, API, or broadcasts). Absent on non-WhatsApp platforms. Says where WhatsApp saw the send come from, not which Zernio surface produced it: read sentVia for that. | [optional] |
18
+ | **sent_via** | **String** | Which Zernio surface produced this message: `human` (an operator in the Zernio inbox), `api` (a call to this API), `broadcast`, `sequence`, `workflow`, `comment_automation`, or `bulk-api` (POST /v1/whatsapp/bulk). Same vocabulary as the `source` filter on the inbox analytics endpoints, and the same value a later GET on this message returns. Always present, and `null` whenever the lineage is unknown: a message sent from the platform's own app, and every message stored before this field shipped (2026-08). Existing messages are NOT backfilled, so treat `null` as \"unknown\", never as \"sent by a human\". | [optional] |
18
19
 
19
20
  ## Example
20
21
 
@@ -32,7 +33,8 @@ instance = Zernio::WebhookPayloadMessageSentMessage.new(
32
33
  sender: null,
33
34
  sent_at: null,
34
35
  is_read: null,
35
- source: null
36
+ source: null,
37
+ sent_via: null
36
38
  )
37
39
  ```
38
40
 
@@ -79,9 +79,12 @@ module Zernio
79
79
  # Emoji reactions on this message (WhatsApp / Telegram). At most one per party in a 1:1 thread.
80
80
  attr_accessor :reactions
81
81
 
82
- # Platform-specific extras. Free-form, but commonly includes: `quotedMessageId` (platformMessageId this message replies to), `waInteractive` (a compact descriptor of WhatsApp interactive content sent: buttons / list / cta_url / flow / location_request), and for inbound interactive taps `interactiveType` / `interactiveId`.
82
+ # Platform-specific extras. Free-form, but commonly includes: `quotedMessageId` (platformMessageId this message replies to), `waInteractive` (a compact descriptor of WhatsApp interactive content sent: buttons / list / cta_url / flow / location_request), and for inbound interactive taps `interactiveType` / `interactiveId`. It can also carry `source` (`whatsapp_business_app` / `coexistence_history` on a WhatsApp Coexistence number, `bulk-api` on a POST /v1/whatsapp/bulk send), which is where the message reached us from rather than who produced it: read `sentVia` for that.
83
83
  attr_accessor :metadata
84
84
 
85
+ # Which Zernio surface produced this outgoing message: `human` (an operator in the Zernio inbox), `api` (a call to this API), `broadcast`, `sequence`, `workflow`, `comment_automation`, or `bulk-api` (POST /v1/whatsapp/bulk). Same vocabulary as the `source` filter on the inbox analytics endpoints. Always present, and `null` whenever the lineage is unknown: every incoming message, any outgoing message sent from the platform's own app, and every message stored before this field shipped (2026-08). Existing messages are NOT backfilled, so treat `null` as \"unknown\", never as \"sent by a human\".
86
+ attr_accessor :sent_via
87
+
85
88
  class EnumAttributeValidator
86
89
  attr_reader :datatype
87
90
  attr_reader :allowable_values
@@ -133,7 +136,8 @@ module Zernio
133
136
  :'sent_at' => :'sentAt',
134
137
  :'delivery_error' => :'deliveryError',
135
138
  :'reactions' => :'reactions',
136
- :'metadata' => :'metadata'
139
+ :'metadata' => :'metadata',
140
+ :'sent_via' => :'sentVia'
137
141
  }
138
142
  end
139
143
 
@@ -176,7 +180,8 @@ module Zernio
176
180
  :'sent_at' => :'Time',
177
181
  :'delivery_error' => :'GetInboxConversationMessages200ResponseMessagesInnerDeliveryError',
178
182
  :'reactions' => :'Array<GetInboxConversationMessages200ResponseMessagesInnerReactionsInner>',
179
- :'metadata' => :'Hash<String, Object>'
183
+ :'metadata' => :'Hash<String, Object>',
184
+ :'sent_via' => :'String'
180
185
  }
181
186
  end
182
187
 
@@ -194,6 +199,7 @@ module Zernio
194
199
  :'delivered_at',
195
200
  :'read_at',
196
201
  :'sent_at',
202
+ :'sent_via'
197
203
  ])
198
204
  end
199
205
 
@@ -328,6 +334,10 @@ module Zernio
328
334
  self.metadata = value
329
335
  end
330
336
  end
337
+
338
+ if attributes.key?(:'sent_via')
339
+ self.sent_via = attributes[:'sent_via']
340
+ end
331
341
  end
332
342
 
333
343
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -348,6 +358,8 @@ module Zernio
348
358
  return false unless direction_validator.valid?(@direction)
349
359
  delivery_status_validator = EnumAttributeValidator.new('String', ["sent", "delivered", "read", "failed", "deleted"])
350
360
  return false unless delivery_status_validator.valid?(@delivery_status)
361
+ sent_via_validator = EnumAttributeValidator.new('String', ["human", "api", "broadcast", "sequence", "workflow", "comment_automation", "bulk-api"])
362
+ return false unless sent_via_validator.valid?(@sent_via)
351
363
  true
352
364
  end
353
365
 
@@ -381,6 +393,16 @@ module Zernio
381
393
  @delivery_status = delivery_status
382
394
  end
383
395
 
396
+ # Custom attribute writer method checking allowed values (enum).
397
+ # @param [Object] sent_via Object to be assigned
398
+ def sent_via=(sent_via)
399
+ validator = EnumAttributeValidator.new('String', ["human", "api", "broadcast", "sequence", "workflow", "comment_automation", "bulk-api"])
400
+ unless validator.valid?(sent_via)
401
+ fail ArgumentError, "invalid value for \"sent_via\", must be one of #{validator.allowable_values}."
402
+ end
403
+ @sent_via = sent_via
404
+ end
405
+
384
406
  # Checks equality by comparing each attribute.
385
407
  # @param [Object] Object to be compared
386
408
  def ==(o)
@@ -412,7 +434,8 @@ module Zernio
412
434
  sent_at == o.sent_at &&
413
435
  delivery_error == o.delivery_error &&
414
436
  reactions == o.reactions &&
415
- metadata == o.metadata
437
+ metadata == o.metadata &&
438
+ sent_via == o.sent_via
416
439
  end
417
440
 
418
441
  # @see the `==` method
@@ -424,7 +447,7 @@ module Zernio
424
447
  # Calculates hash code according to all attributes.
425
448
  # @return [Integer] Hash code
426
449
  def hash
427
- [id, conversation_id, account_id, platform, message, sender_id, sender_name, sender_verified_type, direction, created_at, attachments, subject, story_reply, is_story_mention, is_edited, edited_at, edit_count, edit_history, is_deleted, deleted_at, delivery_status, delivered_at, read_at, sent_at, delivery_error, reactions, metadata].hash
450
+ [id, conversation_id, account_id, platform, message, sender_id, sender_name, sender_verified_type, direction, created_at, attachments, subject, story_reply, is_story_mention, is_edited, edited_at, edit_count, edit_history, is_deleted, deleted_at, delivery_status, delivered_at, read_at, sent_at, delivery_error, reactions, metadata, sent_via].hash
428
451
  end
429
452
 
430
453
  # Builds the object from hash
@@ -40,6 +40,9 @@ module Zernio
40
40
 
41
41
  attr_accessor :is_read
42
42
 
43
+ # Which Zernio surface produced the message. Always present and always `null` on this event, since nobody on our side produced an inbound message; it is only informative on `message.sent`, which documents the vocabulary.
44
+ attr_accessor :sent_via
45
+
43
46
  class EnumAttributeValidator
44
47
  attr_reader :datatype
45
48
  attr_reader :allowable_values
@@ -74,7 +77,8 @@ module Zernio
74
77
  :'attachments' => :'attachments',
75
78
  :'sender' => :'sender',
76
79
  :'sent_at' => :'sentAt',
77
- :'is_read' => :'isRead'
80
+ :'is_read' => :'isRead',
81
+ :'sent_via' => :'sentVia'
78
82
  }
79
83
  end
80
84
 
@@ -100,7 +104,8 @@ module Zernio
100
104
  :'attachments' => :'Array<WebhookPayloadMessageMessageAttachmentsInner>',
101
105
  :'sender' => :'WebhookPayloadMessageMessageSender',
102
106
  :'sent_at' => :'Time',
103
- :'is_read' => :'Boolean'
107
+ :'is_read' => :'Boolean',
108
+ :'sent_via' => :'String'
104
109
  }
105
110
  end
106
111
 
@@ -108,6 +113,7 @@ module Zernio
108
113
  def self.openapi_nullable
109
114
  Set.new([
110
115
  :'text',
116
+ :'sent_via'
111
117
  ])
112
118
  end
113
119
 
@@ -188,6 +194,10 @@ module Zernio
188
194
  else
189
195
  self.is_read = nil
190
196
  end
197
+
198
+ if attributes.key?(:'sent_via')
199
+ self.sent_via = attributes[:'sent_via']
200
+ end
191
201
  end
192
202
 
193
203
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -251,6 +261,8 @@ module Zernio
251
261
  return false if @sender.nil?
252
262
  return false if @sent_at.nil?
253
263
  return false if @is_read.nil?
264
+ sent_via_validator = EnumAttributeValidator.new('String', ["human", "api", "broadcast", "sequence", "workflow", "comment_automation", "bulk-api"])
265
+ return false unless sent_via_validator.valid?(@sent_via)
254
266
  true
255
267
  end
256
268
 
@@ -344,6 +356,16 @@ module Zernio
344
356
  @is_read = is_read
345
357
  end
346
358
 
359
+ # Custom attribute writer method checking allowed values (enum).
360
+ # @param [Object] sent_via Object to be assigned
361
+ def sent_via=(sent_via)
362
+ validator = EnumAttributeValidator.new('String', ["human", "api", "broadcast", "sequence", "workflow", "comment_automation", "bulk-api"])
363
+ unless validator.valid?(sent_via)
364
+ fail ArgumentError, "invalid value for \"sent_via\", must be one of #{validator.allowable_values}."
365
+ end
366
+ @sent_via = sent_via
367
+ end
368
+
347
369
  # Checks equality by comparing each attribute.
348
370
  # @param [Object] Object to be compared
349
371
  def ==(o)
@@ -358,7 +380,8 @@ module Zernio
358
380
  attachments == o.attachments &&
359
381
  sender == o.sender &&
360
382
  sent_at == o.sent_at &&
361
- is_read == o.is_read
383
+ is_read == o.is_read &&
384
+ sent_via == o.sent_via
362
385
  end
363
386
 
364
387
  # @see the `==` method
@@ -370,7 +393,7 @@ module Zernio
370
393
  # Calculates hash code according to all attributes.
371
394
  # @return [Integer] Hash code
372
395
  def hash
373
- [id, conversation_id, platform, platform_message_id, direction, text, attachments, sender, sent_at, is_read].hash
396
+ [id, conversation_id, platform, platform_message_id, direction, text, attachments, sender, sent_at, is_read, sent_via].hash
374
397
  end
375
398
 
376
399
  # Builds the object from hash
@@ -41,9 +41,12 @@ module Zernio
41
41
 
42
42
  attr_accessor :is_read
43
43
 
44
- # WhatsApp send origin. whatsapp_business_app when sent from the WhatsApp Business phone app on a Coexistence number; cloud_api when sent through Zernio (dashboard, API, or broadcasts). Absent on non-WhatsApp platforms. This is not the inbox metadata.source lineage field.
44
+ # WhatsApp send origin. whatsapp_business_app when sent from the WhatsApp Business phone app on a Coexistence number; cloud_api when sent through Zernio (dashboard, API, or broadcasts). Absent on non-WhatsApp platforms. Says where WhatsApp saw the send come from, not which Zernio surface produced it: read sentVia for that.
45
45
  attr_accessor :source
46
46
 
47
+ # Which Zernio surface produced this message: `human` (an operator in the Zernio inbox), `api` (a call to this API), `broadcast`, `sequence`, `workflow`, `comment_automation`, or `bulk-api` (POST /v1/whatsapp/bulk). Same vocabulary as the `source` filter on the inbox analytics endpoints, and the same value a later GET on this message returns. Always present, and `null` whenever the lineage is unknown: a message sent from the platform's own app, and every message stored before this field shipped (2026-08). Existing messages are NOT backfilled, so treat `null` as \"unknown\", never as \"sent by a human\".
48
+ attr_accessor :sent_via
49
+
47
50
  class EnumAttributeValidator
48
51
  attr_reader :datatype
49
52
  attr_reader :allowable_values
@@ -79,7 +82,8 @@ module Zernio
79
82
  :'sender' => :'sender',
80
83
  :'sent_at' => :'sentAt',
81
84
  :'is_read' => :'isRead',
82
- :'source' => :'source'
85
+ :'source' => :'source',
86
+ :'sent_via' => :'sentVia'
83
87
  }
84
88
  end
85
89
 
@@ -106,7 +110,8 @@ module Zernio
106
110
  :'sender' => :'WebhookPayloadMessageSentMessageSender',
107
111
  :'sent_at' => :'Time',
108
112
  :'is_read' => :'Boolean',
109
- :'source' => :'String'
113
+ :'source' => :'String',
114
+ :'sent_via' => :'String'
110
115
  }
111
116
  end
112
117
 
@@ -114,6 +119,7 @@ module Zernio
114
119
  def self.openapi_nullable
115
120
  Set.new([
116
121
  :'text',
122
+ :'sent_via'
117
123
  ])
118
124
  end
119
125
 
@@ -198,6 +204,10 @@ module Zernio
198
204
  if attributes.key?(:'source')
199
205
  self.source = attributes[:'source']
200
206
  end
207
+
208
+ if attributes.key?(:'sent_via')
209
+ self.sent_via = attributes[:'sent_via']
210
+ end
201
211
  end
202
212
 
203
213
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -263,6 +273,8 @@ module Zernio
263
273
  return false if @is_read.nil?
264
274
  source_validator = EnumAttributeValidator.new('String', ["whatsapp_business_app", "cloud_api"])
265
275
  return false unless source_validator.valid?(@source)
276
+ sent_via_validator = EnumAttributeValidator.new('String', ["human", "api", "broadcast", "sequence", "workflow", "comment_automation", "bulk-api"])
277
+ return false unless sent_via_validator.valid?(@sent_via)
266
278
  true
267
279
  end
268
280
 
@@ -366,6 +378,16 @@ module Zernio
366
378
  @source = source
367
379
  end
368
380
 
381
+ # Custom attribute writer method checking allowed values (enum).
382
+ # @param [Object] sent_via Object to be assigned
383
+ def sent_via=(sent_via)
384
+ validator = EnumAttributeValidator.new('String', ["human", "api", "broadcast", "sequence", "workflow", "comment_automation", "bulk-api"])
385
+ unless validator.valid?(sent_via)
386
+ fail ArgumentError, "invalid value for \"sent_via\", must be one of #{validator.allowable_values}."
387
+ end
388
+ @sent_via = sent_via
389
+ end
390
+
369
391
  # Checks equality by comparing each attribute.
370
392
  # @param [Object] Object to be compared
371
393
  def ==(o)
@@ -381,7 +403,8 @@ module Zernio
381
403
  sender == o.sender &&
382
404
  sent_at == o.sent_at &&
383
405
  is_read == o.is_read &&
384
- source == o.source
406
+ source == o.source &&
407
+ sent_via == o.sent_via
385
408
  end
386
409
 
387
410
  # @see the `==` method
@@ -393,7 +416,7 @@ module Zernio
393
416
  # Calculates hash code according to all attributes.
394
417
  # @return [Integer] Hash code
395
418
  def hash
396
- [id, conversation_id, platform, platform_message_id, direction, text, attachments, sender, sent_at, is_read, source].hash
419
+ [id, conversation_id, platform, platform_message_id, direction, text, attachments, sender, sent_at, is_read, source, sent_via].hash
397
420
  end
398
421
 
399
422
  # Builds the object from hash
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.772'
14
+ VERSION = '0.0.774'
15
15
  end
data/openapi.yaml CHANGED
@@ -3663,6 +3663,14 @@ components:
3663
3663
  description: 'When the message was sent, as reported by the platform and passed through unmodified. Full ISO 8601 date-time: Instagram and Facebook carry millisecond precision, while some platforms (for example WhatsApp and Telegram) report whole seconds. Use this field as the chronological ordering key. If two messages share the same value, fetch the conversation messages with sortOrder=desc for the deterministic order.'
3664
3664
  isRead:
3665
3665
  type: boolean
3666
+ sentVia:
3667
+ type: [string, "null"]
3668
+ enum: [human, api, broadcast, sequence, workflow, comment_automation, bulk-api, null]
3669
+ description: |
3670
+ Which Zernio surface produced the message. Always present and
3671
+ always `null` on this event, since nobody on our side produced an
3672
+ inbound message; it is only informative on `message.sent`, which
3673
+ documents the vocabulary.
3666
3674
  conversation:
3667
3675
  $ref: '#/components/schemas/InboxWebhookConversation'
3668
3676
  account:
@@ -4020,7 +4028,23 @@ components:
4020
4028
  source:
4021
4029
  type: string
4022
4030
  enum: [whatsapp_business_app, cloud_api]
4023
- description: 'WhatsApp send origin. whatsapp_business_app when sent from the WhatsApp Business phone app on a Coexistence number; cloud_api when sent through Zernio (dashboard, API, or broadcasts). Absent on non-WhatsApp platforms. This is not the inbox metadata.source lineage field.'
4031
+ description: 'WhatsApp send origin. whatsapp_business_app when sent from the WhatsApp Business phone app on a Coexistence number; cloud_api when sent through Zernio (dashboard, API, or broadcasts). Absent on non-WhatsApp platforms. Says where WhatsApp saw the send come from, not which Zernio surface produced it: read sentVia for that.'
4032
+ sentVia:
4033
+ type: [string, "null"]
4034
+ enum: [human, api, broadcast, sequence, workflow, comment_automation, bulk-api, null]
4035
+ description: |
4036
+ Which Zernio surface produced this message: `human` (an operator
4037
+ in the Zernio inbox), `api` (a call to this API), `broadcast`,
4038
+ `sequence`, `workflow`, `comment_automation`, or `bulk-api`
4039
+ (POST /v1/whatsapp/bulk). Same vocabulary as the `source` filter
4040
+ on the inbox analytics endpoints, and the same value a later
4041
+ GET on this message returns.
4042
+
4043
+ Always present, and `null` whenever the lineage is unknown: a
4044
+ message sent from the platform's own app, and every message
4045
+ stored before this field shipped (2026-08). Existing messages
4046
+ are NOT backfilled, so treat `null` as "unknown", never as
4047
+ "sent by a human".
4024
4048
  conversation:
4025
4049
  $ref: '#/components/schemas/InboxWebhookConversation'
4026
4050
  account:
@@ -26310,7 +26334,26 @@ paths:
26310
26334
  `waInteractive` (a compact descriptor of WhatsApp interactive
26311
26335
  content sent: buttons / list / cta_url / flow / location_request),
26312
26336
  and for inbound interactive taps `interactiveType` / `interactiveId`.
26337
+ It can also carry `source` (`whatsapp_business_app` /
26338
+ `coexistence_history` on a WhatsApp Coexistence number, `bulk-api` on
26339
+ a POST /v1/whatsapp/bulk send), which is where the message reached us
26340
+ from rather than who produced it: read `sentVia` for that.
26313
26341
  additionalProperties: true
26342
+ sentVia:
26343
+ type: [string, "null"]
26344
+ enum: [human, api, broadcast, sequence, workflow, comment_automation, bulk-api, null]
26345
+ description: |
26346
+ Which Zernio surface produced this outgoing message: `human` (an
26347
+ operator in the Zernio inbox), `api` (a call to this API),
26348
+ `broadcast`, `sequence`, `workflow`, `comment_automation`, or
26349
+ `bulk-api` (POST /v1/whatsapp/bulk). Same vocabulary as the `source`
26350
+ filter on the inbox analytics endpoints.
26351
+
26352
+ Always present, and `null` whenever the lineage is unknown: every
26353
+ incoming message, any outgoing message sent from the platform's own
26354
+ app, and every message stored before this field shipped
26355
+ (2026-08). Existing messages are NOT backfilled, so treat `null`
26356
+ as "unknown", never as "sent by a human".
26314
26357
  lastUpdated: { type: string, format: date-time }
26315
26358
  '400': { $ref: '#/components/responses/BadRequest' }
26316
26359
  '401': { $ref: '#/components/responses/Unauthorized' }
@@ -201,4 +201,14 @@ describe Zernio::GetInboxConversationMessages200ResponseMessagesInner do
201
201
  end
202
202
  end
203
203
 
204
+ describe 'test attribute "sent_via"' do
205
+ it 'should work' do
206
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
207
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["human", "api", "broadcast", "sequence", "workflow", "comment_automation", "bulk-api"])
208
+ # validator.allowable_values.each do |value|
209
+ # expect { instance.sent_via = value }.not_to raise_error
210
+ # end
211
+ end
212
+ end
213
+
204
214
  end
@@ -95,4 +95,14 @@ describe Zernio::WebhookPayloadMessageMessage do
95
95
  end
96
96
  end
97
97
 
98
+ describe 'test attribute "sent_via"' do
99
+ it 'should work' do
100
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
101
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["human", "api", "broadcast", "sequence", "workflow", "comment_automation", "bulk-api"])
102
+ # validator.allowable_values.each do |value|
103
+ # expect { instance.sent_via = value }.not_to raise_error
104
+ # end
105
+ end
106
+ end
107
+
98
108
  end
@@ -105,4 +105,14 @@ describe Zernio::WebhookPayloadMessageSentMessage do
105
105
  end
106
106
  end
107
107
 
108
+ describe 'test attribute "sent_via"' do
109
+ it 'should work' do
110
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
111
+ # validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["human", "api", "broadcast", "sequence", "workflow", "comment_automation", "bulk-api"])
112
+ # validator.allowable_values.each do |value|
113
+ # expect { instance.sent_via = value }.not_to raise_error
114
+ # end
115
+ end
116
+ end
117
+
108
118
  end
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: late-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.772
4
+ version: 0.0.774
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAPI-Generator
@@ -5464,7 +5464,7 @@ files:
5464
5464
  - spec/models/you_tube_video_retention_response_retention_curve_inner_spec.rb
5465
5465
  - spec/models/you_tube_video_retention_response_spec.rb
5466
5466
  - spec/spec_helper.rb
5467
- - zernio-sdk-0.0.772.gem
5467
+ - zernio-sdk-0.0.774.gem
5468
5468
  - zernio-sdk.gemspec
5469
5469
  homepage: https://openapi-generator.tech
5470
5470
  licenses:
Binary file