sentdm 0.13.1 → 0.15.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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +1 -1
  4. data/lib/sentdm/models/contact_response.rb +15 -1
  5. data/lib/sentdm/models/contact_update_params.rb +14 -1
  6. data/lib/sentdm/models/message_retrieve_activities_response.rb +11 -1
  7. data/lib/sentdm/models/message_retrieve_status_response.rb +12 -5
  8. data/lib/sentdm/models/webhook_create_params.rb +10 -1
  9. data/lib/sentdm/models/webhook_list_event_types_response.rb +13 -1
  10. data/lib/sentdm/models/webhook_response.rb +9 -1
  11. data/lib/sentdm/models/webhook_update_params.rb +10 -1
  12. data/lib/sentdm/resources/contacts.rb +3 -1
  13. data/lib/sentdm/resources/webhooks.rb +6 -2
  14. data/lib/sentdm/version.rb +1 -1
  15. data/rbi/sentdm/models/contact_response.rbi +14 -0
  16. data/rbi/sentdm/models/contact_update_params.rbi +18 -0
  17. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +12 -0
  18. data/rbi/sentdm/models/message_retrieve_status_response.rbi +15 -12
  19. data/rbi/sentdm/models/webhook_create_params.rbi +6 -0
  20. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +15 -3
  21. data/rbi/sentdm/models/webhook_response.rbi +6 -0
  22. data/rbi/sentdm/models/webhook_update_params.rbi +6 -0
  23. data/rbi/sentdm/resources/contacts.rbi +8 -0
  24. data/rbi/sentdm/resources/webhooks.rbi +6 -0
  25. data/sig/sentdm/models/contact_response.rbs +5 -0
  26. data/sig/sentdm/models/contact_update_params.rbs +5 -0
  27. data/sig/sentdm/models/message_retrieve_activities_response.rbs +5 -0
  28. data/sig/sentdm/models/message_retrieve_status_response.rbs +15 -12
  29. data/sig/sentdm/models/webhook_create_params.rbs +5 -0
  30. data/sig/sentdm/models/webhook_list_event_types_response.rbs +13 -3
  31. data/sig/sentdm/models/webhook_response.rbs +5 -0
  32. data/sig/sentdm/models/webhook_update_params.rbs +5 -0
  33. data/sig/sentdm/resources/contacts.rbs +1 -0
  34. data/sig/sentdm/resources/webhooks.rbs +2 -0
  35. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9096b11ab361a845ee05a795f424ed6b446d940d1ceb8ded850dd436b13d952
4
- data.tar.gz: 2aa5f956c825ed1bcf7b795268a56b57bc2dd2cc57225494742b0cc8f3a7a9f6
3
+ metadata.gz: 4d991654f4a9e02eb0875ca96e4721e3442dae7bbec0ff4078333628cca5f7a1
4
+ data.tar.gz: 4d57c9c5beaa57188637bf293742f4d1575a7b43b7f28f54ffc694b661fc3a92
5
5
  SHA512:
6
- metadata.gz: 8e2b060ed2523d7c7594505a25e02e09c42b82dae5a103ea2ae88a41ef7cad12d095957d950ec72293164245b0e1d44b7a39969e6093196344162ff2c68fdbfa
7
- data.tar.gz: 6c69962cefedb5d3bed65fc625b0063755899cffb337932b659e2423b89f85c0d51d608518804327911a709588762cd0dc97d79a4782970f3bacf4611f1781dc
6
+ metadata.gz: 95f4ddee5e276312271679177dcc209b42ce6c0270dacdf01f6eb5c6bf422b960f6df824e5dd313e67f176ab07a7612b05795ed4641dc3217f87916a931d8b53
7
+ data.tar.gz: 1d074dc2fd83b3cc8f9fe0e7c6f355248b3926d752d930482e3121174a401f720973c627ad0242d92c6ae6435695b799dc22726335cebc8c10ae8eadec2e8601
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.15.0 (2026-04-21)
4
+
5
+ Full Changelog: [v0.14.0...v0.15.0](https://github.com/sentdm/sent-dm-ruby/compare/v0.14.0...v0.15.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([766fd2a](https://github.com/sentdm/sent-dm-ruby/commit/766fd2ab76879a691e35141696b5ea2d2acbb3fc))
10
+
11
+ ## 0.14.0 (2026-04-20)
12
+
13
+ Full Changelog: [v0.13.1...v0.14.0](https://github.com/sentdm/sent-dm-ruby/compare/v0.13.1...v0.14.0)
14
+
15
+ ### Features
16
+
17
+ * **api:** api update ([27832ee](https://github.com/sentdm/sent-dm-ruby/commit/27832ee8fb7acf613d181af0a485f79d6523ed26))
18
+
3
19
  ## 0.13.1 (2026-04-10)
4
20
 
5
21
  Full Changelog: [v0.13.0...v0.13.1](https://github.com/sentdm/sent-dm-ruby/compare/v0.13.0...v0.13.1)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "sentdm", "~> 0.13.1"
29
+ gem "sentdm", "~> 0.15.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -15,6 +15,15 @@ module Sentdm
15
15
  # @return [String, nil]
16
16
  optional :available_channels, String
17
17
 
18
+ # @!attribute channel_consent
19
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
20
+ # "opted_out". All channels will have the same status because consent is global
21
+ # across channels. A STOP on any channel opts out of all channels; a START opts in
22
+ # to all.
23
+ #
24
+ # @return [Hash{Symbol=>String}, nil]
25
+ optional :channel_consent, Sentdm::Internal::Type::HashOf[String], nil?: true
26
+
18
27
  # @!attribute country_code
19
28
  # Country calling code (e.g., 1 for US/Canada)
20
29
  #
@@ -87,13 +96,18 @@ module Sentdm
87
96
  # @return [Time, nil]
88
97
  optional :updated_at, Time, nil?: true
89
98
 
90
- # @!method initialize(id: nil, available_channels: nil, country_code: nil, created_at: nil, default_channel: nil, format_e164: nil, format_international: nil, format_national: nil, format_rfc: nil, is_inherited: nil, opt_out: nil, phone_number: nil, region_code: nil, updated_at: nil)
99
+ # @!method initialize(id: nil, available_channels: nil, channel_consent: nil, country_code: nil, created_at: nil, default_channel: nil, format_e164: nil, format_international: nil, format_national: nil, format_rfc: nil, is_inherited: nil, opt_out: nil, phone_number: nil, region_code: nil, updated_at: nil)
100
+ # Some parameter documentations has been truncated, see
101
+ # {Sentdm::Models::ContactResponse} for more details.
102
+ #
91
103
  # Contact response for v3 API Uses snake_case for JSON property names
92
104
  #
93
105
  # @param id [String] Unique identifier for the contact
94
106
  #
95
107
  # @param available_channels [String] Comma-separated list of available messaging channels (e.g., "sms,whatsapp")
96
108
  #
109
+ # @param channel_consent [Hash{Symbol=>String}, nil] Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in", "opted_o
110
+ #
97
111
  # @param country_code [String] Country calling code (e.g., 1 for US/Canada)
98
112
  #
99
113
  # @param created_at [Time] When the contact was created
@@ -12,6 +12,17 @@ module Sentdm
12
12
  # @return [String]
13
13
  required :id, String
14
14
 
15
+ # @!attribute channel_consent
16
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
17
+ # "opted_out". All entries must have the same status — mixed values (e.g., sms:
18
+ # opted_out + whatsapp: opted_in) are rejected with 400. The provided status is
19
+ # applied to ALL channels regardless of which keys are specified, because consent
20
+ # is global across channels. When provided, takes precedence over the opt_out
21
+ # field.
22
+ #
23
+ # @return [Hash{Symbol=>String}, nil]
24
+ optional :channel_consent, Sentdm::Internal::Type::HashOf[String], nil?: true
25
+
15
26
  # @!attribute default_channel
16
27
  # Default messaging channel: "sms" or "whatsapp"
17
28
  #
@@ -41,12 +52,14 @@ module Sentdm
41
52
  # @return [String, nil]
42
53
  optional :x_profile_id, String
43
54
 
44
- # @!method initialize(id:, default_channel: nil, opt_out: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
55
+ # @!method initialize(id:, channel_consent: nil, default_channel: nil, opt_out: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
45
56
  # Some parameter documentations has been truncated, see
46
57
  # {Sentdm::Models::ContactUpdateParams} for more details.
47
58
  #
48
59
  # @param id [String]
49
60
  #
61
+ # @param channel_consent [Hash{Symbol=>String}, nil] Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in", "opted_o
62
+ #
50
63
  # @param default_channel [String, nil] Default messaging channel: "sms" or "whatsapp"
51
64
  #
52
65
  # @param opt_out [Boolean, nil] Whether the contact has opted out of messaging
@@ -75,6 +75,14 @@ module Sentdm
75
75
  # @return [String, nil]
76
76
  optional :description, String
77
77
 
78
+ # @!attribute from
79
+ # Sender phone number for this activity (the customer's sending number for
80
+ # outbound, the external sender for inbound). Null when not reported by the
81
+ # provider.
82
+ #
83
+ # @return [String, nil]
84
+ optional :from, String, nil?: true
85
+
78
86
  # @!attribute price
79
87
  # Channel cost for this activity (e.g., SMS/WhatsApp provider cost), formatted to
80
88
  # 4 decimal places.
@@ -94,7 +102,7 @@ module Sentdm
94
102
  # @return [Time, nil]
95
103
  optional :timestamp, Time
96
104
 
97
- # @!method initialize(active_contact_price: nil, description: nil, price: nil, status: nil, timestamp: nil)
105
+ # @!method initialize(active_contact_price: nil, description: nil, from: nil, price: nil, status: nil, timestamp: nil)
98
106
  # Some parameter documentations has been truncated, see
99
107
  # {Sentdm::Models::MessageRetrieveActivitiesResponse::Data::Activity} for more
100
108
  # details.
@@ -105,6 +113,8 @@ module Sentdm
105
113
  #
106
114
  # @param description [String] Human-readable description of the activity
107
115
  #
116
+ # @param from [String, nil] Sender phone number for this activity (the customer's sending number for outboun
117
+ #
108
118
  # @param price [String, nil] Channel cost for this activity (e.g., SMS/WhatsApp provider cost), formatted to
109
119
  #
110
120
  # @param status [String] Activity status (e.g., QUEUED, PROCESSED, ROUTED, SENT, DELIVERED, FAILED)
@@ -71,6 +71,11 @@ module Sentdm
71
71
  # @return [String, nil]
72
72
  optional :customer_id, String
73
73
 
74
+ # @!attribute direction
75
+ #
76
+ # @return [String, nil]
77
+ optional :direction, String
78
+
74
79
  # @!attribute events
75
80
  #
76
81
  # @return [Array<Sentdm::Models::MessageRetrieveStatusResponse::Data::Event>, nil]
@@ -115,7 +120,7 @@ module Sentdm
115
120
  # @!attribute template_category
116
121
  #
117
122
  # @return [String, nil]
118
- optional :template_category, String
123
+ optional :template_category, String, nil?: true
119
124
 
120
125
  # @!attribute template_id
121
126
  #
@@ -125,9 +130,9 @@ module Sentdm
125
130
  # @!attribute template_name
126
131
  #
127
132
  # @return [String, nil]
128
- optional :template_name, String
133
+ optional :template_name, String, nil?: true
129
134
 
130
- # @!method initialize(id: nil, active_contact_price: nil, channel: nil, contact_id: nil, created_at: nil, customer_id: 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)
135
+ # @!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)
131
136
  # Some parameter documentations has been truncated, see
132
137
  # {Sentdm::Models::MessageRetrieveStatusResponse::Data} for more details.
133
138
  #
@@ -145,6 +150,8 @@ module Sentdm
145
150
  #
146
151
  # @param customer_id [String]
147
152
  #
153
+ # @param direction [String]
154
+ #
148
155
  # @param events [Array<Sentdm::Models::MessageRetrieveStatusResponse::Data::Event>, nil]
149
156
  #
150
157
  # @param message_body [Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody, nil] Structured message body format for database storage.
@@ -159,11 +166,11 @@ module Sentdm
159
166
  #
160
167
  # @param status [String]
161
168
  #
162
- # @param template_category [String]
169
+ # @param template_category [String, nil]
163
170
  #
164
171
  # @param template_id [String, nil]
165
172
  #
166
- # @param template_name [String]
173
+ # @param template_name [String, nil]
167
174
 
168
175
  class Event < Sentdm::Internal::Type::BaseModel
169
176
  # @!attribute description
@@ -17,6 +17,13 @@ module Sentdm
17
17
  # @return [String, nil]
18
18
  optional :endpoint_url, String
19
19
 
20
+ # @!attribute event_filters
21
+ #
22
+ # @return [Hash{Symbol=>Array<String>}, nil]
23
+ optional :event_filters,
24
+ Sentdm::Internal::Type::HashOf[Sentdm::Internal::Type::ArrayOf[String]],
25
+ nil?: true
26
+
20
27
  # @!attribute event_types
21
28
  #
22
29
  # @return [Array<String>, nil]
@@ -49,7 +56,7 @@ module Sentdm
49
56
  # @return [String, nil]
50
57
  optional :x_profile_id, String
51
58
 
52
- # @!method initialize(display_name: nil, endpoint_url: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
59
+ # @!method initialize(display_name: nil, endpoint_url: nil, event_filters: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
53
60
  # Some parameter documentations has been truncated, see
54
61
  # {Sentdm::Models::WebhookCreateParams} for more details.
55
62
  #
@@ -57,6 +64,8 @@ module Sentdm
57
64
  #
58
65
  # @param endpoint_url [String]
59
66
  #
67
+ # @param event_filters [Hash{Symbol=>Array<String>}, nil]
68
+ #
60
69
  # @param event_types [Array<String>]
61
70
  #
62
71
  # @param retry_count [Integer]
@@ -63,6 +63,11 @@ module Sentdm
63
63
  # @return [String, nil]
64
64
  optional :display_name, String
65
65
 
66
+ # @!attribute event_type
67
+ #
68
+ # @return [String, nil]
69
+ optional :event_type, String, nil?: true
70
+
66
71
  # @!attribute is_active
67
72
  #
68
73
  # @return [Boolean, nil]
@@ -73,11 +78,18 @@ module Sentdm
73
78
  # @return [String, nil]
74
79
  optional :name, String
75
80
 
76
- # @!method initialize(description: nil, display_name: nil, is_active: nil, name: nil)
81
+ # @!attribute sub_types
82
+ #
83
+ # @return [Array<Object>, nil]
84
+ optional :sub_types, Sentdm::Internal::Type::ArrayOf[Sentdm::Internal::Type::Unknown], nil?: true
85
+
86
+ # @!method initialize(description: nil, display_name: nil, event_type: nil, is_active: nil, name: nil, sub_types: nil)
77
87
  # @param description [String, nil]
78
88
  # @param display_name [String]
89
+ # @param event_type [String, nil]
79
90
  # @param is_active [Boolean]
80
91
  # @param name [String]
92
+ # @param sub_types [Array<Object>, nil]
81
93
  end
82
94
  end
83
95
  end
@@ -28,6 +28,13 @@ module Sentdm
28
28
  # @return [String, nil]
29
29
  optional :endpoint_url, String
30
30
 
31
+ # @!attribute event_filters
32
+ #
33
+ # @return [Hash{Symbol=>Array<String>}, nil]
34
+ optional :event_filters,
35
+ Sentdm::Internal::Type::HashOf[Sentdm::Internal::Type::ArrayOf[String]],
36
+ nil?: true
37
+
31
38
  # @!attribute event_types
32
39
  #
33
40
  # @return [Array<String>, nil]
@@ -68,12 +75,13 @@ module Sentdm
68
75
  # @return [Time, nil]
69
76
  optional :updated_at, Time, nil?: true
70
77
 
71
- # @!method initialize(id: nil, consecutive_failures: nil, created_at: nil, display_name: nil, endpoint_url: nil, event_types: nil, is_active: nil, last_delivery_attempt_at: nil, last_successful_delivery_at: nil, retry_count: nil, signing_secret: nil, timeout_seconds: nil, updated_at: nil)
78
+ # @!method initialize(id: nil, consecutive_failures: nil, created_at: nil, display_name: nil, endpoint_url: nil, event_filters: nil, event_types: nil, is_active: nil, last_delivery_attempt_at: nil, last_successful_delivery_at: nil, retry_count: nil, signing_secret: nil, timeout_seconds: nil, updated_at: nil)
72
79
  # @param id [String]
73
80
  # @param consecutive_failures [Integer]
74
81
  # @param created_at [Time]
75
82
  # @param display_name [String]
76
83
  # @param endpoint_url [String]
84
+ # @param event_filters [Hash{Symbol=>Array<String>}, nil]
77
85
  # @param event_types [Array<String>]
78
86
  # @param is_active [Boolean]
79
87
  # @param last_delivery_attempt_at [Time, nil]
@@ -22,6 +22,13 @@ module Sentdm
22
22
  # @return [String, nil]
23
23
  optional :endpoint_url, String
24
24
 
25
+ # @!attribute event_filters
26
+ #
27
+ # @return [Hash{Symbol=>Array<String>}, nil]
28
+ optional :event_filters,
29
+ Sentdm::Internal::Type::HashOf[Sentdm::Internal::Type::ArrayOf[String]],
30
+ nil?: true
31
+
25
32
  # @!attribute event_types
26
33
  #
27
34
  # @return [Array<String>, nil]
@@ -54,7 +61,7 @@ module Sentdm
54
61
  # @return [String, nil]
55
62
  optional :x_profile_id, String
56
63
 
57
- # @!method initialize(id:, display_name: nil, endpoint_url: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
64
+ # @!method initialize(id:, display_name: nil, endpoint_url: nil, event_filters: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
58
65
  # Some parameter documentations has been truncated, see
59
66
  # {Sentdm::Models::WebhookUpdateParams} for more details.
60
67
  #
@@ -64,6 +71,8 @@ module Sentdm
64
71
  #
65
72
  # @param endpoint_url [String]
66
73
  #
74
+ # @param event_filters [Hash{Symbol=>Array<String>}, nil]
75
+ #
67
76
  # @param event_types [Array<String>]
68
77
  #
69
78
  # @param retry_count [Integer]
@@ -73,10 +73,12 @@ module Sentdm
73
73
  # Updates a contact's default channel and/or opt-out status. Inherited contacts
74
74
  # cannot be updated.
75
75
  #
76
- # @overload update(id, default_channel: nil, opt_out: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
76
+ # @overload update(id, channel_consent: nil, default_channel: nil, opt_out: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
77
77
  #
78
78
  # @param id [String] Path param: Contact ID from route parameter
79
79
  #
80
+ # @param channel_consent [Hash{Symbol=>String}, nil] Body param: Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_i
81
+ #
80
82
  # @param default_channel [String, nil] Body param: Default messaging channel: "sms" or "whatsapp"
81
83
  #
82
84
  # @param opt_out [Boolean, nil] Body param: Whether the contact has opted out of messaging
@@ -9,12 +9,14 @@ module Sentdm
9
9
  #
10
10
  # Creates a new webhook endpoint for the authenticated customer.
11
11
  #
12
- # @overload create(display_name: nil, endpoint_url: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
12
+ # @overload create(display_name: nil, endpoint_url: nil, event_filters: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
13
13
  #
14
14
  # @param display_name [String] Body param
15
15
  #
16
16
  # @param endpoint_url [String] Body param
17
17
  #
18
+ # @param event_filters [Hash{Symbol=>Array<String>}, nil] Body param
19
+ #
18
20
  # @param event_types [Array<String>] Body param
19
21
  #
20
22
  # @param retry_count [Integer] Body param
@@ -77,7 +79,7 @@ module Sentdm
77
79
  #
78
80
  # Updates an existing webhook for the authenticated customer.
79
81
  #
80
- # @overload update(id, display_name: nil, endpoint_url: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
82
+ # @overload update(id, display_name: nil, endpoint_url: nil, event_filters: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
81
83
  #
82
84
  # @param id [String] Path param
83
85
  #
@@ -85,6 +87,8 @@ module Sentdm
85
87
  #
86
88
  # @param endpoint_url [String] Body param
87
89
  #
90
+ # @param event_filters [Hash{Symbol=>Array<String>}, nil] Body param
91
+ #
88
92
  # @param event_types [Array<String>] Body param
89
93
  #
90
94
  # @param retry_count [Integer] Body param
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sentdm
4
- VERSION = "0.13.1"
4
+ VERSION = "0.15.0"
5
5
  end
@@ -22,6 +22,13 @@ module Sentdm
22
22
  sig { params(available_channels: String).void }
23
23
  attr_writer :available_channels
24
24
 
25
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
26
+ # "opted_out". All channels will have the same status because consent is global
27
+ # across channels. A STOP on any channel opts out of all channels; a START opts in
28
+ # to all.
29
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
30
+ attr_accessor :channel_consent
31
+
25
32
  # Country calling code (e.g., 1 for US/Canada)
26
33
  sig { returns(T.nilable(String)) }
27
34
  attr_reader :country_code
@@ -108,6 +115,7 @@ module Sentdm
108
115
  params(
109
116
  id: String,
110
117
  available_channels: String,
118
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
111
119
  country_code: String,
112
120
  created_at: Time,
113
121
  default_channel: String,
@@ -127,6 +135,11 @@ module Sentdm
127
135
  id: nil,
128
136
  # Comma-separated list of available messaging channels (e.g., "sms,whatsapp")
129
137
  available_channels: nil,
138
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
139
+ # "opted_out". All channels will have the same status because consent is global
140
+ # across channels. A STOP on any channel opts out of all channels; a START opts in
141
+ # to all.
142
+ channel_consent: nil,
130
143
  # Country calling code (e.g., 1 for US/Canada)
131
144
  country_code: nil,
132
145
  # When the contact was created
@@ -159,6 +172,7 @@ module Sentdm
159
172
  {
160
173
  id: String,
161
174
  available_channels: String,
175
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
162
176
  country_code: String,
163
177
  created_at: Time,
164
178
  default_channel: String,
@@ -14,6 +14,15 @@ module Sentdm
14
14
  sig { returns(String) }
15
15
  attr_accessor :id
16
16
 
17
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
18
+ # "opted_out". All entries must have the same status — mixed values (e.g., sms:
19
+ # opted_out + whatsapp: opted_in) are rejected with 400. The provided status is
20
+ # applied to ALL channels regardless of which keys are specified, because consent
21
+ # is global across channels. When provided, takes precedence over the opt_out
22
+ # field.
23
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
24
+ attr_accessor :channel_consent
25
+
17
26
  # Default messaging channel: "sms" or "whatsapp"
18
27
  sig { returns(T.nilable(String)) }
19
28
  attr_accessor :default_channel
@@ -45,6 +54,7 @@ module Sentdm
45
54
  sig do
46
55
  params(
47
56
  id: String,
57
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
48
58
  default_channel: T.nilable(String),
49
59
  opt_out: T.nilable(T::Boolean),
50
60
  sandbox: T::Boolean,
@@ -55,6 +65,13 @@ module Sentdm
55
65
  end
56
66
  def self.new(
57
67
  id:,
68
+ # Consent status by channel. Keys: "sms", "whatsapp". Values: "opted_in",
69
+ # "opted_out". All entries must have the same status — mixed values (e.g., sms:
70
+ # opted_out + whatsapp: opted_in) are rejected with 400. The provided status is
71
+ # applied to ALL channels regardless of which keys are specified, because consent
72
+ # is global across channels. When provided, takes precedence over the opt_out
73
+ # field.
74
+ channel_consent: nil,
58
75
  # Default messaging channel: "sms" or "whatsapp"
59
76
  default_channel: nil,
60
77
  # Whether the contact has opted out of messaging
@@ -72,6 +89,7 @@ module Sentdm
72
89
  override.returns(
73
90
  {
74
91
  id: String,
92
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
75
93
  default_channel: T.nilable(String),
76
94
  opt_out: T.nilable(T::Boolean),
77
95
  sandbox: T::Boolean,
@@ -181,6 +181,12 @@ module Sentdm
181
181
  sig { params(description: String).void }
182
182
  attr_writer :description
183
183
 
184
+ # Sender phone number for this activity (the customer's sending number for
185
+ # outbound, the external sender for inbound). Null when not reported by the
186
+ # provider.
187
+ sig { returns(T.nilable(String)) }
188
+ attr_accessor :from
189
+
184
190
  # Channel cost for this activity (e.g., SMS/WhatsApp provider cost), formatted to
185
191
  # 4 decimal places.
186
192
  sig { returns(T.nilable(String)) }
@@ -205,6 +211,7 @@ module Sentdm
205
211
  params(
206
212
  active_contact_price: T.nilable(String),
207
213
  description: String,
214
+ from: T.nilable(String),
208
215
  price: T.nilable(String),
209
216
  status: String,
210
217
  timestamp: Time
@@ -216,6 +223,10 @@ module Sentdm
216
223
  active_contact_price: nil,
217
224
  # Human-readable description of the activity
218
225
  description: nil,
226
+ # Sender phone number for this activity (the customer's sending number for
227
+ # outbound, the external sender for inbound). Null when not reported by the
228
+ # provider.
229
+ from: nil,
219
230
  # Channel cost for this activity (e.g., SMS/WhatsApp provider cost), formatted to
220
231
  # 4 decimal places.
221
232
  price: nil,
@@ -231,6 +242,7 @@ module Sentdm
231
242
  {
232
243
  active_contact_price: T.nilable(String),
233
244
  description: String,
245
+ from: T.nilable(String),
234
246
  price: T.nilable(String),
235
247
  status: String,
236
248
  timestamp: Time
@@ -128,6 +128,12 @@ module Sentdm
128
128
  sig { params(customer_id: String).void }
129
129
  attr_writer :customer_id
130
130
 
131
+ sig { returns(T.nilable(String)) }
132
+ attr_reader :direction
133
+
134
+ sig { params(direction: String).void }
135
+ attr_writer :direction
136
+
131
137
  sig do
132
138
  returns(
133
139
  T.nilable(
@@ -188,19 +194,13 @@ module Sentdm
188
194
  attr_writer :status
189
195
 
190
196
  sig { returns(T.nilable(String)) }
191
- attr_reader :template_category
192
-
193
- sig { params(template_category: String).void }
194
- attr_writer :template_category
197
+ attr_accessor :template_category
195
198
 
196
199
  sig { returns(T.nilable(String)) }
197
200
  attr_accessor :template_id
198
201
 
199
202
  sig { returns(T.nilable(String)) }
200
- attr_reader :template_name
201
-
202
- sig { params(template_name: String).void }
203
- attr_writer :template_name
203
+ attr_accessor :template_name
204
204
 
205
205
  # Message response for v3 API — same shape as v2 with snake_case JSON conventions
206
206
  sig do
@@ -211,6 +211,7 @@ module Sentdm
211
211
  contact_id: String,
212
212
  created_at: Time,
213
213
  customer_id: String,
214
+ direction: String,
214
215
  events:
215
216
  T.nilable(
216
217
  T::Array[
@@ -226,9 +227,9 @@ module Sentdm
226
227
  price: T.nilable(Float),
227
228
  region_code: String,
228
229
  status: String,
229
- template_category: String,
230
+ template_category: T.nilable(String),
230
231
  template_id: T.nilable(String),
231
- template_name: String
232
+ template_name: T.nilable(String)
232
233
  ).returns(T.attached_class)
233
234
  end
234
235
  def self.new(
@@ -238,6 +239,7 @@ module Sentdm
238
239
  contact_id: nil,
239
240
  created_at: nil,
240
241
  customer_id: nil,
242
+ direction: nil,
241
243
  events: nil,
242
244
  # Structured message body format for database storage. Preserves channel-specific
243
245
  # components (header, body, footer, buttons).
@@ -262,6 +264,7 @@ module Sentdm
262
264
  contact_id: String,
263
265
  created_at: Time,
264
266
  customer_id: String,
267
+ direction: String,
265
268
  events:
266
269
  T.nilable(
267
270
  T::Array[
@@ -277,9 +280,9 @@ module Sentdm
277
280
  price: T.nilable(Float),
278
281
  region_code: String,
279
282
  status: String,
280
- template_category: String,
283
+ template_category: T.nilable(String),
281
284
  template_id: T.nilable(String),
282
- template_name: String
285
+ template_name: T.nilable(String)
283
286
  }
284
287
  )
285
288
  end
@@ -23,6 +23,9 @@ module Sentdm
23
23
  sig { params(endpoint_url: String).void }
24
24
  attr_writer :endpoint_url
25
25
 
26
+ sig { returns(T.nilable(T::Hash[Symbol, T::Array[String]])) }
27
+ attr_accessor :event_filters
28
+
26
29
  sig { returns(T.nilable(T::Array[String])) }
27
30
  attr_reader :event_types
28
31
 
@@ -65,6 +68,7 @@ module Sentdm
65
68
  params(
66
69
  display_name: String,
67
70
  endpoint_url: String,
71
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
68
72
  event_types: T::Array[String],
69
73
  retry_count: Integer,
70
74
  sandbox: T::Boolean,
@@ -77,6 +81,7 @@ module Sentdm
77
81
  def self.new(
78
82
  display_name: nil,
79
83
  endpoint_url: nil,
84
+ event_filters: nil,
80
85
  event_types: nil,
81
86
  retry_count: nil,
82
87
  # Sandbox flag - when true, the operation is simulated without side effects Useful
@@ -94,6 +99,7 @@ module Sentdm
94
99
  {
95
100
  display_name: String,
96
101
  endpoint_url: String,
102
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
97
103
  event_types: T::Array[String],
98
104
  retry_count: Integer,
99
105
  sandbox: T::Boolean,
@@ -159,6 +159,9 @@ module Sentdm
159
159
  sig { params(display_name: String).void }
160
160
  attr_writer :display_name
161
161
 
162
+ sig { returns(T.nilable(String)) }
163
+ attr_accessor :event_type
164
+
162
165
  sig { returns(T.nilable(T::Boolean)) }
163
166
  attr_reader :is_active
164
167
 
@@ -171,19 +174,26 @@ module Sentdm
171
174
  sig { params(name: String).void }
172
175
  attr_writer :name
173
176
 
177
+ sig { returns(T.nilable(T::Array[T.anything])) }
178
+ attr_accessor :sub_types
179
+
174
180
  sig do
175
181
  params(
176
182
  description: T.nilable(String),
177
183
  display_name: String,
184
+ event_type: T.nilable(String),
178
185
  is_active: T::Boolean,
179
- name: String
186
+ name: String,
187
+ sub_types: T.nilable(T::Array[T.anything])
180
188
  ).returns(T.attached_class)
181
189
  end
182
190
  def self.new(
183
191
  description: nil,
184
192
  display_name: nil,
193
+ event_type: nil,
185
194
  is_active: nil,
186
- name: nil
195
+ name: nil,
196
+ sub_types: nil
187
197
  )
188
198
  end
189
199
 
@@ -192,8 +202,10 @@ module Sentdm
192
202
  {
193
203
  description: T.nilable(String),
194
204
  display_name: String,
205
+ event_type: T.nilable(String),
195
206
  is_active: T::Boolean,
196
- name: String
207
+ name: String,
208
+ sub_types: T.nilable(T::Array[T.anything])
197
209
  }
198
210
  )
199
211
  end
@@ -38,6 +38,9 @@ module Sentdm
38
38
  sig { params(endpoint_url: String).void }
39
39
  attr_writer :endpoint_url
40
40
 
41
+ sig { returns(T.nilable(T::Hash[Symbol, T::Array[String]])) }
42
+ attr_accessor :event_filters
43
+
41
44
  sig { returns(T.nilable(T::Array[String])) }
42
45
  attr_reader :event_types
43
46
 
@@ -81,6 +84,7 @@ module Sentdm
81
84
  created_at: Time,
82
85
  display_name: String,
83
86
  endpoint_url: String,
87
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
84
88
  event_types: T::Array[String],
85
89
  is_active: T::Boolean,
86
90
  last_delivery_attempt_at: T.nilable(Time),
@@ -97,6 +101,7 @@ module Sentdm
97
101
  created_at: nil,
98
102
  display_name: nil,
99
103
  endpoint_url: nil,
104
+ event_filters: nil,
100
105
  event_types: nil,
101
106
  is_active: nil,
102
107
  last_delivery_attempt_at: nil,
@@ -116,6 +121,7 @@ module Sentdm
116
121
  created_at: Time,
117
122
  display_name: String,
118
123
  endpoint_url: String,
124
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
119
125
  event_types: T::Array[String],
120
126
  is_active: T::Boolean,
121
127
  last_delivery_attempt_at: T.nilable(Time),
@@ -26,6 +26,9 @@ module Sentdm
26
26
  sig { params(endpoint_url: String).void }
27
27
  attr_writer :endpoint_url
28
28
 
29
+ sig { returns(T.nilable(T::Hash[Symbol, T::Array[String]])) }
30
+ attr_accessor :event_filters
31
+
29
32
  sig { returns(T.nilable(T::Array[String])) }
30
33
  attr_reader :event_types
31
34
 
@@ -69,6 +72,7 @@ module Sentdm
69
72
  id: String,
70
73
  display_name: String,
71
74
  endpoint_url: String,
75
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
72
76
  event_types: T::Array[String],
73
77
  retry_count: Integer,
74
78
  sandbox: T::Boolean,
@@ -82,6 +86,7 @@ module Sentdm
82
86
  id:,
83
87
  display_name: nil,
84
88
  endpoint_url: nil,
89
+ event_filters: nil,
85
90
  event_types: nil,
86
91
  retry_count: nil,
87
92
  # Sandbox flag - when true, the operation is simulated without side effects Useful
@@ -100,6 +105,7 @@ module Sentdm
100
105
  id: String,
101
106
  display_name: String,
102
107
  endpoint_url: String,
108
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
103
109
  event_types: T::Array[String],
104
110
  retry_count: Integer,
105
111
  sandbox: T::Boolean,
@@ -58,6 +58,7 @@ module Sentdm
58
58
  sig do
59
59
  params(
60
60
  id: String,
61
+ channel_consent: T.nilable(T::Hash[Symbol, String]),
61
62
  default_channel: T.nilable(String),
62
63
  opt_out: T.nilable(T::Boolean),
63
64
  sandbox: T::Boolean,
@@ -69,6 +70,13 @@ module Sentdm
69
70
  def update(
70
71
  # Path param: Contact ID from route parameter
71
72
  id,
73
+ # Body param: Consent status by channel. Keys: "sms", "whatsapp". Values:
74
+ # "opted_in", "opted_out". All entries must have the same status — mixed values
75
+ # (e.g., sms: opted_out + whatsapp: opted_in) are rejected with 400. The provided
76
+ # status is applied to ALL channels regardless of which keys are specified,
77
+ # because consent is global across channels. When provided, takes precedence over
78
+ # the opt_out field.
79
+ channel_consent: nil,
72
80
  # Body param: Default messaging channel: "sms" or "whatsapp"
73
81
  default_channel: nil,
74
82
  # Body param: Whether the contact has opted out of messaging
@@ -9,6 +9,7 @@ module Sentdm
9
9
  params(
10
10
  display_name: String,
11
11
  endpoint_url: String,
12
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
12
13
  event_types: T::Array[String],
13
14
  retry_count: Integer,
14
15
  sandbox: T::Boolean,
@@ -24,6 +25,8 @@ module Sentdm
24
25
  # Body param
25
26
  endpoint_url: nil,
26
27
  # Body param
28
+ event_filters: nil,
29
+ # Body param
27
30
  event_types: nil,
28
31
  # Body param
29
32
  retry_count: nil,
@@ -67,6 +70,7 @@ module Sentdm
67
70
  id: String,
68
71
  display_name: String,
69
72
  endpoint_url: String,
73
+ event_filters: T.nilable(T::Hash[Symbol, T::Array[String]]),
70
74
  event_types: T::Array[String],
71
75
  retry_count: Integer,
72
76
  sandbox: T::Boolean,
@@ -84,6 +88,8 @@ module Sentdm
84
88
  # Body param
85
89
  endpoint_url: nil,
86
90
  # Body param
91
+ event_filters: nil,
92
+ # Body param
87
93
  event_types: nil,
88
94
  # Body param
89
95
  retry_count: nil,
@@ -4,6 +4,7 @@ module Sentdm
4
4
  {
5
5
  id: String,
6
6
  available_channels: String,
7
+ channel_consent: ::Hash[Symbol, String]?,
7
8
  country_code: String,
8
9
  created_at: Time,
9
10
  default_channel: String,
@@ -27,6 +28,8 @@ module Sentdm
27
28
 
28
29
  def available_channels=: (String) -> String
29
30
 
31
+ attr_accessor channel_consent: ::Hash[Symbol, String]?
32
+
30
33
  attr_reader country_code: String?
31
34
 
32
35
  def country_code=: (String) -> String
@@ -76,6 +79,7 @@ module Sentdm
76
79
  def initialize: (
77
80
  ?id: String,
78
81
  ?available_channels: String,
82
+ ?channel_consent: ::Hash[Symbol, String]?,
79
83
  ?country_code: String,
80
84
  ?created_at: Time,
81
85
  ?default_channel: String,
@@ -93,6 +97,7 @@ module Sentdm
93
97
  def to_hash: -> {
94
98
  id: String,
95
99
  available_channels: String,
100
+ channel_consent: ::Hash[Symbol, String]?,
96
101
  country_code: String,
97
102
  created_at: Time,
98
103
  default_channel: String,
@@ -3,6 +3,7 @@ module Sentdm
3
3
  type contact_update_params =
4
4
  {
5
5
  id: String,
6
+ channel_consent: ::Hash[Symbol, String]?,
6
7
  default_channel: String?,
7
8
  opt_out: bool?,
8
9
  sandbox: bool,
@@ -17,6 +18,8 @@ module Sentdm
17
18
 
18
19
  attr_accessor id: String
19
20
 
21
+ attr_accessor channel_consent: ::Hash[Symbol, String]?
22
+
20
23
  attr_accessor default_channel: String?
21
24
 
22
25
  attr_accessor opt_out: bool?
@@ -35,6 +38,7 @@ module Sentdm
35
38
 
36
39
  def initialize: (
37
40
  id: String,
41
+ ?channel_consent: ::Hash[Symbol, String]?,
38
42
  ?default_channel: String?,
39
43
  ?opt_out: bool?,
40
44
  ?sandbox: bool,
@@ -45,6 +49,7 @@ module Sentdm
45
49
 
46
50
  def to_hash: -> {
47
51
  id: String,
52
+ channel_consent: ::Hash[Symbol, String]?,
48
53
  default_channel: String?,
49
54
  opt_out: bool?,
50
55
  sandbox: bool,
@@ -66,6 +66,7 @@ module Sentdm
66
66
  {
67
67
  active_contact_price: String?,
68
68
  description: String,
69
+ from: String?,
69
70
  price: String?,
70
71
  status: String,
71
72
  timestamp: Time
@@ -78,6 +79,8 @@ module Sentdm
78
79
 
79
80
  def description=: (String) -> String
80
81
 
82
+ attr_accessor from: String?
83
+
81
84
  attr_accessor price: String?
82
85
 
83
86
  attr_reader status: String?
@@ -91,6 +94,7 @@ module Sentdm
91
94
  def initialize: (
92
95
  ?active_contact_price: String?,
93
96
  ?description: String,
97
+ ?from: String?,
94
98
  ?price: String?,
95
99
  ?status: String,
96
100
  ?timestamp: Time
@@ -99,6 +103,7 @@ module Sentdm
99
103
  def to_hash: -> {
100
104
  active_contact_price: String?,
101
105
  description: String,
106
+ from: String?,
102
107
  price: String?,
103
108
  status: String,
104
109
  timestamp: Time
@@ -43,6 +43,7 @@ module Sentdm
43
43
  contact_id: String,
44
44
  created_at: Time,
45
45
  customer_id: String,
46
+ direction: String,
46
47
  events: ::Array[Sentdm::Models::MessageRetrieveStatusResponse::Data::Event]?,
47
48
  message_body: Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody?,
48
49
  phone: String,
@@ -50,9 +51,9 @@ module Sentdm
50
51
  price: Float?,
51
52
  region_code: String,
52
53
  status: String,
53
- template_category: String,
54
+ template_category: String?,
54
55
  template_id: String?,
55
- template_name: String
56
+ template_name: String?
56
57
  }
57
58
 
58
59
  class Data < Sentdm::Internal::Type::BaseModel
@@ -78,6 +79,10 @@ module Sentdm
78
79
 
79
80
  def customer_id=: (String) -> String
80
81
 
82
+ attr_reader direction: String?
83
+
84
+ def direction=: (String) -> String
85
+
81
86
  attr_accessor events: ::Array[Sentdm::Models::MessageRetrieveStatusResponse::Data::Event]?
82
87
 
83
88
  attr_accessor message_body: Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody?
@@ -100,15 +105,11 @@ module Sentdm
100
105
 
101
106
  def status=: (String) -> String
102
107
 
103
- attr_reader template_category: String?
104
-
105
- def template_category=: (String) -> String
108
+ attr_accessor template_category: String?
106
109
 
107
110
  attr_accessor template_id: String?
108
111
 
109
- attr_reader template_name: String?
110
-
111
- def template_name=: (String) -> String
112
+ attr_accessor template_name: String?
112
113
 
113
114
  def initialize: (
114
115
  ?id: String,
@@ -117,6 +118,7 @@ module Sentdm
117
118
  ?contact_id: String,
118
119
  ?created_at: Time,
119
120
  ?customer_id: String,
121
+ ?direction: String,
120
122
  ?events: ::Array[Sentdm::Models::MessageRetrieveStatusResponse::Data::Event]?,
121
123
  ?message_body: Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody?,
122
124
  ?phone: String,
@@ -124,9 +126,9 @@ module Sentdm
124
126
  ?price: Float?,
125
127
  ?region_code: String,
126
128
  ?status: String,
127
- ?template_category: String,
129
+ ?template_category: String?,
128
130
  ?template_id: String?,
129
- ?template_name: String
131
+ ?template_name: String?
130
132
  ) -> void
131
133
 
132
134
  def to_hash: -> {
@@ -136,6 +138,7 @@ module Sentdm
136
138
  contact_id: String,
137
139
  created_at: Time,
138
140
  customer_id: String,
141
+ direction: String,
139
142
  events: ::Array[Sentdm::Models::MessageRetrieveStatusResponse::Data::Event]?,
140
143
  message_body: Sentdm::Models::MessageRetrieveStatusResponse::Data::MessageBody?,
141
144
  phone: String,
@@ -143,9 +146,9 @@ module Sentdm
143
146
  price: Float?,
144
147
  region_code: String,
145
148
  status: String,
146
- template_category: String,
149
+ template_category: String?,
147
150
  template_id: String?,
148
- template_name: String
151
+ template_name: String?
149
152
  }
150
153
 
151
154
  type event = { description: String?, status: String, timestamp: Time }
@@ -4,6 +4,7 @@ module Sentdm
4
4
  {
5
5
  display_name: String,
6
6
  endpoint_url: String,
7
+ event_filters: ::Hash[Symbol, ::Array[String]]?,
7
8
  event_types: ::Array[String],
8
9
  retry_count: Integer,
9
10
  sandbox: bool,
@@ -25,6 +26,8 @@ module Sentdm
25
26
 
26
27
  def endpoint_url=: (String) -> String
27
28
 
29
+ attr_accessor event_filters: ::Hash[Symbol, ::Array[String]]?
30
+
28
31
  attr_reader event_types: ::Array[String]?
29
32
 
30
33
  def event_types=: (::Array[String]) -> ::Array[String]
@@ -52,6 +55,7 @@ module Sentdm
52
55
  def initialize: (
53
56
  ?display_name: String,
54
57
  ?endpoint_url: String,
58
+ ?event_filters: ::Hash[Symbol, ::Array[String]]?,
55
59
  ?event_types: ::Array[String],
56
60
  ?retry_count: Integer,
57
61
  ?sandbox: bool,
@@ -64,6 +68,7 @@ module Sentdm
64
68
  def to_hash: -> {
65
69
  display_name: String,
66
70
  endpoint_url: String,
71
+ event_filters: ::Hash[Symbol, ::Array[String]]?,
67
72
  event_types: ::Array[String],
68
73
  retry_count: Integer,
69
74
  sandbox: bool,
@@ -59,8 +59,10 @@ module Sentdm
59
59
  {
60
60
  description: String?,
61
61
  display_name: String,
62
+ event_type: String?,
62
63
  is_active: bool,
63
- name: String
64
+ name: String,
65
+ sub_types: ::Array[top]?
64
66
  }
65
67
 
66
68
  class EventType < Sentdm::Internal::Type::BaseModel
@@ -70,6 +72,8 @@ module Sentdm
70
72
 
71
73
  def display_name=: (String) -> String
72
74
 
75
+ attr_accessor event_type: String?
76
+
73
77
  attr_reader is_active: bool?
74
78
 
75
79
  def is_active=: (bool) -> bool
@@ -78,18 +82,24 @@ module Sentdm
78
82
 
79
83
  def name=: (String) -> String
80
84
 
85
+ attr_accessor sub_types: ::Array[top]?
86
+
81
87
  def initialize: (
82
88
  ?description: String?,
83
89
  ?display_name: String,
90
+ ?event_type: String?,
84
91
  ?is_active: bool,
85
- ?name: String
92
+ ?name: String,
93
+ ?sub_types: ::Array[top]?
86
94
  ) -> void
87
95
 
88
96
  def to_hash: -> {
89
97
  description: String?,
90
98
  display_name: String,
99
+ event_type: String?,
91
100
  is_active: bool,
92
- name: String
101
+ name: String,
102
+ sub_types: ::Array[top]?
93
103
  }
94
104
  end
95
105
  end
@@ -7,6 +7,7 @@ module Sentdm
7
7
  created_at: Time,
8
8
  display_name: String,
9
9
  endpoint_url: String,
10
+ event_filters: ::Hash[Symbol, ::Array[String]]?,
10
11
  event_types: ::Array[String],
11
12
  is_active: bool,
12
13
  last_delivery_attempt_at: Time?,
@@ -38,6 +39,8 @@ module Sentdm
38
39
 
39
40
  def endpoint_url=: (String) -> String
40
41
 
42
+ attr_accessor event_filters: ::Hash[Symbol, ::Array[String]]?
43
+
41
44
  attr_reader event_types: ::Array[String]?
42
45
 
43
46
  def event_types=: (::Array[String]) -> ::Array[String]
@@ -68,6 +71,7 @@ module Sentdm
68
71
  ?created_at: Time,
69
72
  ?display_name: String,
70
73
  ?endpoint_url: String,
74
+ ?event_filters: ::Hash[Symbol, ::Array[String]]?,
71
75
  ?event_types: ::Array[String],
72
76
  ?is_active: bool,
73
77
  ?last_delivery_attempt_at: Time?,
@@ -84,6 +88,7 @@ module Sentdm
84
88
  created_at: Time,
85
89
  display_name: String,
86
90
  endpoint_url: String,
91
+ event_filters: ::Hash[Symbol, ::Array[String]]?,
87
92
  event_types: ::Array[String],
88
93
  is_active: bool,
89
94
  last_delivery_attempt_at: Time?,
@@ -5,6 +5,7 @@ module Sentdm
5
5
  id: String,
6
6
  display_name: String,
7
7
  endpoint_url: String,
8
+ event_filters: ::Hash[Symbol, ::Array[String]]?,
8
9
  event_types: ::Array[String],
9
10
  retry_count: Integer,
10
11
  sandbox: bool,
@@ -28,6 +29,8 @@ module Sentdm
28
29
 
29
30
  def endpoint_url=: (String) -> String
30
31
 
32
+ attr_accessor event_filters: ::Hash[Symbol, ::Array[String]]?
33
+
31
34
  attr_reader event_types: ::Array[String]?
32
35
 
33
36
  def event_types=: (::Array[String]) -> ::Array[String]
@@ -56,6 +59,7 @@ module Sentdm
56
59
  id: String,
57
60
  ?display_name: String,
58
61
  ?endpoint_url: String,
62
+ ?event_filters: ::Hash[Symbol, ::Array[String]]?,
59
63
  ?event_types: ::Array[String],
60
64
  ?retry_count: Integer,
61
65
  ?sandbox: bool,
@@ -69,6 +73,7 @@ module Sentdm
69
73
  id: String,
70
74
  display_name: String,
71
75
  endpoint_url: String,
76
+ event_filters: ::Hash[Symbol, ::Array[String]]?,
72
77
  event_types: ::Array[String],
73
78
  retry_count: Integer,
74
79
  sandbox: bool,
@@ -17,6 +17,7 @@ module Sentdm
17
17
 
18
18
  def update: (
19
19
  String id,
20
+ ?channel_consent: ::Hash[Symbol, String]?,
20
21
  ?default_channel: String?,
21
22
  ?opt_out: bool?,
22
23
  ?sandbox: bool,
@@ -4,6 +4,7 @@ module Sentdm
4
4
  def create: (
5
5
  ?display_name: String,
6
6
  ?endpoint_url: String,
7
+ ?event_filters: ::Hash[Symbol, ::Array[String]]?,
7
8
  ?event_types: ::Array[String],
8
9
  ?retry_count: Integer,
9
10
  ?sandbox: bool,
@@ -23,6 +24,7 @@ module Sentdm
23
24
  String id,
24
25
  ?display_name: String,
25
26
  ?endpoint_url: String,
27
+ ?event_filters: ::Hash[Symbol, ::Array[String]]?,
26
28
  ?event_types: ::Array[String],
27
29
  ?retry_count: Integer,
28
30
  ?sandbox: bool,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sentdm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sent
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-13 00:00:00.000000000 Z
11
+ date: 2026-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi