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 +4 -4
- data/docs/GetInboxConversationMessages200ResponseMessagesInner.md +4 -2
- data/docs/WebhookPayloadMessageMessage.md +3 -1
- data/docs/WebhookPayloadMessageSentMessage.md +4 -2
- data/lib/zernio-sdk/models/get_inbox_conversation_messages200_response_messages_inner.rb +28 -5
- data/lib/zernio-sdk/models/webhook_payload_message_message.rb +27 -4
- data/lib/zernio-sdk/models/webhook_payload_message_sent_message.rb +28 -5
- data/lib/zernio-sdk/version.rb +1 -1
- data/openapi.yaml +44 -1
- data/spec/models/get_inbox_conversation_messages200_response_messages_inner_spec.rb +10 -0
- data/spec/models/webhook_payload_message_message_spec.rb +10 -0
- data/spec/models/webhook_payload_message_sent_message_spec.rb +10 -0
- data/zernio-sdk-0.0.774.gem +0 -0
- metadata +2 -2
- data/zernio-sdk-0.0.772.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f73bfd6aa43d9405a8c2bc69edc5bfdd14271747fb106fa12d9be80411318786
|
|
4
|
+
data.tar.gz: 515d5498446a1002c7036e535b9b9101c7c58d07f1d2e0a3503c61e919667f15
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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.
|
|
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
|
data/lib/zernio-sdk/version.rb
CHANGED
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.
|
|
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.
|
|
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.
|
|
5467
|
+
- zernio-sdk-0.0.774.gem
|
|
5468
5468
|
- zernio-sdk.gemspec
|
|
5469
5469
|
homepage: https://openapi-generator.tech
|
|
5470
5470
|
licenses:
|
data/zernio-sdk-0.0.772.gem
DELETED
|
Binary file
|