sentdm 0.33.0 → 0.34.0
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/CHANGELOG.md +7 -0
- data/README.md +1 -1
- data/lib/sentdm/models/channel_event_payload.rb +16 -6
- data/lib/sentdm/models/conversation_messages_list.rb +100 -13
- data/lib/sentdm/models/inbound_message_event_payload.rb +70 -3
- data/lib/sentdm/models/me_retrieve_response.rb +21 -1
- data/lib/sentdm/models/message_event_payload.rb +23 -1
- data/lib/sentdm/models/message_retrieve_activities_response.rb +23 -1
- data/lib/sentdm/models/message_retrieve_status_response.rb +100 -13
- data/lib/sentdm/models/template_create_params.rb +11 -1
- data/lib/sentdm/models/webhook_create_params.rb +31 -1
- data/lib/sentdm/models/webhook_list_events_response.rb +176 -3
- data/lib/sentdm/models/webhook_update_params.rb +31 -1
- data/lib/sentdm/resources/me.rb +5 -0
- data/lib/sentdm/resources/templates.rb +3 -1
- data/lib/sentdm/resources/webhooks.rb +9 -3
- data/lib/sentdm/version.rb +1 -1
- data/rbi/sentdm/models/channel_event_payload.rbi +20 -8
- data/rbi/sentdm/models/conversation_messages_list.rbi +122 -19
- data/rbi/sentdm/models/inbound_message_event_payload.rbi +110 -2
- data/rbi/sentdm/models/me_retrieve_response.rbi +35 -0
- data/rbi/sentdm/models/message_event_payload.rbi +28 -0
- data/rbi/sentdm/models/message_retrieve_activities_response.rbi +26 -0
- data/rbi/sentdm/models/message_retrieve_status_response.rbi +122 -19
- data/rbi/sentdm/models/template_create_params.rbi +15 -0
- data/rbi/sentdm/models/webhook_create_params.rbi +61 -0
- data/rbi/sentdm/models/webhook_list_events_response.rbi +272 -3
- data/rbi/sentdm/models/webhook_update_params.rbi +61 -0
- data/rbi/sentdm/resources/me.rbi +5 -0
- data/rbi/sentdm/resources/templates.rbi +6 -0
- data/rbi/sentdm/resources/webhooks.rbi +15 -1
- data/sig/sentdm/models/channel_event_payload.rbs +5 -0
- data/sig/sentdm/models/conversation_messages_list.rbs +56 -8
- data/sig/sentdm/models/inbound_message_event_payload.rbs +37 -0
- data/sig/sentdm/models/me_retrieve_response.rbs +7 -0
- data/sig/sentdm/models/message_event_payload.rbs +10 -0
- data/sig/sentdm/models/message_retrieve_activities_response.rbs +10 -0
- data/sig/sentdm/models/message_retrieve_status_response.rbs +56 -8
- data/sig/sentdm/models/template_create_params.rbs +7 -0
- data/sig/sentdm/models/webhook_create_params.rbs +29 -0
- data/sig/sentdm/models/webhook_list_events_response.rbs +107 -0
- data/sig/sentdm/models/webhook_update_params.rbs +29 -0
- data/sig/sentdm/resources/templates.rbs +1 -0
- data/sig/sentdm/resources/webhooks.rbs +2 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8b4444164d11b8913195b89a66ba9d140e5edaca680199f80156774e39f3f893
|
|
4
|
+
data.tar.gz: 38b18a67c9dc58ed79f990686d0363fbab3138b66c9a2e3b20eb76ba0d4d4988
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bd38b5407cb704af0bf1cfecccb4f4bdcc2b5b173ac638d7c3f4c8e5a6039a019637d46114d6c082ebc420f7ad3532cfd128493f56d7bff51c62abc62cf34461
|
|
7
|
+
data.tar.gz: 3a79e6d405c70edc8e4479f28dc4955c0e0a3fbfaa59da458848c831e99650d90e87c672316609514fb9d5bd4d2b61d194d3f54a31d6c7ecac9340b12117e887
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.34.0](https://github.com/sentdm/sent-dm-ruby/compare/v0.33.0...v0.34.0) (2026-09-30)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **api:** sync OpenAPI spec from production ([d7d4ecf](https://github.com/sentdm/sent-dm-ruby/commit/d7d4ecf5dd378e69ee6f5148b816554ebbf1a6bf))
|
|
9
|
+
|
|
3
10
|
## [0.33.0](https://github.com/sentdm/sent-dm-ruby/compare/v0.32.0...v0.33.0) (2026-09-30)
|
|
4
11
|
|
|
5
12
|
|
data/README.md
CHANGED
|
@@ -61,14 +61,22 @@ module Sentdm
|
|
|
61
61
|
optional :number_type, String, nil?: true
|
|
62
62
|
|
|
63
63
|
# @!attribute reason
|
|
64
|
-
# Why the market reached this state,
|
|
65
|
-
#
|
|
66
|
-
#
|
|
67
|
-
# value to branch on.
|
|
64
|
+
# Why the market reached this state, as a sentence to show a person: the specific
|
|
65
|
+
# explanation when one was given (a correction explained, a campaign lapse),
|
|
66
|
+
# otherwise what reason_code means for this market. Not a value to branch on.
|
|
68
67
|
#
|
|
69
68
|
# @return [String, nil]
|
|
70
69
|
optional :reason, String, nil?: true
|
|
71
70
|
|
|
71
|
+
# @!attribute reason_code
|
|
72
|
+
# Why the market is not ACTIVE, as a stable code: an ErrorCodes CHANNEL_xxx value
|
|
73
|
+
# such as CHANNEL_001 (something you owe) or CHANNEL_002 (a correction was
|
|
74
|
+
# requested). The same code the channels resource reports for the market. Switch
|
|
75
|
+
# on this rather than on reason. Omitted while ACTIVE.
|
|
76
|
+
#
|
|
77
|
+
# @return [String, nil]
|
|
78
|
+
optional :reason_code, String, nil?: true
|
|
79
|
+
|
|
72
80
|
# @!attribute sender_value
|
|
73
81
|
# The sender itself — a number in E.164, or an alphanumeric sender ID.
|
|
74
82
|
#
|
|
@@ -107,7 +115,7 @@ module Sentdm
|
|
|
107
115
|
# @return [String, nil]
|
|
108
116
|
optional :updated_at, String
|
|
109
117
|
|
|
110
|
-
# @!method initialize(country:, account_id: nil, channel: nil, compliance: nil, number_type: nil, reason: nil, sender_value: nil, status: nil, updated_at: nil)
|
|
118
|
+
# @!method initialize(country:, account_id: nil, channel: nil, compliance: nil, number_type: nil, reason: nil, reason_code: nil, sender_value: nil, status: nil, updated_at: nil)
|
|
111
119
|
# Some parameter documentations has been truncated, see
|
|
112
120
|
# {Sentdm::Models::ChannelEventPayload} for more details.
|
|
113
121
|
#
|
|
@@ -142,7 +150,9 @@ module Sentdm
|
|
|
142
150
|
#
|
|
143
151
|
# @param number_type [String, nil] The kind of sender the market uses, for example TEN_DLC, LOCAL, or
|
|
144
152
|
#
|
|
145
|
-
# @param reason [String, nil] Why the market reached this state,
|
|
153
|
+
# @param reason [String, nil] Why the market reached this state, as a sentence to show a person: the specific
|
|
154
|
+
#
|
|
155
|
+
# @param reason_code [String, nil] Why the market is not ACTIVE, as a stable code: an ErrorCodes CHANNEL_xxx value
|
|
146
156
|
#
|
|
147
157
|
# @param sender_value [String, nil] The sender itself — a number in E.164, or an alphanumeric sender ID.
|
|
148
158
|
#
|
|
@@ -94,6 +94,24 @@ module Sentdm
|
|
|
94
94
|
# @return [Float, nil]
|
|
95
95
|
optional :price, Float, nil?: true
|
|
96
96
|
|
|
97
|
+
# @!attribute reason
|
|
98
|
+
# A human-readable sentence for reason_code, for example "Insufficient balance".
|
|
99
|
+
# Omitted whenever reason_code is.
|
|
100
|
+
#
|
|
101
|
+
# @return [String, nil]
|
|
102
|
+
optional :reason, String, nil?: true
|
|
103
|
+
|
|
104
|
+
# @!attribute reason_code
|
|
105
|
+
# Why the message is at its current status, as a stable platform code such as
|
|
106
|
+
# DELIVERY_007, BUSINESS_003 or DELIVERY_003. Present when the current status is
|
|
107
|
+
# FAILED, FILTERED or BLOCKED and the lifecycle was loaded; omitted otherwise.
|
|
108
|
+
# Switch on this rather than on reason: the code is stable, the wording may be
|
|
109
|
+
# improved. It is the platform's classification of the outcome, never a carrier or
|
|
110
|
+
# vendor code.
|
|
111
|
+
#
|
|
112
|
+
# @return [String, nil]
|
|
113
|
+
optional :reason_code, String, nil?: true
|
|
114
|
+
|
|
97
115
|
# @!attribute region_code
|
|
98
116
|
#
|
|
99
117
|
# @return [String, nil]
|
|
@@ -119,7 +137,7 @@ module Sentdm
|
|
|
119
137
|
# @return [String, nil]
|
|
120
138
|
optional :template_name, String, nil?: true
|
|
121
139
|
|
|
122
|
-
# @!method initialize(id: nil, active_contact_price: nil, channel: nil, contact_id: nil, created_at: nil, customer_id: nil, direction: nil, events: nil, message_body: nil, phone: nil, phone_international: nil, price: nil, region_code: nil, status: nil, template_category: nil, template_id: nil, template_name: nil)
|
|
140
|
+
# @!method initialize(id: nil, active_contact_price: nil, channel: nil, contact_id: nil, created_at: nil, customer_id: nil, direction: nil, events: nil, message_body: nil, phone: nil, phone_international: nil, price: nil, reason: nil, reason_code: nil, region_code: nil, status: nil, template_category: nil, template_id: nil, template_name: nil)
|
|
123
141
|
# Some parameter documentations has been truncated, see
|
|
124
142
|
# {Sentdm::Models::ConversationMessagesList::Message} for more details.
|
|
125
143
|
#
|
|
@@ -154,6 +172,10 @@ module Sentdm
|
|
|
154
172
|
#
|
|
155
173
|
# @param price [Float, nil]
|
|
156
174
|
#
|
|
175
|
+
# @param reason [String, nil] A human-readable sentence for reason_code, for example "Insufficient balance". O
|
|
176
|
+
#
|
|
177
|
+
# @param reason_code [String, nil] Why the message is at its current status, as a stable platform code such as
|
|
178
|
+
#
|
|
157
179
|
# @param region_code [String]
|
|
158
180
|
#
|
|
159
181
|
# @param status [String]
|
|
@@ -180,12 +202,37 @@ module Sentdm
|
|
|
180
202
|
# @return [String, nil]
|
|
181
203
|
optional :description, String, nil?: true
|
|
182
204
|
|
|
183
|
-
# @!
|
|
205
|
+
# @!attribute reason
|
|
206
|
+
# A human-readable sentence for reason_code. Omitted whenever reason_code is.
|
|
207
|
+
#
|
|
208
|
+
# @return [String, nil]
|
|
209
|
+
optional :reason, String, nil?: true
|
|
210
|
+
|
|
211
|
+
# @!attribute reason_code
|
|
212
|
+
# Why the message reached this status, as a stable platform code such as
|
|
213
|
+
# DELIVERY_007. Present on FAILED, FILTERED and BLOCKED events; omitted on every
|
|
214
|
+
# status that needs no explanation. Same wire name and vocabulary as on the
|
|
215
|
+
# activities list and the webhook.
|
|
216
|
+
#
|
|
217
|
+
# @return [String, nil]
|
|
218
|
+
optional :reason_code, String, nil?: true
|
|
219
|
+
|
|
220
|
+
# @!method initialize(status:, timestamp:, description: nil, reason: nil, reason_code: nil)
|
|
221
|
+
# Some parameter documentations has been truncated, see
|
|
222
|
+
# {Sentdm::Models::ConversationMessagesList::Message::Event} for more details.
|
|
223
|
+
#
|
|
184
224
|
# Represents a status change event in a message's lifecycle (v3)
|
|
185
225
|
#
|
|
186
226
|
# @param status [String]
|
|
227
|
+
#
|
|
187
228
|
# @param timestamp [Time]
|
|
229
|
+
#
|
|
188
230
|
# @param description [String, nil]
|
|
231
|
+
#
|
|
232
|
+
# @param reason [String, nil] A human-readable sentence for reason_code. Omitted whenever reason_code is.
|
|
233
|
+
#
|
|
234
|
+
# @param reason_code [String, nil] Why the message reached this status, as a stable platform code such as
|
|
235
|
+
# DELIVERY\_
|
|
189
236
|
end
|
|
190
237
|
|
|
191
238
|
# @see Sentdm::Models::ConversationMessagesList::Message#message_body
|
|
@@ -332,32 +379,72 @@ module Sentdm
|
|
|
332
379
|
|
|
333
380
|
class Media < Sentdm::Internal::Type::BaseModel
|
|
334
381
|
# @!attribute media_type
|
|
335
|
-
# One of
|
|
336
|
-
# fetched object's Content-Type
|
|
382
|
+
# One of MmsMediaTypes when the content type is known. Advisory — a reader should
|
|
383
|
+
# trust the fetched object's own Content-Type.
|
|
337
384
|
#
|
|
338
385
|
# @return [String, nil]
|
|
339
386
|
optional :media_type, String, api_name: :mediaType, nil?: true
|
|
340
387
|
|
|
388
|
+
# @!attribute mime_type
|
|
389
|
+
# Content type as the provider declared it. Null when it declared none.
|
|
390
|
+
#
|
|
391
|
+
# @return [String, nil]
|
|
392
|
+
optional :mime_type, String, api_name: :mimeType, nil?: true
|
|
393
|
+
|
|
394
|
+
# @!attribute size_bytes
|
|
395
|
+
# Size as the provider declared it. Never measured here — nothing downloads the
|
|
396
|
+
# file.
|
|
397
|
+
#
|
|
398
|
+
# @return [Integer, nil]
|
|
399
|
+
optional :size_bytes, Integer, api_name: :sizeBytes, nil?: true
|
|
400
|
+
|
|
401
|
+
# @!attribute source_hash_sha256
|
|
402
|
+
# Inbound only: the SHA-256 the provider declared alongside the attachment, when
|
|
403
|
+
# it declared one. Relayed to the customer so they can verify what they fetch
|
|
404
|
+
# matches what the carrier said it sent. It is the only integrity signal available
|
|
405
|
+
# on an attachment nobody here has read.
|
|
406
|
+
#
|
|
407
|
+
# @return [String, nil]
|
|
408
|
+
optional :source_hash_sha256, String, api_name: :sourceHashSha256, nil?: true
|
|
409
|
+
|
|
341
410
|
# @!attribute url
|
|
411
|
+
# Where the file lives. Outbound: the URL the customer gave us and the carrier
|
|
412
|
+
# fetched. Inbound: the URL the carrier hosts it at, relayed unchanged.
|
|
342
413
|
#
|
|
343
414
|
# @return [String, nil]
|
|
344
|
-
optional :url, String
|
|
415
|
+
optional :url, String, nil?: true
|
|
345
416
|
|
|
346
|
-
# @!method initialize(media_type: nil, url: nil)
|
|
417
|
+
# @!method initialize(media_type: nil, mime_type: nil, size_bytes: nil, source_hash_sha256: nil, url: nil)
|
|
347
418
|
# Some parameter documentations has been truncated, see
|
|
348
419
|
# {Sentdm::Models::ConversationMessagesList::Message::MessageBody::Media} for more
|
|
349
420
|
# details.
|
|
350
421
|
#
|
|
351
|
-
# One attachment on a message
|
|
352
|
-
#
|
|
422
|
+
# One attachment on a message, in either direction — and in both, a URL somebody
|
|
423
|
+
# else hosts.
|
|
424
|
+
#
|
|
425
|
+
# Outbound: the customer supplied a public URL and we handed it to the carrier.
|
|
426
|
+
# Inbound: the carrier hosts the file and we record where. sent.dm never holds the
|
|
427
|
+
# bytes, so there is no key, no expiry bookkeeping and nothing minted per read —
|
|
428
|
+
# what is stored is what is served.
|
|
429
|
+
#
|
|
430
|
+
# An inbound link expires on the carrier's own schedule and is unauthenticated.
|
|
431
|
+
# That is the customer's to manage, and it is documented where they will see it
|
|
432
|
+
# rather than only here — a recipient who needs an attachment to outlive that
|
|
433
|
+
# window copies it on receipt.
|
|
434
|
+
#
|
|
435
|
+
# Storing a presigned URL is the specific mistake this shape still avoids:
|
|
436
|
+
# M260826130000 and M260826140000 exist because RCS assets were stored as signed
|
|
437
|
+
# URLs and went stale. Nothing here is signed.
|
|
438
|
+
#
|
|
439
|
+
# @param media_type [String, nil] One of MmsMediaTypes when the content type is known. Advisory — a reader should
|
|
440
|
+
#
|
|
441
|
+
# @param mime_type [String, nil] Content type as the provider declared it. Null when it declared none.
|
|
353
442
|
#
|
|
354
|
-
#
|
|
355
|
-
# pass the link through at send time — so there is no storage key, size or expiry to record. If we ever
|
|
356
|
-
# do host attachments, that belongs with the change that introduces the hosting, not here.
|
|
443
|
+
# @param size_bytes [Integer, nil] Size as the provider declared it. Never measured here — nothing downloads the fi
|
|
357
444
|
#
|
|
358
|
-
# @param
|
|
445
|
+
# @param source_hash_sha256 [String, nil] Inbound only: the SHA-256 the provider declared alongside the attachment, when i
|
|
359
446
|
#
|
|
360
|
-
# @param url [String]
|
|
447
|
+
# @param url [String, nil] Where the file lives. Outbound: the URL the customer gave us and the carrier fet
|
|
361
448
|
end
|
|
362
449
|
end
|
|
363
450
|
end
|
|
@@ -22,11 +22,28 @@ module Sentdm
|
|
|
22
22
|
optional :account_id, String
|
|
23
23
|
|
|
24
24
|
# @!attribute channel
|
|
25
|
-
# The channel the message arrived on, for example sms or
|
|
25
|
+
# The channel the message arrived on, for example sms or mms.
|
|
26
26
|
#
|
|
27
27
|
# @return [String, nil]
|
|
28
28
|
optional :channel, String
|
|
29
29
|
|
|
30
|
+
# @!attribute media
|
|
31
|
+
# Attachments the contact sent, present only on channels that carry them (mms
|
|
32
|
+
# today) and omitted entirely otherwise.
|
|
33
|
+
#
|
|
34
|
+
# Each url points at the carrier's own copy of the file — sent.dm records where
|
|
35
|
+
# the attachment is, not the attachment itself. The link is unauthenticated and
|
|
36
|
+
# expires on the carrier's schedule, which differs between them: assume days, not
|
|
37
|
+
# months. Download what you need on receipt; re-reading the message through GET
|
|
38
|
+
# /v3/messages/{id} returns the same stored link, not a fresh one, so once it
|
|
39
|
+
# lapses the entry remains with whatever the carrier declared about the file but
|
|
40
|
+
# the file is no longer reachable.
|
|
41
|
+
#
|
|
42
|
+
# @return [Array<Sentdm::Models::InboundMessageEventPayload::Media>, nil]
|
|
43
|
+
optional :media,
|
|
44
|
+
-> { Sentdm::Internal::Type::ArrayOf[Sentdm::InboundMessageEventPayload::Media] },
|
|
45
|
+
nil?: true
|
|
46
|
+
|
|
30
47
|
# @!attribute message_id
|
|
31
48
|
# The inbound message.
|
|
32
49
|
#
|
|
@@ -54,7 +71,7 @@ module Sentdm
|
|
|
54
71
|
# @return [String, nil]
|
|
55
72
|
optional :updated_at, String
|
|
56
73
|
|
|
57
|
-
# @!method initialize(inbound_number:, received_at:, account_id: nil, channel: nil, message_id: nil, outbound_number: nil, text: nil, updated_at: nil)
|
|
74
|
+
# @!method initialize(inbound_number:, received_at:, account_id: nil, channel: nil, media: nil, message_id: nil, outbound_number: nil, text: nil, updated_at: nil)
|
|
58
75
|
# Some parameter documentations has been truncated, see
|
|
59
76
|
# {Sentdm::Models::InboundMessageEventPayload} for more details.
|
|
60
77
|
#
|
|
@@ -67,7 +84,9 @@ module Sentdm
|
|
|
67
84
|
#
|
|
68
85
|
# @param account_id [String] The account the message belongs to.
|
|
69
86
|
#
|
|
70
|
-
# @param channel [String] The channel the message arrived on, for example sms or
|
|
87
|
+
# @param channel [String] The channel the message arrived on, for example sms or mms.
|
|
88
|
+
#
|
|
89
|
+
# @param media [Array<Sentdm::Models::InboundMessageEventPayload::Media>, nil] Attachments the contact sent, present only on channels that carry them (mms toda
|
|
71
90
|
#
|
|
72
91
|
# @param message_id [String] The inbound message.
|
|
73
92
|
#
|
|
@@ -76,6 +95,54 @@ module Sentdm
|
|
|
76
95
|
# @param text [String, nil] The message body. Sent as null when the inbound message carried no text, for
|
|
77
96
|
#
|
|
78
97
|
# @param updated_at [String] When the message was received, in UTC (yyyy-MM-ddTHH:mm:ssZ). Same value as
|
|
98
|
+
|
|
99
|
+
class Media < Sentdm::Internal::Type::BaseModel
|
|
100
|
+
# @!attribute hash_sha256
|
|
101
|
+
# SHA-256 of the file as the carrier declared it, when it declares one. Verify
|
|
102
|
+
# what you download against this — sent.dm never reads the bytes, so it is the
|
|
103
|
+
# only integrity signal available.
|
|
104
|
+
#
|
|
105
|
+
# @return [String, nil]
|
|
106
|
+
optional :hash_sha256, String, nil?: true
|
|
107
|
+
|
|
108
|
+
# @!attribute mime_type
|
|
109
|
+
# Content type as the carrier reported it, for example image/jpeg.
|
|
110
|
+
#
|
|
111
|
+
# @return [String, nil]
|
|
112
|
+
optional :mime_type, String, nil?: true
|
|
113
|
+
|
|
114
|
+
# @!attribute size_bytes
|
|
115
|
+
# Size in bytes as the carrier declared it. Absent when it declared none.
|
|
116
|
+
#
|
|
117
|
+
# @return [Integer, nil]
|
|
118
|
+
optional :size_bytes, Integer, nil?: true
|
|
119
|
+
|
|
120
|
+
# @!attribute url
|
|
121
|
+
# Where the carrier hosts the attachment.
|
|
122
|
+
#
|
|
123
|
+
# This link expires and is not authenticated. sent.dm relays it rather than
|
|
124
|
+
# copying the file, so how long it stays fetchable is the carrier's decision and
|
|
125
|
+
# differs between them — assume days, not months. Anyone holding the URL can fetch
|
|
126
|
+
# it until it lapses. Copy the file on receipt if you need it to outlive that
|
|
127
|
+
# window; do not store this URL as a permanent reference.
|
|
128
|
+
#
|
|
129
|
+
# @return [String, nil]
|
|
130
|
+
optional :url, String, nil?: true
|
|
131
|
+
|
|
132
|
+
# @!method initialize(hash_sha256: nil, mime_type: nil, size_bytes: nil, url: nil)
|
|
133
|
+
# Some parameter documentations has been truncated, see
|
|
134
|
+
# {Sentdm::Models::InboundMessageEventPayload::Media} for more details.
|
|
135
|
+
#
|
|
136
|
+
# One attachment on an inbound message.
|
|
137
|
+
#
|
|
138
|
+
# @param hash_sha256 [String, nil] SHA-256 of the file as the carrier declared it, when it declares one. Verify wha
|
|
139
|
+
#
|
|
140
|
+
# @param mime_type [String, nil] Content type as the carrier reported it, for example image/jpeg.
|
|
141
|
+
#
|
|
142
|
+
# @param size_bytes [Integer, nil] Size in bytes as the carrier declared it. Absent when it declared none.
|
|
143
|
+
#
|
|
144
|
+
# @param url [String, nil] Where the carrier hosts the attachment.
|
|
145
|
+
end
|
|
79
146
|
end
|
|
80
147
|
end
|
|
81
148
|
end
|
|
@@ -77,6 +77,24 @@ module Sentdm
|
|
|
77
77
|
# @return [String, nil]
|
|
78
78
|
optional :email, String, nil?: true
|
|
79
79
|
|
|
80
|
+
# @!attribute enable_template_auto_creation_for_sp
|
|
81
|
+
# Whether this account may mark a template for automatic creation on its sender
|
|
82
|
+
# profiles. Granted by Sent per account and off by default, so it is what a
|
|
83
|
+
# template-create form reads to decide whether to offer the option at all —
|
|
84
|
+
# marking a template without it does nothing.
|
|
85
|
+
#
|
|
86
|
+
# Top-level rather than inside settings, which is written for type: "profile" only
|
|
87
|
+
# and so would never carry it to the account type that can act on it.
|
|
88
|
+
#
|
|
89
|
+
# This is the capability, not the stored flag: a profile reports false whatever
|
|
90
|
+
# its own row holds. A sender profile owns no sender profiles, so a template it
|
|
91
|
+
# marked would have nothing to be created on and the fan-out would never read the
|
|
92
|
+
# flag. The admin GET /customers/{id} reports the stored value instead, because
|
|
93
|
+
# that is the one an operator granted.
|
|
94
|
+
#
|
|
95
|
+
# @return [Boolean, nil]
|
|
96
|
+
optional :enable_template_auto_creation_for_sp, Sentdm::Internal::Type::Boolean
|
|
97
|
+
|
|
80
98
|
# @!attribute icon
|
|
81
99
|
# Account icon URL
|
|
82
100
|
#
|
|
@@ -155,7 +173,7 @@ module Sentdm
|
|
|
155
173
|
# @return [String, nil]
|
|
156
174
|
optional :type, String
|
|
157
175
|
|
|
158
|
-
# @!method initialize(id: nil, channels: nil, created_at: nil, description: nil, email: nil, icon: nil, name: nil, organization_id: nil, profiles: nil, sending_phone_number: nil, sending_phone_number_profile_id: nil, settings: nil, short_name: nil, status: nil, type: nil)
|
|
176
|
+
# @!method initialize(id: nil, channels: nil, created_at: nil, description: nil, email: nil, enable_template_auto_creation_for_sp: nil, icon: nil, name: nil, organization_id: nil, profiles: nil, sending_phone_number: nil, sending_phone_number_profile_id: nil, settings: nil, short_name: nil, status: nil, type: nil)
|
|
159
177
|
# Some parameter documentations has been truncated, see
|
|
160
178
|
# {Sentdm::Models::MeRetrieveResponse::Data} for more details.
|
|
161
179
|
#
|
|
@@ -173,6 +191,8 @@ module Sentdm
|
|
|
173
191
|
#
|
|
174
192
|
# @param email [String, nil] Contact email address
|
|
175
193
|
#
|
|
194
|
+
# @param enable_template_auto_creation_for_sp [Boolean] Whether this account may mark a template for automatic creation on its sender pr
|
|
195
|
+
#
|
|
176
196
|
# @param icon [String, nil] Account icon URL
|
|
177
197
|
#
|
|
178
198
|
# @param name [String] Account name
|
|
@@ -51,6 +51,24 @@ module Sentdm
|
|
|
51
51
|
# @return [String, nil]
|
|
52
52
|
optional :outbound_number, String
|
|
53
53
|
|
|
54
|
+
# @!attribute reason
|
|
55
|
+
# A human-readable sentence for ReasonCode, for example "The recipient is not
|
|
56
|
+
# registered on this channel". Omitted whenever reason_code is.
|
|
57
|
+
#
|
|
58
|
+
# @return [String, nil]
|
|
59
|
+
optional :reason, String, nil?: true
|
|
60
|
+
|
|
61
|
+
# @!attribute reason_code
|
|
62
|
+
# Why the message reached this status, as a stable platform code such as
|
|
63
|
+
# DELIVERY_007 or BUSINESS_003. Present on message.failed, message.filtered and
|
|
64
|
+
# message.blocked; omitted on every status that needs no explanation. Switch on
|
|
65
|
+
# this rather than on Reason: the code is stable, the wording may be improved. It
|
|
66
|
+
# is the platform's classification of the outcome and never a carrier or vendor
|
|
67
|
+
# code.
|
|
68
|
+
#
|
|
69
|
+
# @return [String, nil]
|
|
70
|
+
optional :reason_code, String, nil?: true
|
|
71
|
+
|
|
54
72
|
# @!attribute schedule_reason
|
|
55
73
|
# message.scheduled only: why the message is held, either because you scheduled it
|
|
56
74
|
# or because the recipient is inside a protected quiet-hours window. Omitted on
|
|
@@ -85,7 +103,7 @@ module Sentdm
|
|
|
85
103
|
# @return [String, nil]
|
|
86
104
|
optional :updated_at, String
|
|
87
105
|
|
|
88
|
-
# @!method initialize(message_status:, account_id: nil, agent_id: nil, body: nil, channel: nil, message_id: nil, outbound_number: nil, schedule_reason: nil, scheduled_at: nil, template_id: nil, template_name: nil, updated_at: nil)
|
|
106
|
+
# @!method initialize(message_status:, account_id: nil, agent_id: nil, body: nil, channel: nil, message_id: nil, outbound_number: nil, reason: nil, reason_code: nil, schedule_reason: nil, scheduled_at: nil, template_id: nil, template_name: nil, updated_at: nil)
|
|
89
107
|
# Some parameter documentations has been truncated, see
|
|
90
108
|
# {Sentdm::Models::MessageEventPayload} for more details.
|
|
91
109
|
#
|
|
@@ -107,6 +125,10 @@ module Sentdm
|
|
|
107
125
|
#
|
|
108
126
|
# @param outbound_number [String] The recipient's number in E.164 format.
|
|
109
127
|
#
|
|
128
|
+
# @param reason [String, nil] A human-readable sentence for ReasonCode, for example "The recipient is not regi
|
|
129
|
+
#
|
|
130
|
+
# @param reason_code [String, nil] Why the message reached this status, as a stable platform code such as
|
|
131
|
+
#
|
|
110
132
|
# @param schedule_reason [String, nil] message.scheduled only: why the message is held, either because you scheduled it
|
|
111
133
|
#
|
|
112
134
|
# @param scheduled_at [String, nil] message.scheduled only: when the held message will be released for delivery, in
|
|
@@ -98,6 +98,23 @@ module Sentdm
|
|
|
98
98
|
# @return [String, nil]
|
|
99
99
|
optional :price, String, nil?: true
|
|
100
100
|
|
|
101
|
+
# @!attribute reason
|
|
102
|
+
# A human-readable sentence for reason_code, for example "The recipient is not
|
|
103
|
+
# registered on this channel" Omitted whenever reason_code is.
|
|
104
|
+
#
|
|
105
|
+
# @return [String, nil]
|
|
106
|
+
optional :reason, String, nil?: true
|
|
107
|
+
|
|
108
|
+
# @!attribute reason_code
|
|
109
|
+
# Why the message reached this status, as a stable platform code such as
|
|
110
|
+
# DELIVERY_007 or BUSINESS_003. Present on FAILED, FILTERED and BLOCKED
|
|
111
|
+
# activities; omitted on every status that needs no explanation. Switch on this
|
|
112
|
+
# rather than on reason: the code is stable, the wording may be improved. Same
|
|
113
|
+
# wire name and vocabulary as on the message and the webhook.
|
|
114
|
+
#
|
|
115
|
+
# @return [String, nil]
|
|
116
|
+
optional :reason_code, String, nil?: true
|
|
117
|
+
|
|
101
118
|
# @!attribute scheduled_at
|
|
102
119
|
# SCHEDULED activities only: when the held message will be released for delivery,
|
|
103
120
|
# in UTC. Same wire name as on the send response, the message and the webhook.
|
|
@@ -120,7 +137,7 @@ module Sentdm
|
|
|
120
137
|
# @return [Time, nil]
|
|
121
138
|
optional :timestamp, Time
|
|
122
139
|
|
|
123
|
-
# @!method initialize(active_contact_price: nil, description: nil, from: nil, price: nil, scheduled_at: nil, status: nil, timestamp: nil)
|
|
140
|
+
# @!method initialize(active_contact_price: nil, description: nil, from: nil, price: nil, reason: nil, reason_code: nil, scheduled_at: nil, status: nil, timestamp: nil)
|
|
124
141
|
# Some parameter documentations has been truncated, see
|
|
125
142
|
# {Sentdm::Models::MessageRetrieveActivitiesResponse::Data::Activity} for more
|
|
126
143
|
# details.
|
|
@@ -139,6 +156,11 @@ module Sentdm
|
|
|
139
156
|
#
|
|
140
157
|
# @param price [String, nil] Channel cost for this activity (e.g., SMS/WhatsApp provider cost), formatted to
|
|
141
158
|
#
|
|
159
|
+
# @param reason [String, nil] A human-readable sentence for reason_code, for example "The recipient is not reg
|
|
160
|
+
#
|
|
161
|
+
# @param reason_code [String, nil] Why the message reached this status, as a stable platform code such as
|
|
162
|
+
# DELIVERY\_
|
|
163
|
+
#
|
|
142
164
|
# @param scheduled_at [Time, nil] SCHEDULED activities only: when the held message will be released for delivery,
|
|
143
165
|
#
|
|
144
166
|
# @param status [String] Activity status. Outbound: QUEUED, PROCESSED, ROUTED, SCHEDULED, SENT, DELIVERED
|
|
@@ -122,6 +122,24 @@ module Sentdm
|
|
|
122
122
|
# @return [Float, nil]
|
|
123
123
|
optional :price, Float, nil?: true
|
|
124
124
|
|
|
125
|
+
# @!attribute reason
|
|
126
|
+
# A human-readable sentence for reason_code, for example "Insufficient balance".
|
|
127
|
+
# Omitted whenever reason_code is.
|
|
128
|
+
#
|
|
129
|
+
# @return [String, nil]
|
|
130
|
+
optional :reason, String, nil?: true
|
|
131
|
+
|
|
132
|
+
# @!attribute reason_code
|
|
133
|
+
# Why the message is at its current status, as a stable platform code such as
|
|
134
|
+
# DELIVERY_007, BUSINESS_003 or DELIVERY_003. Present when the current status is
|
|
135
|
+
# FAILED, FILTERED or BLOCKED and the lifecycle was loaded; omitted otherwise.
|
|
136
|
+
# Switch on this rather than on reason: the code is stable, the wording may be
|
|
137
|
+
# improved. It is the platform's classification of the outcome, never a carrier or
|
|
138
|
+
# vendor code.
|
|
139
|
+
#
|
|
140
|
+
# @return [String, nil]
|
|
141
|
+
optional :reason_code, String, nil?: true
|
|
142
|
+
|
|
125
143
|
# @!attribute region_code
|
|
126
144
|
#
|
|
127
145
|
# @return [String, nil]
|
|
@@ -147,7 +165,7 @@ module Sentdm
|
|
|
147
165
|
# @return [String, nil]
|
|
148
166
|
optional :template_name, String, nil?: true
|
|
149
167
|
|
|
150
|
-
# @!method initialize(id: nil, active_contact_price: nil, channel: nil, contact_id: nil, created_at: nil, customer_id: nil, direction: nil, events: nil, message_body: nil, phone: nil, phone_international: nil, price: nil, region_code: nil, status: nil, template_category: nil, template_id: nil, template_name: nil)
|
|
168
|
+
# @!method initialize(id: nil, active_contact_price: nil, channel: nil, contact_id: nil, created_at: nil, customer_id: nil, direction: nil, events: nil, message_body: nil, phone: nil, phone_international: nil, price: nil, reason: nil, reason_code: nil, region_code: nil, status: nil, template_category: nil, template_id: nil, template_name: nil)
|
|
151
169
|
# Some parameter documentations has been truncated, see
|
|
152
170
|
# {Sentdm::Models::MessageRetrieveStatusResponse::Data} for more details.
|
|
153
171
|
#
|
|
@@ -182,6 +200,10 @@ module Sentdm
|
|
|
182
200
|
#
|
|
183
201
|
# @param price [Float, nil]
|
|
184
202
|
#
|
|
203
|
+
# @param reason [String, nil] A human-readable sentence for reason_code, for example "Insufficient balance". O
|
|
204
|
+
#
|
|
205
|
+
# @param reason_code [String, nil] Why the message is at its current status, as a stable platform code such as
|
|
206
|
+
#
|
|
185
207
|
# @param region_code [String]
|
|
186
208
|
#
|
|
187
209
|
# @param status [String]
|
|
@@ -208,12 +230,37 @@ module Sentdm
|
|
|
208
230
|
# @return [String, nil]
|
|
209
231
|
optional :description, String, nil?: true
|
|
210
232
|
|
|
211
|
-
# @!
|
|
233
|
+
# @!attribute reason
|
|
234
|
+
# A human-readable sentence for reason_code. Omitted whenever reason_code is.
|
|
235
|
+
#
|
|
236
|
+
# @return [String, nil]
|
|
237
|
+
optional :reason, String, nil?: true
|
|
238
|
+
|
|
239
|
+
# @!attribute reason_code
|
|
240
|
+
# Why the message reached this status, as a stable platform code such as
|
|
241
|
+
# DELIVERY_007. Present on FAILED, FILTERED and BLOCKED events; omitted on every
|
|
242
|
+
# status that needs no explanation. Same wire name and vocabulary as on the
|
|
243
|
+
# activities list and the webhook.
|
|
244
|
+
#
|
|
245
|
+
# @return [String, nil]
|
|
246
|
+
optional :reason_code, String, nil?: true
|
|
247
|
+
|
|
248
|
+
# @!method initialize(status:, timestamp:, description: nil, reason: nil, reason_code: nil)
|
|
249
|
+
# Some parameter documentations has been truncated, see
|
|
250
|
+
# {Sentdm::Models::MessageRetrieveStatusResponse::Data::Event} for more details.
|
|
251
|
+
#
|
|
212
252
|
# Represents a status change event in a message's lifecycle (v3)
|
|
213
253
|
#
|
|
214
254
|
# @param status [String]
|
|
255
|
+
#
|
|
215
256
|
# @param timestamp [Time]
|
|
257
|
+
#
|
|
216
258
|
# @param description [String, nil]
|
|
259
|
+
#
|
|
260
|
+
# @param reason [String, nil] A human-readable sentence for reason_code. Omitted whenever reason_code is.
|
|
261
|
+
#
|
|
262
|
+
# @param reason_code [String, nil] Why the message reached this status, as a stable platform code such as
|
|
263
|
+
# DELIVERY\_
|
|
217
264
|
end
|
|
218
265
|
|
|
219
266
|
# @see Sentdm::Models::MessageRetrieveStatusResponse::Data#message_body
|
|
@@ -356,32 +403,72 @@ module Sentdm
|
|
|
356
403
|
|
|
357
404
|
class Media < Sentdm::Internal::Type::BaseModel
|
|
358
405
|
# @!attribute media_type
|
|
359
|
-
# One of
|
|
360
|
-
# fetched object's Content-Type
|
|
406
|
+
# One of MmsMediaTypes when the content type is known. Advisory — a reader should
|
|
407
|
+
# trust the fetched object's own Content-Type.
|
|
361
408
|
#
|
|
362
409
|
# @return [String, nil]
|
|
363
410
|
optional :media_type, String, api_name: :mediaType, nil?: true
|
|
364
411
|
|
|
412
|
+
# @!attribute mime_type
|
|
413
|
+
# Content type as the provider declared it. Null when it declared none.
|
|
414
|
+
#
|
|
415
|
+
# @return [String, nil]
|
|
416
|
+
optional :mime_type, String, api_name: :mimeType, nil?: true
|
|
417
|
+
|
|
418
|
+
# @!attribute size_bytes
|
|
419
|
+
# Size as the provider declared it. Never measured here — nothing downloads the
|
|
420
|
+
# file.
|
|
421
|
+
#
|
|
422
|
+
# @return [Integer, nil]
|
|
423
|
+
optional :size_bytes, Integer, api_name: :sizeBytes, nil?: true
|
|
424
|
+
|
|
425
|
+
# @!attribute source_hash_sha256
|
|
426
|
+
# Inbound only: the SHA-256 the provider declared alongside the attachment, when
|
|
427
|
+
# it declared one. Relayed to the customer so they can verify what they fetch
|
|
428
|
+
# matches what the carrier said it sent. It is the only integrity signal available
|
|
429
|
+
# on an attachment nobody here has read.
|
|
430
|
+
#
|
|
431
|
+
# @return [String, nil]
|
|
432
|
+
optional :source_hash_sha256, String, api_name: :sourceHashSha256, nil?: true
|
|
433
|
+
|
|
365
434
|
# @!attribute url
|
|
435
|
+
# Where the file lives. Outbound: the URL the customer gave us and the carrier
|
|
436
|
+
# fetched. Inbound: the URL the carrier hosts it at, relayed unchanged.
|
|
366
437
|
#
|
|
367
438
|
# @return [String, nil]
|
|
368
|
-
optional :url, String
|
|
439
|
+
optional :url, String, nil?: true
|
|
369
440
|
|
|
370
|
-
# @!method initialize(media_type: nil, url: nil)
|
|
441
|
+
# @!method initialize(media_type: nil, mime_type: nil, size_bytes: nil, source_hash_sha256: nil, url: nil)
|
|
371
442
|
# Some parameter documentations has been truncated, see
|
|
372
443
|
# {Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody::Media} for
|
|
373
444
|
# more details.
|
|
374
445
|
#
|
|
375
|
-
# One attachment on a message
|
|
376
|
-
#
|
|
446
|
+
# One attachment on a message, in either direction — and in both, a URL somebody
|
|
447
|
+
# else hosts.
|
|
448
|
+
#
|
|
449
|
+
# Outbound: the customer supplied a public URL and we handed it to the carrier.
|
|
450
|
+
# Inbound: the carrier hosts the file and we record where. sent.dm never holds the
|
|
451
|
+
# bytes, so there is no key, no expiry bookkeeping and nothing minted per read —
|
|
452
|
+
# what is stored is what is served.
|
|
453
|
+
#
|
|
454
|
+
# An inbound link expires on the carrier's own schedule and is unauthenticated.
|
|
455
|
+
# That is the customer's to manage, and it is documented where they will see it
|
|
456
|
+
# rather than only here — a recipient who needs an attachment to outlive that
|
|
457
|
+
# window copies it on receipt.
|
|
458
|
+
#
|
|
459
|
+
# Storing a presigned URL is the specific mistake this shape still avoids:
|
|
460
|
+
# M260826130000 and M260826140000 exist because RCS assets were stored as signed
|
|
461
|
+
# URLs and went stale. Nothing here is signed.
|
|
462
|
+
#
|
|
463
|
+
# @param media_type [String, nil] One of MmsMediaTypes when the content type is known. Advisory — a reader should
|
|
464
|
+
#
|
|
465
|
+
# @param mime_type [String, nil] Content type as the provider declared it. Null when it declared none.
|
|
377
466
|
#
|
|
378
|
-
#
|
|
379
|
-
# pass the link through at send time — so there is no storage key, size or expiry to record. If we ever
|
|
380
|
-
# do host attachments, that belongs with the change that introduces the hosting, not here.
|
|
467
|
+
# @param size_bytes [Integer, nil] Size as the provider declared it. Never measured here — nothing downloads the fi
|
|
381
468
|
#
|
|
382
|
-
# @param
|
|
469
|
+
# @param source_hash_sha256 [String, nil] Inbound only: the SHA-256 the provider declared alongside the attachment, when i
|
|
383
470
|
#
|
|
384
|
-
# @param url [String]
|
|
471
|
+
# @param url [String, nil] Where the file lives. Outbound: the URL the customer gave us and the carrier fet
|
|
385
472
|
end
|
|
386
473
|
end
|
|
387
474
|
end
|