trycourier 4.4.0 → 4.5.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 (160) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/README.md +1 -1
  4. data/lib/trycourier/internal/transport/pooled_net_requester.rb +12 -10
  5. data/lib/trycourier/internal/type/base_model.rb +4 -3
  6. data/lib/trycourier/internal/type/union.rb +7 -9
  7. data/lib/trycourier/internal/util.rb +7 -2
  8. data/lib/trycourier/models/airship_profile.rb +21 -0
  9. data/lib/trycourier/models/airship_profile_audience.rb +15 -0
  10. data/lib/trycourier/models/audience.rb +3 -3
  11. data/lib/trycourier/models/audience_filter.rb +52 -0
  12. data/lib/trycourier/models/audience_recipient.rb +36 -0
  13. data/lib/trycourier/models/audience_update_params.rb +3 -3
  14. data/lib/trycourier/models/device_type.rb +7 -0
  15. data/lib/trycourier/models/discord.rb +16 -0
  16. data/lib/trycourier/models/expo.rb +16 -0
  17. data/lib/trycourier/models/filter.rb +8 -51
  18. data/lib/trycourier/models/filter_config.rb +8 -51
  19. data/lib/trycourier/models/intercom.rb +21 -0
  20. data/lib/trycourier/models/intercom_recipient.rb +15 -0
  21. data/lib/trycourier/models/list_filter.rb +52 -0
  22. data/lib/trycourier/models/list_pattern_recipient.rb +23 -0
  23. data/lib/trycourier/models/list_recipient.rb +29 -0
  24. data/lib/trycourier/models/ms_teams.rb +22 -0
  25. data/lib/trycourier/models/ms_teams_base_properties.rb +21 -0
  26. data/lib/trycourier/models/ms_teams_recipient.rb +17 -0
  27. data/lib/trycourier/models/multiple_tokens.rb +15 -0
  28. data/lib/trycourier/models/nested_filter_config.rb +49 -0
  29. data/lib/trycourier/models/pagerduty.rb +33 -0
  30. data/lib/trycourier/models/pagerduty_recipient.rb +17 -0
  31. data/lib/trycourier/models/send_direct_message.rb +15 -0
  32. data/lib/trycourier/models/send_message_params.rb +24 -7
  33. data/lib/trycourier/models/send_to_channel.rb +15 -0
  34. data/lib/trycourier/models/send_to_ms_teams_channel_id.rb +27 -0
  35. data/lib/trycourier/models/send_to_ms_teams_channel_name.rb +33 -0
  36. data/lib/trycourier/models/send_to_ms_teams_conversation_id.rb +27 -0
  37. data/lib/trycourier/models/send_to_ms_teams_email.rb +27 -0
  38. data/lib/trycourier/models/send_to_ms_teams_user_id.rb +27 -0
  39. data/lib/trycourier/models/send_to_slack_channel.rb +21 -0
  40. data/lib/trycourier/models/send_to_slack_email.rb +21 -0
  41. data/lib/trycourier/models/send_to_slack_user_id.rb +21 -0
  42. data/lib/trycourier/models/single_filter_config.rb +62 -0
  43. data/lib/trycourier/models/slack.rb +18 -0
  44. data/lib/trycourier/models/slack_base_properties.rb +15 -0
  45. data/lib/trycourier/models/slack_recipient.rb +17 -0
  46. data/lib/trycourier/models/token.rb +15 -0
  47. data/lib/trycourier/models/user_profile.rb +274 -0
  48. data/lib/trycourier/models/user_profile_firebase_token.rb +19 -0
  49. data/lib/trycourier/models/webhook_auth_mode.rb +16 -0
  50. data/lib/trycourier/models/webhook_authentication.rb +40 -0
  51. data/lib/trycourier/models/webhook_method.rb +15 -0
  52. data/lib/trycourier/models/webhook_profile.rb +53 -0
  53. data/lib/trycourier/models/webhook_profile_type.rb +15 -0
  54. data/lib/trycourier/models/webhook_recipient.rb +17 -0
  55. data/lib/trycourier/models.rb +84 -2
  56. data/lib/trycourier/resources/audiences.rb +1 -1
  57. data/lib/trycourier/version.rb +1 -1
  58. data/lib/trycourier.rb +42 -1
  59. data/rbi/trycourier/models/airship_profile.rbi +41 -0
  60. data/rbi/trycourier/models/airship_profile_audience.rbi +26 -0
  61. data/rbi/trycourier/models/audience.rbi +8 -7
  62. data/rbi/trycourier/models/audience_filter.rbi +88 -0
  63. data/rbi/trycourier/models/audience_recipient.rbi +52 -0
  64. data/rbi/trycourier/models/audience_update_params.rbi +25 -7
  65. data/rbi/trycourier/models/device_type.rbi +7 -0
  66. data/rbi/trycourier/models/discord.rbi +18 -0
  67. data/rbi/trycourier/models/expo.rbi +16 -0
  68. data/rbi/trycourier/models/filter.rbi +8 -78
  69. data/rbi/trycourier/models/filter_config.rbi +8 -83
  70. data/rbi/trycourier/models/intercom.rbi +35 -0
  71. data/rbi/trycourier/models/intercom_recipient.rbi +23 -0
  72. data/rbi/trycourier/models/list_filter.rbi +86 -0
  73. data/rbi/trycourier/models/list_pattern_recipient.rbi +39 -0
  74. data/rbi/trycourier/models/list_recipient.rbi +44 -0
  75. data/rbi/trycourier/models/ms_teams.rbi +24 -0
  76. data/rbi/trycourier/models/ms_teams_base_properties.rbi +31 -0
  77. data/rbi/trycourier/models/ms_teams_recipient.rbi +58 -0
  78. data/rbi/trycourier/models/multiple_tokens.rbi +27 -0
  79. data/rbi/trycourier/models/nested_filter_config.rbi +104 -0
  80. data/rbi/trycourier/models/pagerduty.rbi +53 -0
  81. data/rbi/trycourier/models/pagerduty_recipient.rbi +31 -0
  82. data/rbi/trycourier/models/send_direct_message.rbi +23 -0
  83. data/rbi/trycourier/models/send_message_params.rbi +34 -10
  84. data/rbi/trycourier/models/send_to_channel.rbi +23 -0
  85. data/rbi/trycourier/models/send_to_ms_teams_channel_id.rbi +42 -0
  86. data/rbi/trycourier/models/send_to_ms_teams_channel_name.rbi +51 -0
  87. data/rbi/trycourier/models/send_to_ms_teams_conversation_id.rbi +42 -0
  88. data/rbi/trycourier/models/send_to_ms_teams_email.rbi +37 -0
  89. data/rbi/trycourier/models/send_to_ms_teams_user_id.rbi +37 -0
  90. data/rbi/trycourier/models/send_to_slack_channel.rbi +28 -0
  91. data/rbi/trycourier/models/send_to_slack_email.rbi +28 -0
  92. data/rbi/trycourier/models/send_to_slack_user_id.rbi +28 -0
  93. data/rbi/trycourier/models/single_filter_config.rbi +116 -0
  94. data/rbi/trycourier/models/slack.rbi +22 -0
  95. data/rbi/trycourier/models/slack_base_properties.rbi +23 -0
  96. data/rbi/trycourier/models/slack_recipient.rbi +52 -0
  97. data/rbi/trycourier/models/token.rbi +21 -0
  98. data/rbi/trycourier/models/user_profile.rbi +377 -0
  99. data/rbi/trycourier/models/user_profile_firebase_token.rbi +25 -0
  100. data/rbi/trycourier/models/webhook_auth_mode.rbi +22 -0
  101. data/rbi/trycourier/models/webhook_authentication.rbi +64 -0
  102. data/rbi/trycourier/models/webhook_method.rbi +21 -0
  103. data/rbi/trycourier/models/webhook_profile.rbi +80 -0
  104. data/rbi/trycourier/models/webhook_profile_type.rbi +22 -0
  105. data/rbi/trycourier/models/webhook_recipient.rbi +31 -0
  106. data/rbi/trycourier/models.rbi +84 -2
  107. data/rbi/trycourier/resources/audiences.rbi +7 -1
  108. data/sig/trycourier/models/airship_profile.rbs +25 -0
  109. data/sig/trycourier/models/airship_profile_audience.rbs +13 -0
  110. data/sig/trycourier/models/audience.rbs +4 -4
  111. data/sig/trycourier/models/audience_filter.rbs +50 -0
  112. data/sig/trycourier/models/audience_recipient.rbs +30 -0
  113. data/sig/trycourier/models/audience_update_params.rbs +8 -4
  114. data/sig/trycourier/models/device_type.rbs +5 -0
  115. data/sig/trycourier/models/discord.rbs +11 -0
  116. data/sig/trycourier/models/expo.rbs +11 -0
  117. data/sig/trycourier/models/filter.rbs +4 -61
  118. data/sig/trycourier/models/filter_config.rbs +4 -61
  119. data/sig/trycourier/models/intercom.rbs +15 -0
  120. data/sig/trycourier/models/intercom_recipient.rbs +13 -0
  121. data/sig/trycourier/models/list_filter.rbs +50 -0
  122. data/sig/trycourier/models/list_pattern_recipient.rbs +19 -0
  123. data/sig/trycourier/models/list_recipient.rbs +30 -0
  124. data/sig/trycourier/models/ms_teams.rbs +16 -0
  125. data/sig/trycourier/models/ms_teams_base_properties.rbs +15 -0
  126. data/sig/trycourier/models/ms_teams_recipient.rbs +13 -0
  127. data/sig/trycourier/models/multiple_tokens.rbs +13 -0
  128. data/sig/trycourier/models/nested_filter_config.rbs +64 -0
  129. data/sig/trycourier/models/pagerduty.rbs +35 -0
  130. data/sig/trycourier/models/pagerduty_recipient.rbs +13 -0
  131. data/sig/trycourier/models/send_direct_message.rbs +13 -0
  132. data/sig/trycourier/models/send_message_params.rbs +9 -3
  133. data/sig/trycourier/models/send_to_channel.rbs +13 -0
  134. data/sig/trycourier/models/send_to_ms_teams_channel_id.rbs +26 -0
  135. data/sig/trycourier/models/send_to_ms_teams_channel_name.rbs +35 -0
  136. data/sig/trycourier/models/send_to_ms_teams_conversation_id.rbs +26 -0
  137. data/sig/trycourier/models/send_to_ms_teams_email.rbs +22 -0
  138. data/sig/trycourier/models/send_to_ms_teams_user_id.rbs +26 -0
  139. data/sig/trycourier/models/send_to_slack_channel.rbs +15 -0
  140. data/sig/trycourier/models/send_to_slack_email.rbs +15 -0
  141. data/sig/trycourier/models/send_to_slack_user_id.rbs +15 -0
  142. data/sig/trycourier/models/single_filter_config.rbs +69 -0
  143. data/sig/trycourier/models/slack.rbs +14 -0
  144. data/sig/trycourier/models/slack_base_properties.rbs +13 -0
  145. data/sig/trycourier/models/slack_recipient.rbs +13 -0
  146. data/sig/trycourier/models/token.rbs +13 -0
  147. data/sig/trycourier/models/user_profile.rbs +212 -0
  148. data/sig/trycourier/models/user_profile_firebase_token.rbs +13 -0
  149. data/sig/trycourier/models/webhook_auth_mode.rbs +15 -0
  150. data/sig/trycourier/models/webhook_authentication.rbs +35 -0
  151. data/sig/trycourier/models/webhook_method.rbs +14 -0
  152. data/sig/trycourier/models/webhook_profile.rbs +40 -0
  153. data/sig/trycourier/models/webhook_profile_type.rbs +14 -0
  154. data/sig/trycourier/models/webhook_recipient.rbs +13 -0
  155. data/sig/trycourier/models.rbs +86 -4
  156. data/sig/trycourier/resources/audiences.rbs +1 -1
  157. metadata +128 -5
  158. data/lib/trycourier/models/recipient.rb +0 -113
  159. data/rbi/trycourier/models/recipient.rbi +0 -161
  160. data/sig/trycourier/models/recipient.rbs +0 -92
data/lib/trycourier.rb CHANGED
@@ -61,13 +61,17 @@ require_relative "trycourier/models/elemental_channel_node"
61
61
  require_relative "trycourier/models/message_details"
62
62
  require_relative "trycourier/models/base_template_tenant_association"
63
63
  require_relative "trycourier/models/users/user_token"
64
+ require_relative "trycourier/models/airship_profile"
65
+ require_relative "trycourier/models/airship_profile_audience"
64
66
  require_relative "trycourier/models/alignment"
65
67
  require_relative "trycourier/models/audience"
66
68
  require_relative "trycourier/models/audience_delete_params"
69
+ require_relative "trycourier/models/audience_filter"
67
70
  require_relative "trycourier/models/audience_list_members_params"
68
71
  require_relative "trycourier/models/audience_list_members_response"
69
72
  require_relative "trycourier/models/audience_list_params"
70
73
  require_relative "trycourier/models/audience_list_response"
74
+ require_relative "trycourier/models/audience_recipient"
71
75
  require_relative "trycourier/models/audience_retrieve_params"
72
76
  require_relative "trycourier/models/audience_update_params"
73
77
  require_relative "trycourier/models/audience_update_response"
@@ -105,6 +109,8 @@ require_relative "trycourier/models/channel_classification"
105
109
  require_relative "trycourier/models/channel_preference"
106
110
  require_relative "trycourier/models/check"
107
111
  require_relative "trycourier/models/default_preferences"
112
+ require_relative "trycourier/models/device_type"
113
+ require_relative "trycourier/models/discord"
108
114
  require_relative "trycourier/models/elemental_action_node_with_type"
109
115
  require_relative "trycourier/models/elemental_channel_node_with_type"
110
116
  require_relative "trycourier/models/elemental_content"
@@ -118,15 +124,21 @@ require_relative "trycourier/models/elemental_text_node_with_type"
118
124
  require_relative "trycourier/models/email_footer"
119
125
  require_relative "trycourier/models/email_head"
120
126
  require_relative "trycourier/models/email_header"
127
+ require_relative "trycourier/models/expo"
121
128
  require_relative "trycourier/models/filter"
122
129
  require_relative "trycourier/models/filter_config"
123
130
  require_relative "trycourier/models/icons"
124
131
  require_relative "trycourier/models/inbound_bulk_message"
125
132
  require_relative "trycourier/models/inbound_track_event_params"
126
133
  require_relative "trycourier/models/inbound_track_event_response"
134
+ require_relative "trycourier/models/intercom"
135
+ require_relative "trycourier/models/intercom_recipient"
127
136
  require_relative "trycourier/models/list_delete_params"
137
+ require_relative "trycourier/models/list_filter"
128
138
  require_relative "trycourier/models/list_list_params"
129
139
  require_relative "trycourier/models/list_list_response"
140
+ require_relative "trycourier/models/list_pattern_recipient"
141
+ require_relative "trycourier/models/list_recipient"
130
142
  require_relative "trycourier/models/list_restore_params"
131
143
  require_relative "trycourier/models/list_retrieve_params"
132
144
  require_relative "trycourier/models/lists/subscription_add_params"
@@ -149,6 +161,11 @@ require_relative "trycourier/models/message_retrieve_params"
149
161
  require_relative "trycourier/models/message_retrieve_response"
150
162
  require_relative "trycourier/models/message_routing"
151
163
  require_relative "trycourier/models/message_routing_channel"
164
+ require_relative "trycourier/models/ms_teams"
165
+ require_relative "trycourier/models/ms_teams_base_properties"
166
+ require_relative "trycourier/models/ms_teams_recipient"
167
+ require_relative "trycourier/models/multiple_tokens"
168
+ require_relative "trycourier/models/nested_filter_config"
152
169
  require_relative "trycourier/models/notification_get_content"
153
170
  require_relative "trycourier/models/notification_list_params"
154
171
  require_relative "trycourier/models/notification_list_response"
@@ -160,6 +177,8 @@ require_relative "trycourier/models/notifications/check_list_response"
160
177
  require_relative "trycourier/models/notifications/check_update_params"
161
178
  require_relative "trycourier/models/notifications/check_update_response"
162
179
  require_relative "trycourier/models/notifications/draft_retrieve_content_params"
180
+ require_relative "trycourier/models/pagerduty"
181
+ require_relative "trycourier/models/pagerduty_recipient"
163
182
  require_relative "trycourier/models/paging"
164
183
  require_relative "trycourier/models/preference"
165
184
  require_relative "trycourier/models/preference_status"
@@ -178,12 +197,25 @@ require_relative "trycourier/models/profiles/list_subscribe_params"
178
197
  require_relative "trycourier/models/profiles/list_subscribe_response"
179
198
  require_relative "trycourier/models/profile_update_params"
180
199
  require_relative "trycourier/models/put_subscriptions_recipient"
181
- require_relative "trycourier/models/recipient"
182
200
  require_relative "trycourier/models/recipient_preferences"
183
201
  require_relative "trycourier/models/request_archive_params"
184
202
  require_relative "trycourier/models/rule"
203
+ require_relative "trycourier/models/send_direct_message"
185
204
  require_relative "trycourier/models/send_message_params"
186
205
  require_relative "trycourier/models/send_message_response"
206
+ require_relative "trycourier/models/send_to_channel"
207
+ require_relative "trycourier/models/send_to_ms_teams_channel_id"
208
+ require_relative "trycourier/models/send_to_ms_teams_channel_name"
209
+ require_relative "trycourier/models/send_to_ms_teams_conversation_id"
210
+ require_relative "trycourier/models/send_to_ms_teams_email"
211
+ require_relative "trycourier/models/send_to_ms_teams_user_id"
212
+ require_relative "trycourier/models/send_to_slack_channel"
213
+ require_relative "trycourier/models/send_to_slack_email"
214
+ require_relative "trycourier/models/send_to_slack_user_id"
215
+ require_relative "trycourier/models/single_filter_config"
216
+ require_relative "trycourier/models/slack"
217
+ require_relative "trycourier/models/slack_base_properties"
218
+ require_relative "trycourier/models/slack_recipient"
187
219
  require_relative "trycourier/models/subscribe_to_lists_request_item"
188
220
  require_relative "trycourier/models/subscription_list"
189
221
  require_relative "trycourier/models/tenant"
@@ -201,9 +233,12 @@ require_relative "trycourier/models/tenants/template_list_response"
201
233
  require_relative "trycourier/models/tenants/template_retrieve_params"
202
234
  require_relative "trycourier/models/tenant_update_params"
203
235
  require_relative "trycourier/models/text_style"
236
+ require_relative "trycourier/models/token"
204
237
  require_relative "trycourier/models/translation_retrieve_params"
205
238
  require_relative "trycourier/models/translation_retrieve_response"
206
239
  require_relative "trycourier/models/translation_update_params"
240
+ require_relative "trycourier/models/user_profile"
241
+ require_relative "trycourier/models/user_profile_firebase_token"
207
242
  require_relative "trycourier/models/user_recipient"
208
243
  require_relative "trycourier/models/users/preference_retrieve_params"
209
244
  require_relative "trycourier/models/users/preference_retrieve_response"
@@ -227,6 +262,12 @@ require_relative "trycourier/models/users/token_retrieve_response"
227
262
  require_relative "trycourier/models/users/token_update_params"
228
263
  require_relative "trycourier/models/users/topic_preference"
229
264
  require_relative "trycourier/models/utm"
265
+ require_relative "trycourier/models/webhook_authentication"
266
+ require_relative "trycourier/models/webhook_auth_mode"
267
+ require_relative "trycourier/models/webhook_method"
268
+ require_relative "trycourier/models/webhook_profile"
269
+ require_relative "trycourier/models/webhook_profile_type"
270
+ require_relative "trycourier/models/webhook_recipient"
230
271
  require_relative "trycourier/models/widget_background"
231
272
  require_relative "trycourier/models"
232
273
  require_relative "trycourier/resources/audiences"
@@ -0,0 +1,41 @@
1
+ # typed: strong
2
+
3
+ module Trycourier
4
+ module Models
5
+ class AirshipProfile < Trycourier::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Trycourier::AirshipProfile, Trycourier::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(Trycourier::AirshipProfileAudience) }
12
+ attr_reader :audience
13
+
14
+ sig { params(audience: Trycourier::AirshipProfileAudience::OrHash).void }
15
+ attr_writer :audience
16
+
17
+ sig { returns(T::Array[String]) }
18
+ attr_accessor :device_types
19
+
20
+ sig do
21
+ params(
22
+ audience: Trycourier::AirshipProfileAudience::OrHash,
23
+ device_types: T::Array[String]
24
+ ).returns(T.attached_class)
25
+ end
26
+ def self.new(audience:, device_types:)
27
+ end
28
+
29
+ sig do
30
+ override.returns(
31
+ {
32
+ audience: Trycourier::AirshipProfileAudience,
33
+ device_types: T::Array[String]
34
+ }
35
+ )
36
+ end
37
+ def to_hash
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,26 @@
1
+ # typed: strong
2
+
3
+ module Trycourier
4
+ module Models
5
+ class AirshipProfileAudience < Trycourier::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Trycourier::AirshipProfileAudience,
10
+ Trycourier::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :named_user
16
+
17
+ sig { params(named_user: String).returns(T.attached_class) }
18
+ def self.new(named_user:)
19
+ end
20
+
21
+ sig { override.returns({ named_user: String }) }
22
+ def to_hash
23
+ end
24
+ end
25
+ end
26
+ end
@@ -20,11 +20,8 @@ module Trycourier
20
20
  attr_accessor :description
21
21
 
22
22
  # A single filter to use for filtering
23
- sig { returns(Trycourier::Filter) }
24
- attr_reader :filter
25
-
26
- sig { params(filter: Trycourier::Filter::OrHash).void }
27
- attr_writer :filter
23
+ sig { returns(Trycourier::Filter::Variants) }
24
+ attr_accessor :filter
28
25
 
29
26
  # The name of the audience
30
27
  sig { returns(String) }
@@ -38,7 +35,11 @@ module Trycourier
38
35
  id: String,
39
36
  created_at: String,
40
37
  description: String,
41
- filter: Trycourier::Filter::OrHash,
38
+ filter:
39
+ T.any(
40
+ Trycourier::SingleFilterConfig::OrHash,
41
+ Trycourier::NestedFilterConfig::OrHash
42
+ ),
42
43
  name: String,
43
44
  updated_at: String
44
45
  ).returns(T.attached_class)
@@ -63,7 +64,7 @@ module Trycourier
63
64
  id: String,
64
65
  created_at: String,
65
66
  description: String,
66
- filter: Trycourier::Filter,
67
+ filter: Trycourier::Filter::Variants,
67
68
  name: String,
68
69
  updated_at: String
69
70
  }
@@ -0,0 +1,88 @@
1
+ # typed: strong
2
+
3
+ module Trycourier
4
+ module Models
5
+ class AudienceFilter < Trycourier::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Trycourier::AudienceFilter, Trycourier::Internal::AnyHash)
9
+ end
10
+
11
+ # Send to users only if they are member of the account
12
+ sig { returns(Trycourier::AudienceFilter::Operator::OrSymbol) }
13
+ attr_accessor :operator
14
+
15
+ sig { returns(Trycourier::AudienceFilter::Path::OrSymbol) }
16
+ attr_accessor :path
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :value
20
+
21
+ sig do
22
+ params(
23
+ operator: Trycourier::AudienceFilter::Operator::OrSymbol,
24
+ path: Trycourier::AudienceFilter::Path::OrSymbol,
25
+ value: String
26
+ ).returns(T.attached_class)
27
+ end
28
+ def self.new(
29
+ # Send to users only if they are member of the account
30
+ operator:,
31
+ path:,
32
+ value:
33
+ )
34
+ end
35
+
36
+ sig do
37
+ override.returns(
38
+ {
39
+ operator: Trycourier::AudienceFilter::Operator::OrSymbol,
40
+ path: Trycourier::AudienceFilter::Path::OrSymbol,
41
+ value: String
42
+ }
43
+ )
44
+ end
45
+ def to_hash
46
+ end
47
+
48
+ # Send to users only if they are member of the account
49
+ module Operator
50
+ extend Trycourier::Internal::Type::Enum
51
+
52
+ TaggedSymbol =
53
+ T.type_alias { T.all(Symbol, Trycourier::AudienceFilter::Operator) }
54
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
55
+
56
+ MEMBER_OF =
57
+ T.let(:MEMBER_OF, Trycourier::AudienceFilter::Operator::TaggedSymbol)
58
+
59
+ sig do
60
+ override.returns(
61
+ T::Array[Trycourier::AudienceFilter::Operator::TaggedSymbol]
62
+ )
63
+ end
64
+ def self.values
65
+ end
66
+ end
67
+
68
+ module Path
69
+ extend Trycourier::Internal::Type::Enum
70
+
71
+ TaggedSymbol =
72
+ T.type_alias { T.all(Symbol, Trycourier::AudienceFilter::Path) }
73
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
74
+
75
+ ACCOUNT_ID =
76
+ T.let(:account_id, Trycourier::AudienceFilter::Path::TaggedSymbol)
77
+
78
+ sig do
79
+ override.returns(
80
+ T::Array[Trycourier::AudienceFilter::Path::TaggedSymbol]
81
+ )
82
+ end
83
+ def self.values
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,52 @@
1
+ # typed: strong
2
+
3
+ module Trycourier
4
+ module Models
5
+ class AudienceRecipient < Trycourier::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Trycourier::AudienceRecipient, Trycourier::Internal::AnyHash)
9
+ end
10
+
11
+ # A unique identifier associated with an Audience. A message will be sent to each
12
+ # user in the audience.
13
+ sig { returns(String) }
14
+ attr_accessor :audience_id
15
+
16
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
17
+ attr_accessor :data
18
+
19
+ sig { returns(T.nilable(T::Array[Trycourier::AudienceFilter])) }
20
+ attr_accessor :filters
21
+
22
+ # Send to all users in an audience
23
+ sig do
24
+ params(
25
+ audience_id: String,
26
+ data: T.nilable(T::Hash[Symbol, T.anything]),
27
+ filters: T.nilable(T::Array[Trycourier::AudienceFilter::OrHash])
28
+ ).returns(T.attached_class)
29
+ end
30
+ def self.new(
31
+ # A unique identifier associated with an Audience. A message will be sent to each
32
+ # user in the audience.
33
+ audience_id:,
34
+ data: nil,
35
+ filters: nil
36
+ )
37
+ end
38
+
39
+ sig do
40
+ override.returns(
41
+ {
42
+ audience_id: String,
43
+ data: T.nilable(T::Hash[Symbol, T.anything]),
44
+ filters: T.nilable(T::Array[Trycourier::AudienceFilter])
45
+ }
46
+ )
47
+ end
48
+ def to_hash
49
+ end
50
+ end
51
+ end
52
+ end
@@ -16,11 +16,17 @@ module Trycourier
16
16
  attr_accessor :description
17
17
 
18
18
  # A single filter to use for filtering
19
- sig { returns(T.nilable(Trycourier::Filter)) }
20
- attr_reader :filter
21
-
22
- sig { params(filter: T.nilable(Trycourier::Filter::OrHash)).void }
23
- attr_writer :filter
19
+ sig do
20
+ returns(
21
+ T.nilable(
22
+ T.any(
23
+ Trycourier::SingleFilterConfig,
24
+ Trycourier::NestedFilterConfig
25
+ )
26
+ )
27
+ )
28
+ end
29
+ attr_accessor :filter
24
30
 
25
31
  # The name of the audience
26
32
  sig { returns(T.nilable(String)) }
@@ -29,7 +35,13 @@ module Trycourier
29
35
  sig do
30
36
  params(
31
37
  description: T.nilable(String),
32
- filter: T.nilable(Trycourier::Filter::OrHash),
38
+ filter:
39
+ T.nilable(
40
+ T.any(
41
+ Trycourier::SingleFilterConfig::OrHash,
42
+ Trycourier::NestedFilterConfig::OrHash
43
+ )
44
+ ),
33
45
  name: T.nilable(String),
34
46
  request_options: Trycourier::RequestOptions::OrHash
35
47
  ).returns(T.attached_class)
@@ -49,7 +61,13 @@ module Trycourier
49
61
  override.returns(
50
62
  {
51
63
  description: T.nilable(String),
52
- filter: T.nilable(Trycourier::Filter),
64
+ filter:
65
+ T.nilable(
66
+ T.any(
67
+ Trycourier::SingleFilterConfig,
68
+ Trycourier::NestedFilterConfig
69
+ )
70
+ ),
53
71
  name: T.nilable(String),
54
72
  request_options: Trycourier::RequestOptions
55
73
  }
@@ -0,0 +1,7 @@
1
+ # typed: strong
2
+
3
+ module Trycourier
4
+ module Models
5
+ DeviceType = String
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ # typed: strong
2
+
3
+ module Trycourier
4
+ module Models
5
+ module Discord
6
+ extend Trycourier::Internal::Type::Union
7
+
8
+ Variants =
9
+ T.type_alias do
10
+ T.any(Trycourier::SendToChannel, Trycourier::SendDirectMessage)
11
+ end
12
+
13
+ sig { override.returns(T::Array[Trycourier::Discord::Variants]) }
14
+ def self.variants
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ # typed: strong
2
+
3
+ module Trycourier
4
+ module Models
5
+ module Expo
6
+ extend Trycourier::Internal::Type::Union
7
+
8
+ Variants =
9
+ T.type_alias { T.any(Trycourier::Token, Trycourier::MultipleTokens) }
10
+
11
+ sig { override.returns(T::Array[Trycourier::Expo::Variants]) }
12
+ def self.variants
13
+ end
14
+ end
15
+ end
16
+ end
@@ -2,87 +2,17 @@
2
2
 
3
3
  module Trycourier
4
4
  module Models
5
- class Filter < Trycourier::Internal::Type::BaseModel
6
- OrHash =
5
+ # A single filter to use for filtering
6
+ module Filter
7
+ extend Trycourier::Internal::Type::Union
8
+
9
+ Variants =
7
10
  T.type_alias do
8
- T.any(Trycourier::Filter, Trycourier::Internal::AnyHash)
11
+ T.any(Trycourier::SingleFilterConfig, Trycourier::NestedFilterConfig)
9
12
  end
10
13
 
11
- # The operator to use for filtering
12
- sig { returns(Trycourier::Filter::Operator::OrSymbol) }
13
- attr_accessor :operator
14
-
15
- # The attribe name from profile whose value will be operated against the filter
16
- # value
17
- sig { returns(String) }
18
- attr_accessor :path
19
-
20
- # The value to use for filtering
21
- sig { returns(String) }
22
- attr_accessor :value
23
-
24
- sig do
25
- params(
26
- operator: Trycourier::Filter::Operator::OrSymbol,
27
- path: String,
28
- value: String
29
- ).returns(T.attached_class)
30
- end
31
- def self.new(
32
- # The operator to use for filtering
33
- operator:,
34
- # The attribe name from profile whose value will be operated against the filter
35
- # value
36
- path:,
37
- # The value to use for filtering
38
- value:
39
- )
40
- end
41
-
42
- sig do
43
- override.returns(
44
- {
45
- operator: Trycourier::Filter::Operator::OrSymbol,
46
- path: String,
47
- value: String
48
- }
49
- )
50
- end
51
- def to_hash
52
- end
53
-
54
- # The operator to use for filtering
55
- module Operator
56
- extend Trycourier::Internal::Type::Enum
57
-
58
- TaggedSymbol =
59
- T.type_alias { T.all(Symbol, Trycourier::Filter::Operator) }
60
- OrSymbol = T.type_alias { T.any(Symbol, String) }
61
-
62
- ENDS_WITH =
63
- T.let(:ENDS_WITH, Trycourier::Filter::Operator::TaggedSymbol)
64
- EQ = T.let(:EQ, Trycourier::Filter::Operator::TaggedSymbol)
65
- EXISTS = T.let(:EXISTS, Trycourier::Filter::Operator::TaggedSymbol)
66
- GT = T.let(:GT, Trycourier::Filter::Operator::TaggedSymbol)
67
- GTE = T.let(:GTE, Trycourier::Filter::Operator::TaggedSymbol)
68
- INCLUDES = T.let(:INCLUDES, Trycourier::Filter::Operator::TaggedSymbol)
69
- IS_AFTER = T.let(:IS_AFTER, Trycourier::Filter::Operator::TaggedSymbol)
70
- IS_BEFORE =
71
- T.let(:IS_BEFORE, Trycourier::Filter::Operator::TaggedSymbol)
72
- LT = T.let(:LT, Trycourier::Filter::Operator::TaggedSymbol)
73
- LTE = T.let(:LTE, Trycourier::Filter::Operator::TaggedSymbol)
74
- NEQ = T.let(:NEQ, Trycourier::Filter::Operator::TaggedSymbol)
75
- OMIT = T.let(:OMIT, Trycourier::Filter::Operator::TaggedSymbol)
76
- STARTS_WITH =
77
- T.let(:STARTS_WITH, Trycourier::Filter::Operator::TaggedSymbol)
78
- AND = T.let(:AND, Trycourier::Filter::Operator::TaggedSymbol)
79
- OR = T.let(:OR, Trycourier::Filter::Operator::TaggedSymbol)
80
-
81
- sig do
82
- override.returns(T::Array[Trycourier::Filter::Operator::TaggedSymbol])
83
- end
84
- def self.values
85
- end
14
+ sig { override.returns(T::Array[Trycourier::Filter::Variants]) }
15
+ def self.variants
86
16
  end
87
17
  end
88
18
  end
@@ -2,92 +2,17 @@
2
2
 
3
3
  module Trycourier
4
4
  module Models
5
- class FilterConfig < Trycourier::Internal::Type::BaseModel
6
- OrHash =
5
+ # A single filter to use for filtering
6
+ module FilterConfig
7
+ extend Trycourier::Internal::Type::Union
8
+
9
+ Variants =
7
10
  T.type_alias do
8
- T.any(Trycourier::FilterConfig, Trycourier::Internal::AnyHash)
11
+ T.any(Trycourier::SingleFilterConfig, Trycourier::NestedFilterConfig)
9
12
  end
10
13
 
11
- # The operator to use for filtering
12
- sig { returns(Trycourier::FilterConfig::Operator::OrSymbol) }
13
- attr_accessor :operator
14
-
15
- # The attribe name from profile whose value will be operated against the filter
16
- # value
17
- sig { returns(String) }
18
- attr_accessor :path
19
-
20
- # The value to use for filtering
21
- sig { returns(String) }
22
- attr_accessor :value
23
-
24
- sig do
25
- params(
26
- operator: Trycourier::FilterConfig::Operator::OrSymbol,
27
- path: String,
28
- value: String
29
- ).returns(T.attached_class)
30
- end
31
- def self.new(
32
- # The operator to use for filtering
33
- operator:,
34
- # The attribe name from profile whose value will be operated against the filter
35
- # value
36
- path:,
37
- # The value to use for filtering
38
- value:
39
- )
40
- end
41
-
42
- sig do
43
- override.returns(
44
- {
45
- operator: Trycourier::FilterConfig::Operator::OrSymbol,
46
- path: String,
47
- value: String
48
- }
49
- )
50
- end
51
- def to_hash
52
- end
53
-
54
- # The operator to use for filtering
55
- module Operator
56
- extend Trycourier::Internal::Type::Enum
57
-
58
- TaggedSymbol =
59
- T.type_alias { T.all(Symbol, Trycourier::FilterConfig::Operator) }
60
- OrSymbol = T.type_alias { T.any(Symbol, String) }
61
-
62
- ENDS_WITH =
63
- T.let(:ENDS_WITH, Trycourier::FilterConfig::Operator::TaggedSymbol)
64
- EQ = T.let(:EQ, Trycourier::FilterConfig::Operator::TaggedSymbol)
65
- EXISTS =
66
- T.let(:EXISTS, Trycourier::FilterConfig::Operator::TaggedSymbol)
67
- GT = T.let(:GT, Trycourier::FilterConfig::Operator::TaggedSymbol)
68
- GTE = T.let(:GTE, Trycourier::FilterConfig::Operator::TaggedSymbol)
69
- INCLUDES =
70
- T.let(:INCLUDES, Trycourier::FilterConfig::Operator::TaggedSymbol)
71
- IS_AFTER =
72
- T.let(:IS_AFTER, Trycourier::FilterConfig::Operator::TaggedSymbol)
73
- IS_BEFORE =
74
- T.let(:IS_BEFORE, Trycourier::FilterConfig::Operator::TaggedSymbol)
75
- LT = T.let(:LT, Trycourier::FilterConfig::Operator::TaggedSymbol)
76
- LTE = T.let(:LTE, Trycourier::FilterConfig::Operator::TaggedSymbol)
77
- NEQ = T.let(:NEQ, Trycourier::FilterConfig::Operator::TaggedSymbol)
78
- OMIT = T.let(:OMIT, Trycourier::FilterConfig::Operator::TaggedSymbol)
79
- STARTS_WITH =
80
- T.let(:STARTS_WITH, Trycourier::FilterConfig::Operator::TaggedSymbol)
81
- AND = T.let(:AND, Trycourier::FilterConfig::Operator::TaggedSymbol)
82
- OR = T.let(:OR, Trycourier::FilterConfig::Operator::TaggedSymbol)
83
-
84
- sig do
85
- override.returns(
86
- T::Array[Trycourier::FilterConfig::Operator::TaggedSymbol]
87
- )
88
- end
89
- def self.values
90
- end
14
+ sig { override.returns(T::Array[Trycourier::FilterConfig::Variants]) }
15
+ def self.variants
91
16
  end
92
17
  end
93
18
  end