notiflows 0.0.1

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 (231) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +305 -0
  3. data/SECURITY.md +27 -0
  4. data/lib/notiflows/client.rb +117 -0
  5. data/lib/notiflows/errors.rb +228 -0
  6. data/lib/notiflows/file_part.rb +58 -0
  7. data/lib/notiflows/internal/cursor_page.rb +100 -0
  8. data/lib/notiflows/internal/transport/base_client.rb +573 -0
  9. data/lib/notiflows/internal/transport/pooled_net_requester.rb +210 -0
  10. data/lib/notiflows/internal/type/array_of.rb +168 -0
  11. data/lib/notiflows/internal/type/base_model.rb +531 -0
  12. data/lib/notiflows/internal/type/base_page.rb +55 -0
  13. data/lib/notiflows/internal/type/boolean.rb +77 -0
  14. data/lib/notiflows/internal/type/converter.rb +327 -0
  15. data/lib/notiflows/internal/type/enum.rb +131 -0
  16. data/lib/notiflows/internal/type/file_input.rb +111 -0
  17. data/lib/notiflows/internal/type/hash_of.rb +188 -0
  18. data/lib/notiflows/internal/type/request_parameters.rb +42 -0
  19. data/lib/notiflows/internal/type/union.rb +237 -0
  20. data/lib/notiflows/internal/type/unknown.rb +81 -0
  21. data/lib/notiflows/internal/util.rb +920 -0
  22. data/lib/notiflows/internal.rb +20 -0
  23. data/lib/notiflows/models/delivery.rb +189 -0
  24. data/lib/notiflows/models/delivery_list_params.rb +78 -0
  25. data/lib/notiflows/models/delivery_retrieve_params.rb +14 -0
  26. data/lib/notiflows/models/notification.rb +151 -0
  27. data/lib/notiflows/models/notification_list_deliveries_params.rb +78 -0
  28. data/lib/notiflows/models/notification_list_params.rb +70 -0
  29. data/lib/notiflows/models/notification_retrieve_params.rb +14 -0
  30. data/lib/notiflows/models/notiflow_run_params.rb +197 -0
  31. data/lib/notiflows/models/notiflow_run_response.rb +19 -0
  32. data/lib/notiflows/models/topic.rb +27 -0
  33. data/lib/notiflows/models/topic_delete_params.rb +14 -0
  34. data/lib/notiflows/models/topic_list_params.rb +38 -0
  35. data/lib/notiflows/models/topic_retrieve_params.rb +14 -0
  36. data/lib/notiflows/models/topics/bulk_operation_response.rb +51 -0
  37. data/lib/notiflows/models/topics/bulk_subscribe_request.rb +20 -0
  38. data/lib/notiflows/models/topics/subscription_list_params.rb +56 -0
  39. data/lib/notiflows/models/topics/subscription_subscribe_bulk_params.rb +16 -0
  40. data/lib/notiflows/models/topics/subscription_unsubscribe_bulk_params.rb +16 -0
  41. data/lib/notiflows/models/user.rb +111 -0
  42. data/lib/notiflows/models/user_delete_params.rb +14 -0
  43. data/lib/notiflows/models/user_list_params.rb +54 -0
  44. data/lib/notiflows/models/user_retrieve_params.rb +14 -0
  45. data/lib/notiflows/models/user_upsert_params.rb +122 -0
  46. data/lib/notiflows/models/users/channel_setting_delete_params.rb +22 -0
  47. data/lib/notiflows/models/users/channel_setting_retrieve_params.rb +22 -0
  48. data/lib/notiflows/models/users/channel_setting_update_params.rb +45 -0
  49. data/lib/notiflows/models/users/channel_settings.rb +91 -0
  50. data/lib/notiflows/models/users/delivery_list_params.rb +80 -0
  51. data/lib/notiflows/models/users/delivery_retrieve_params.rb +22 -0
  52. data/lib/notiflows/models/users/mobile_push_settings.rb +20 -0
  53. data/lib/notiflows/models/users/notification_list_params.rb +72 -0
  54. data/lib/notiflows/models/users/notification_retrieve_params.rb +22 -0
  55. data/lib/notiflows/models/users/preference_retrieve_params.rb +16 -0
  56. data/lib/notiflows/models/users/preference_update_params.rb +16 -0
  57. data/lib/notiflows/models/users/preferences.rb +116 -0
  58. data/lib/notiflows/models/users/slack_settings.rb +29 -0
  59. data/lib/notiflows/models/users/subscription.rb +45 -0
  60. data/lib/notiflows/models/users/subscription_list_params.rb +56 -0
  61. data/lib/notiflows/models/users/subscription_retrieve_params.rb +22 -0
  62. data/lib/notiflows/models/users/subscription_subscribe_params.rb +28 -0
  63. data/lib/notiflows/models/users/subscription_unsubscribe_params.rb +22 -0
  64. data/lib/notiflows/models/users/update_preferences_request.rb +45 -0
  65. data/lib/notiflows/models.rb +79 -0
  66. data/lib/notiflows/request_options.rb +77 -0
  67. data/lib/notiflows/resources/deliveries.rb +77 -0
  68. data/lib/notiflows/resources/notifications.rb +112 -0
  69. data/lib/notiflows/resources/notiflows.rb +60 -0
  70. data/lib/notiflows/resources/topics/subscriptions.rb +106 -0
  71. data/lib/notiflows/resources/topics.rb +91 -0
  72. data/lib/notiflows/resources/users/channel_settings.rb +132 -0
  73. data/lib/notiflows/resources/users/deliveries.rb +82 -0
  74. data/lib/notiflows/resources/users/notifications.rb +80 -0
  75. data/lib/notiflows/resources/users/preferences.rb +86 -0
  76. data/lib/notiflows/resources/users/subscriptions.rb +135 -0
  77. data/lib/notiflows/resources/users.rb +167 -0
  78. data/lib/notiflows/version.rb +5 -0
  79. data/lib/notiflows.rb +109 -0
  80. data/manifest.yaml +17 -0
  81. data/rbi/notiflows/client.rbi +82 -0
  82. data/rbi/notiflows/errors.rbi +205 -0
  83. data/rbi/notiflows/file_part.rbi +37 -0
  84. data/rbi/notiflows/internal/cursor_page.rbi +37 -0
  85. data/rbi/notiflows/internal/transport/base_client.rbi +298 -0
  86. data/rbi/notiflows/internal/transport/pooled_net_requester.rbi +83 -0
  87. data/rbi/notiflows/internal/type/array_of.rbi +104 -0
  88. data/rbi/notiflows/internal/type/base_model.rbi +308 -0
  89. data/rbi/notiflows/internal/type/base_page.rbi +42 -0
  90. data/rbi/notiflows/internal/type/boolean.rbi +58 -0
  91. data/rbi/notiflows/internal/type/converter.rbi +216 -0
  92. data/rbi/notiflows/internal/type/enum.rbi +82 -0
  93. data/rbi/notiflows/internal/type/file_input.rbi +59 -0
  94. data/rbi/notiflows/internal/type/hash_of.rbi +104 -0
  95. data/rbi/notiflows/internal/type/request_parameters.rbi +29 -0
  96. data/rbi/notiflows/internal/type/union.rbi +128 -0
  97. data/rbi/notiflows/internal/type/unknown.rbi +58 -0
  98. data/rbi/notiflows/internal/util.rbi +487 -0
  99. data/rbi/notiflows/internal.rbi +18 -0
  100. data/rbi/notiflows/models/delivery.rbi +226 -0
  101. data/rbi/notiflows/models/delivery_list_params.rbi +123 -0
  102. data/rbi/notiflows/models/delivery_retrieve_params.rbi +27 -0
  103. data/rbi/notiflows/models/notification.rbi +190 -0
  104. data/rbi/notiflows/models/notification_list_deliveries_params.rbi +126 -0
  105. data/rbi/notiflows/models/notification_list_params.rbi +112 -0
  106. data/rbi/notiflows/models/notification_retrieve_params.rbi +30 -0
  107. data/rbi/notiflows/models/notiflow_run_params.rbi +320 -0
  108. data/rbi/notiflows/models/notiflow_run_response.rbi +31 -0
  109. data/rbi/notiflows/models/topic.rbi +32 -0
  110. data/rbi/notiflows/models/topic_delete_params.rbi +27 -0
  111. data/rbi/notiflows/models/topic_list_params.rbi +68 -0
  112. data/rbi/notiflows/models/topic_retrieve_params.rbi +27 -0
  113. data/rbi/notiflows/models/topics/bulk_operation_response.rbi +93 -0
  114. data/rbi/notiflows/models/topics/bulk_subscribe_request.rbi +35 -0
  115. data/rbi/notiflows/models/topics/subscription_list_params.rbi +95 -0
  116. data/rbi/notiflows/models/topics/subscription_subscribe_bulk_params.rbi +32 -0
  117. data/rbi/notiflows/models/topics/subscription_unsubscribe_bulk_params.rbi +32 -0
  118. data/rbi/notiflows/models/user.rbi +126 -0
  119. data/rbi/notiflows/models/user_delete_params.rbi +27 -0
  120. data/rbi/notiflows/models/user_list_params.rbi +90 -0
  121. data/rbi/notiflows/models/user_retrieve_params.rbi +27 -0
  122. data/rbi/notiflows/models/user_upsert_params.rbi +203 -0
  123. data/rbi/notiflows/models/users/channel_setting_delete_params.rbi +43 -0
  124. data/rbi/notiflows/models/users/channel_setting_retrieve_params.rbi +43 -0
  125. data/rbi/notiflows/models/users/channel_setting_update_params.rbi +92 -0
  126. data/rbi/notiflows/models/users/channel_settings.rbi +156 -0
  127. data/rbi/notiflows/models/users/delivery_list_params.rbi +128 -0
  128. data/rbi/notiflows/models/users/delivery_retrieve_params.rbi +43 -0
  129. data/rbi/notiflows/models/users/mobile_push_settings.rbi +35 -0
  130. data/rbi/notiflows/models/users/notification_list_params.rbi +117 -0
  131. data/rbi/notiflows/models/users/notification_retrieve_params.rbi +43 -0
  132. data/rbi/notiflows/models/users/preference_retrieve_params.rbi +32 -0
  133. data/rbi/notiflows/models/users/preference_update_params.rbi +34 -0
  134. data/rbi/notiflows/models/users/preferences.rbi +241 -0
  135. data/rbi/notiflows/models/users/slack_settings.rbi +49 -0
  136. data/rbi/notiflows/models/users/subscription.rbi +64 -0
  137. data/rbi/notiflows/models/users/subscription_list_params.rbi +95 -0
  138. data/rbi/notiflows/models/users/subscription_retrieve_params.rbi +43 -0
  139. data/rbi/notiflows/models/users/subscription_subscribe_params.rbi +47 -0
  140. data/rbi/notiflows/models/users/subscription_unsubscribe_params.rbi +43 -0
  141. data/rbi/notiflows/models/users/update_preferences_request.rbi +124 -0
  142. data/rbi/notiflows/models.rbi +42 -0
  143. data/rbi/notiflows/request_options.rbi +59 -0
  144. data/rbi/notiflows/resources/deliveries.rbi +67 -0
  145. data/rbi/notiflows/resources/notifications.rbi +100 -0
  146. data/rbi/notiflows/resources/notiflows.rbi +52 -0
  147. data/rbi/notiflows/resources/topics/subscriptions.rbi +88 -0
  148. data/rbi/notiflows/resources/topics.rbi +69 -0
  149. data/rbi/notiflows/resources/users/channel_settings.rbi +104 -0
  150. data/rbi/notiflows/resources/users/deliveries.rbi +69 -0
  151. data/rbi/notiflows/resources/users/notifications.rbi +66 -0
  152. data/rbi/notiflows/resources/users/preferences.rbi +76 -0
  153. data/rbi/notiflows/resources/users/subscriptions.rbi +102 -0
  154. data/rbi/notiflows/resources/users.rbi +147 -0
  155. data/rbi/notiflows/version.rbi +5 -0
  156. data/sig/notiflows/client.rbs +41 -0
  157. data/sig/notiflows/errors.rbs +117 -0
  158. data/sig/notiflows/file_part.rbs +21 -0
  159. data/sig/notiflows/internal/cursor_page.rbs +22 -0
  160. data/sig/notiflows/internal/transport/base_client.rbs +133 -0
  161. data/sig/notiflows/internal/transport/pooled_net_requester.rbs +48 -0
  162. data/sig/notiflows/internal/type/array_of.rbs +48 -0
  163. data/sig/notiflows/internal/type/base_model.rbs +102 -0
  164. data/sig/notiflows/internal/type/base_page.rbs +24 -0
  165. data/sig/notiflows/internal/type/boolean.rbs +26 -0
  166. data/sig/notiflows/internal/type/converter.rbs +79 -0
  167. data/sig/notiflows/internal/type/enum.rbs +32 -0
  168. data/sig/notiflows/internal/type/file_input.rbs +25 -0
  169. data/sig/notiflows/internal/type/hash_of.rbs +48 -0
  170. data/sig/notiflows/internal/type/request_parameters.rbs +19 -0
  171. data/sig/notiflows/internal/type/union.rbs +52 -0
  172. data/sig/notiflows/internal/type/unknown.rbs +26 -0
  173. data/sig/notiflows/internal/util.rbs +185 -0
  174. data/sig/notiflows/internal.rbs +9 -0
  175. data/sig/notiflows/models/delivery.rbs +130 -0
  176. data/sig/notiflows/models/delivery_list_params.rbs +77 -0
  177. data/sig/notiflows/models/delivery_retrieve_params.rbs +15 -0
  178. data/sig/notiflows/models/notification.rbs +104 -0
  179. data/sig/notiflows/models/notification_list_deliveries_params.rbs +77 -0
  180. data/sig/notiflows/models/notification_list_params.rbs +70 -0
  181. data/sig/notiflows/models/notification_retrieve_params.rbs +15 -0
  182. data/sig/notiflows/models/notiflow_run_params.rbs +199 -0
  183. data/sig/notiflows/models/notiflow_run_response.rbs +13 -0
  184. data/sig/notiflows/models/topic.rbs +15 -0
  185. data/sig/notiflows/models/topic_delete_params.rbs +15 -0
  186. data/sig/notiflows/models/topic_list_params.rbs +38 -0
  187. data/sig/notiflows/models/topic_retrieve_params.rbs +15 -0
  188. data/sig/notiflows/models/topics/bulk_operation_response.rbs +39 -0
  189. data/sig/notiflows/models/topics/bulk_subscribe_request.rbs +15 -0
  190. data/sig/notiflows/models/topics/subscription_list_params.rbs +58 -0
  191. data/sig/notiflows/models/topics/subscription_subscribe_bulk_params.rbs +17 -0
  192. data/sig/notiflows/models/topics/subscription_unsubscribe_bulk_params.rbs +17 -0
  193. data/sig/notiflows/models/user.rbs +75 -0
  194. data/sig/notiflows/models/user_delete_params.rbs +15 -0
  195. data/sig/notiflows/models/user_list_params.rbs +56 -0
  196. data/sig/notiflows/models/user_retrieve_params.rbs +15 -0
  197. data/sig/notiflows/models/user_upsert_params.rbs +112 -0
  198. data/sig/notiflows/models/users/channel_setting_delete_params.rbs +26 -0
  199. data/sig/notiflows/models/users/channel_setting_retrieve_params.rbs +26 -0
  200. data/sig/notiflows/models/users/channel_setting_update_params.rbs +42 -0
  201. data/sig/notiflows/models/users/channel_settings.rbs +68 -0
  202. data/sig/notiflows/models/users/delivery_list_params.rbs +79 -0
  203. data/sig/notiflows/models/users/delivery_retrieve_params.rbs +26 -0
  204. data/sig/notiflows/models/users/mobile_push_settings.rbs +15 -0
  205. data/sig/notiflows/models/users/notification_list_params.rbs +72 -0
  206. data/sig/notiflows/models/users/notification_retrieve_params.rbs +26 -0
  207. data/sig/notiflows/models/users/preference_retrieve_params.rbs +17 -0
  208. data/sig/notiflows/models/users/preference_update_params.rbs +17 -0
  209. data/sig/notiflows/models/users/preferences.rbs +118 -0
  210. data/sig/notiflows/models/users/slack_settings.rbs +24 -0
  211. data/sig/notiflows/models/users/subscription.rbs +32 -0
  212. data/sig/notiflows/models/users/subscription_list_params.rbs +58 -0
  213. data/sig/notiflows/models/users/subscription_retrieve_params.rbs +26 -0
  214. data/sig/notiflows/models/users/subscription_subscribe_params.rbs +25 -0
  215. data/sig/notiflows/models/users/subscription_unsubscribe_params.rbs +26 -0
  216. data/sig/notiflows/models/users/update_preferences_request.rbs +52 -0
  217. data/sig/notiflows/models.rbs +39 -0
  218. data/sig/notiflows/request_options.rbs +34 -0
  219. data/sig/notiflows/resources/deliveries.rbs +24 -0
  220. data/sig/notiflows/resources/notifications.rbs +36 -0
  221. data/sig/notiflows/resources/notiflows.rbs +16 -0
  222. data/sig/notiflows/resources/topics/subscriptions.rbs +31 -0
  223. data/sig/notiflows/resources/topics.rbs +23 -0
  224. data/sig/notiflows/resources/users/channel_settings.rbs +28 -0
  225. data/sig/notiflows/resources/users/deliveries.rbs +28 -0
  226. data/sig/notiflows/resources/users/notifications.rbs +27 -0
  227. data/sig/notiflows/resources/users/preferences.rbs +21 -0
  228. data/sig/notiflows/resources/users/subscriptions.rbs +37 -0
  229. data/sig/notiflows/resources/users.rbs +52 -0
  230. data/sig/notiflows/version.rbs +3 -0
  231. metadata +302 -0
@@ -0,0 +1,226 @@
1
+ # typed: strong
2
+
3
+ module Notiflows
4
+ module Models
5
+ class Delivery < Notiflows::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Notiflows::Delivery, Notiflows::Internal::AnyHash)
9
+ end
10
+
11
+ # Delivery ID
12
+ sig { returns(String) }
13
+ attr_accessor :id
14
+
15
+ # Type of channel used for this delivery
16
+ sig { returns(Notiflows::Delivery::ChannelType::TaggedSymbol) }
17
+ attr_accessor :channel_type
18
+
19
+ # When the delivery was created
20
+ sig { returns(Time) }
21
+ attr_accessor :created_at
22
+
23
+ # ID of the parent notification
24
+ sig { returns(String) }
25
+ attr_accessor :notification_id
26
+
27
+ # ID of the notiflow
28
+ sig { returns(String) }
29
+ attr_accessor :notiflow_id
30
+
31
+ # Internal ID of the recipient
32
+ sig { returns(String) }
33
+ attr_accessor :recipient_id
34
+
35
+ # Delivery status:
36
+ #
37
+ # - `pending`: Queued for sending
38
+ # - `sent`: Successfully sent to the provider
39
+ # - `failed`: Delivery failed
40
+ sig { returns(Notiflows::Delivery::Status::TaggedSymbol) }
41
+ attr_accessor :status
42
+
43
+ # When the delivery was last updated
44
+ sig { returns(Time) }
45
+ attr_accessor :updated_at
46
+
47
+ # Internal ID of the actor
48
+ sig { returns(T.nilable(String)) }
49
+ attr_accessor :actor_id
50
+
51
+ # When the recipient archived it
52
+ sig { returns(T.nilable(Time)) }
53
+ attr_accessor :archived_at
54
+
55
+ # ID of the channel used for delivery
56
+ sig { returns(T.nilable(String)) }
57
+ attr_accessor :channel_id
58
+
59
+ # When the recipient clicked/interacted
60
+ sig { returns(T.nilable(Time)) }
61
+ attr_accessor :clicked_at
62
+
63
+ # Rendered notification content (varies by channel type)
64
+ sig { returns(T.nilable(T.anything)) }
65
+ attr_reader :data
66
+
67
+ sig { params(data: T.anything).void }
68
+ attr_writer :data
69
+
70
+ # When the recipient marked it as read
71
+ sig { returns(T.nilable(Time)) }
72
+ attr_accessor :read_at
73
+
74
+ # When the recipient saw the notification
75
+ sig { returns(T.nilable(Time)) }
76
+ attr_accessor :seen_at
77
+
78
+ # When the delivery was sent to the provider
79
+ sig { returns(T.nilable(Time)) }
80
+ attr_accessor :sent_at
81
+
82
+ # Topic name if triggered via topic
83
+ sig { returns(T.nilable(String)) }
84
+ attr_accessor :topic
85
+
86
+ # A single delivery attempt through a specific channel
87
+ sig do
88
+ params(
89
+ id: String,
90
+ channel_type: Notiflows::Delivery::ChannelType::OrSymbol,
91
+ created_at: Time,
92
+ notification_id: String,
93
+ notiflow_id: String,
94
+ recipient_id: String,
95
+ status: Notiflows::Delivery::Status::OrSymbol,
96
+ updated_at: Time,
97
+ actor_id: T.nilable(String),
98
+ archived_at: T.nilable(Time),
99
+ channel_id: T.nilable(String),
100
+ clicked_at: T.nilable(Time),
101
+ data: T.anything,
102
+ read_at: T.nilable(Time),
103
+ seen_at: T.nilable(Time),
104
+ sent_at: T.nilable(Time),
105
+ topic: T.nilable(String)
106
+ ).returns(T.attached_class)
107
+ end
108
+ def self.new(
109
+ # Delivery ID
110
+ id:,
111
+ # Type of channel used for this delivery
112
+ channel_type:,
113
+ # When the delivery was created
114
+ created_at:,
115
+ # ID of the parent notification
116
+ notification_id:,
117
+ # ID of the notiflow
118
+ notiflow_id:,
119
+ # Internal ID of the recipient
120
+ recipient_id:,
121
+ # Delivery status:
122
+ #
123
+ # - `pending`: Queued for sending
124
+ # - `sent`: Successfully sent to the provider
125
+ # - `failed`: Delivery failed
126
+ status:,
127
+ # When the delivery was last updated
128
+ updated_at:,
129
+ # Internal ID of the actor
130
+ actor_id: nil,
131
+ # When the recipient archived it
132
+ archived_at: nil,
133
+ # ID of the channel used for delivery
134
+ channel_id: nil,
135
+ # When the recipient clicked/interacted
136
+ clicked_at: nil,
137
+ # Rendered notification content (varies by channel type)
138
+ data: nil,
139
+ # When the recipient marked it as read
140
+ read_at: nil,
141
+ # When the recipient saw the notification
142
+ seen_at: nil,
143
+ # When the delivery was sent to the provider
144
+ sent_at: nil,
145
+ # Topic name if triggered via topic
146
+ topic: nil
147
+ )
148
+ end
149
+
150
+ sig do
151
+ override.returns(
152
+ {
153
+ id: String,
154
+ channel_type: Notiflows::Delivery::ChannelType::TaggedSymbol,
155
+ created_at: Time,
156
+ notification_id: String,
157
+ notiflow_id: String,
158
+ recipient_id: String,
159
+ status: Notiflows::Delivery::Status::TaggedSymbol,
160
+ updated_at: Time,
161
+ actor_id: T.nilable(String),
162
+ archived_at: T.nilable(Time),
163
+ channel_id: T.nilable(String),
164
+ clicked_at: T.nilable(Time),
165
+ data: T.anything,
166
+ read_at: T.nilable(Time),
167
+ seen_at: T.nilable(Time),
168
+ sent_at: T.nilable(Time),
169
+ topic: T.nilable(String)
170
+ }
171
+ )
172
+ end
173
+ def to_hash
174
+ end
175
+
176
+ # Type of channel used for this delivery
177
+ module ChannelType
178
+ extend Notiflows::Internal::Type::Enum
179
+
180
+ TaggedSymbol =
181
+ T.type_alias { T.all(Symbol, Notiflows::Delivery::ChannelType) }
182
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
183
+
184
+ IN_APP = T.let(:in_app, Notiflows::Delivery::ChannelType::TaggedSymbol)
185
+ EMAIL = T.let(:email, Notiflows::Delivery::ChannelType::TaggedSymbol)
186
+ SMS = T.let(:sms, Notiflows::Delivery::ChannelType::TaggedSymbol)
187
+ CHAT = T.let(:chat, Notiflows::Delivery::ChannelType::TaggedSymbol)
188
+ WEB_PUSH =
189
+ T.let(:web_push, Notiflows::Delivery::ChannelType::TaggedSymbol)
190
+ MOBILE_PUSH =
191
+ T.let(:mobile_push, Notiflows::Delivery::ChannelType::TaggedSymbol)
192
+
193
+ sig do
194
+ override.returns(
195
+ T::Array[Notiflows::Delivery::ChannelType::TaggedSymbol]
196
+ )
197
+ end
198
+ def self.values
199
+ end
200
+ end
201
+
202
+ # Delivery status:
203
+ #
204
+ # - `pending`: Queued for sending
205
+ # - `sent`: Successfully sent to the provider
206
+ # - `failed`: Delivery failed
207
+ module Status
208
+ extend Notiflows::Internal::Type::Enum
209
+
210
+ TaggedSymbol =
211
+ T.type_alias { T.all(Symbol, Notiflows::Delivery::Status) }
212
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
213
+
214
+ PENDING = T.let(:pending, Notiflows::Delivery::Status::TaggedSymbol)
215
+ SENT = T.let(:sent, Notiflows::Delivery::Status::TaggedSymbol)
216
+ FAILED = T.let(:failed, Notiflows::Delivery::Status::TaggedSymbol)
217
+
218
+ sig do
219
+ override.returns(T::Array[Notiflows::Delivery::Status::TaggedSymbol])
220
+ end
221
+ def self.values
222
+ end
223
+ end
224
+ end
225
+ end
226
+ end
@@ -0,0 +1,123 @@
1
+ # typed: strong
2
+
3
+ module Notiflows
4
+ module Models
5
+ class DeliveryListParams < Notiflows::Internal::Type::BaseModel
6
+ extend Notiflows::Internal::Type::RequestParameters::Converter
7
+ include Notiflows::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Notiflows::DeliveryListParams, Notiflows::Internal::AnyHash)
12
+ end
13
+
14
+ # Cursor for fetching the next page
15
+ sig { returns(T.nilable(String)) }
16
+ attr_reader :after
17
+
18
+ sig { params(after: String).void }
19
+ attr_writer :after
20
+
21
+ # Cursor for fetching the previous page
22
+ sig { returns(T.nilable(String)) }
23
+ attr_reader :before
24
+
25
+ sig { params(before: String).void }
26
+ attr_writer :before
27
+
28
+ # Filter by channel ID (UUID)
29
+ sig { returns(T.nilable(String)) }
30
+ attr_reader :channel_id
31
+
32
+ sig { params(channel_id: String).void }
33
+ attr_writer :channel_id
34
+
35
+ # Filter by created after (ISO 8601 datetime)
36
+ sig { returns(T.nilable(String)) }
37
+ attr_reader :created_after
38
+
39
+ sig { params(created_after: String).void }
40
+ attr_writer :created_after
41
+
42
+ # Filter by created before (ISO 8601 datetime)
43
+ sig { returns(T.nilable(String)) }
44
+ attr_reader :created_before
45
+
46
+ sig { params(created_before: String).void }
47
+ attr_writer :created_before
48
+
49
+ # Number of items per page (default: 25, max: 1000)
50
+ sig { returns(T.nilable(Integer)) }
51
+ attr_reader :limit
52
+
53
+ sig { params(limit: Integer).void }
54
+ attr_writer :limit
55
+
56
+ # Filter by status (pending, sent, failed)
57
+ sig { returns(T.nilable(String)) }
58
+ attr_reader :status
59
+
60
+ sig { params(status: String).void }
61
+ attr_writer :status
62
+
63
+ # Filter by topic name
64
+ sig { returns(T.nilable(String)) }
65
+ attr_reader :topic
66
+
67
+ sig { params(topic: String).void }
68
+ attr_writer :topic
69
+
70
+ sig do
71
+ params(
72
+ after: String,
73
+ before: String,
74
+ channel_id: String,
75
+ created_after: String,
76
+ created_before: String,
77
+ limit: Integer,
78
+ status: String,
79
+ topic: String,
80
+ request_options: Notiflows::RequestOptions::OrHash
81
+ ).returns(T.attached_class)
82
+ end
83
+ def self.new(
84
+ # Cursor for fetching the next page
85
+ after: nil,
86
+ # Cursor for fetching the previous page
87
+ before: nil,
88
+ # Filter by channel ID (UUID)
89
+ channel_id: nil,
90
+ # Filter by created after (ISO 8601 datetime)
91
+ created_after: nil,
92
+ # Filter by created before (ISO 8601 datetime)
93
+ created_before: nil,
94
+ # Number of items per page (default: 25, max: 1000)
95
+ limit: nil,
96
+ # Filter by status (pending, sent, failed)
97
+ status: nil,
98
+ # Filter by topic name
99
+ topic: nil,
100
+ request_options: {}
101
+ )
102
+ end
103
+
104
+ sig do
105
+ override.returns(
106
+ {
107
+ after: String,
108
+ before: String,
109
+ channel_id: String,
110
+ created_after: String,
111
+ created_before: String,
112
+ limit: Integer,
113
+ status: String,
114
+ topic: String,
115
+ request_options: Notiflows::RequestOptions
116
+ }
117
+ )
118
+ end
119
+ def to_hash
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,27 @@
1
+ # typed: strong
2
+
3
+ module Notiflows
4
+ module Models
5
+ class DeliveryRetrieveParams < Notiflows::Internal::Type::BaseModel
6
+ extend Notiflows::Internal::Type::RequestParameters::Converter
7
+ include Notiflows::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Notiflows::DeliveryRetrieveParams, Notiflows::Internal::AnyHash)
12
+ end
13
+
14
+ sig do
15
+ params(request_options: Notiflows::RequestOptions::OrHash).returns(
16
+ T.attached_class
17
+ )
18
+ end
19
+ def self.new(request_options: {})
20
+ end
21
+
22
+ sig { override.returns({ request_options: Notiflows::RequestOptions }) }
23
+ def to_hash
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,190 @@
1
+ # typed: strong
2
+
3
+ module Notiflows
4
+ module Models
5
+ class Notification < Notiflows::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Notiflows::Notification, Notiflows::Internal::AnyHash)
9
+ end
10
+
11
+ # Notification ID
12
+ sig { returns(String) }
13
+ attr_accessor :id
14
+
15
+ # When the notification was created
16
+ sig { returns(Time) }
17
+ attr_accessor :created_at
18
+
19
+ # Template variables passed when running the notiflow
20
+ sig { returns(T.anything) }
21
+ attr_accessor :data
22
+
23
+ # ID of the notiflow that generated this notification
24
+ sig { returns(String) }
25
+ attr_accessor :notiflow_id
26
+
27
+ # ID of the specific notiflow run
28
+ sig { returns(String) }
29
+ attr_accessor :notiflow_run_id
30
+
31
+ # Internal ID of the recipient user
32
+ sig { returns(String) }
33
+ attr_accessor :recipient_id
34
+
35
+ # Notification processing status:
36
+ #
37
+ # - `pending`: Queued for processing
38
+ # - `processing`: Currently being processed
39
+ # - `processed`: Successfully processed (deliveries created)
40
+ # - `failed`: Processing failed
41
+ sig { returns(Notiflows::Notification::Status::TaggedSymbol) }
42
+ attr_accessor :status
43
+
44
+ # When the notification was last updated
45
+ sig { returns(Time) }
46
+ attr_accessor :updated_at
47
+
48
+ # A user (recipient) in your project
49
+ sig { returns(T.nilable(Notiflows::User)) }
50
+ attr_reader :actor
51
+
52
+ sig { params(actor: T.nilable(Notiflows::User::OrHash)).void }
53
+ attr_writer :actor
54
+
55
+ # Internal ID of the actor (user who triggered the notification)
56
+ sig { returns(T.nilable(String)) }
57
+ attr_accessor :actor_id
58
+
59
+ # Delivery attempts for this notification (when expanded)
60
+ sig { returns(T.nilable(T::Array[Notiflows::Delivery])) }
61
+ attr_reader :deliveries
62
+
63
+ sig { params(deliveries: T::Array[Notiflows::Delivery::OrHash]).void }
64
+ attr_writer :deliveries
65
+
66
+ # When the notification was processed
67
+ sig { returns(T.nilable(Time)) }
68
+ attr_accessor :processed_at
69
+
70
+ # A user (recipient) in your project
71
+ sig { returns(T.nilable(Notiflows::User)) }
72
+ attr_reader :recipient
73
+
74
+ sig { params(recipient: Notiflows::User::OrHash).void }
75
+ attr_writer :recipient
76
+
77
+ # Topic name if triggered via topic
78
+ sig { returns(T.nilable(String)) }
79
+ attr_accessor :topic
80
+
81
+ # A notification sent to a recipient through a notiflow run
82
+ sig do
83
+ params(
84
+ id: String,
85
+ created_at: Time,
86
+ data: T.anything,
87
+ notiflow_id: String,
88
+ notiflow_run_id: String,
89
+ recipient_id: String,
90
+ status: Notiflows::Notification::Status::OrSymbol,
91
+ updated_at: Time,
92
+ actor: T.nilable(Notiflows::User::OrHash),
93
+ actor_id: T.nilable(String),
94
+ deliveries: T::Array[Notiflows::Delivery::OrHash],
95
+ processed_at: T.nilable(Time),
96
+ recipient: Notiflows::User::OrHash,
97
+ topic: T.nilable(String)
98
+ ).returns(T.attached_class)
99
+ end
100
+ def self.new(
101
+ # Notification ID
102
+ id:,
103
+ # When the notification was created
104
+ created_at:,
105
+ # Template variables passed when running the notiflow
106
+ data:,
107
+ # ID of the notiflow that generated this notification
108
+ notiflow_id:,
109
+ # ID of the specific notiflow run
110
+ notiflow_run_id:,
111
+ # Internal ID of the recipient user
112
+ recipient_id:,
113
+ # Notification processing status:
114
+ #
115
+ # - `pending`: Queued for processing
116
+ # - `processing`: Currently being processed
117
+ # - `processed`: Successfully processed (deliveries created)
118
+ # - `failed`: Processing failed
119
+ status:,
120
+ # When the notification was last updated
121
+ updated_at:,
122
+ # A user (recipient) in your project
123
+ actor: nil,
124
+ # Internal ID of the actor (user who triggered the notification)
125
+ actor_id: nil,
126
+ # Delivery attempts for this notification (when expanded)
127
+ deliveries: nil,
128
+ # When the notification was processed
129
+ processed_at: nil,
130
+ # A user (recipient) in your project
131
+ recipient: nil,
132
+ # Topic name if triggered via topic
133
+ topic: nil
134
+ )
135
+ end
136
+
137
+ sig do
138
+ override.returns(
139
+ {
140
+ id: String,
141
+ created_at: Time,
142
+ data: T.anything,
143
+ notiflow_id: String,
144
+ notiflow_run_id: String,
145
+ recipient_id: String,
146
+ status: Notiflows::Notification::Status::TaggedSymbol,
147
+ updated_at: Time,
148
+ actor: T.nilable(Notiflows::User),
149
+ actor_id: T.nilable(String),
150
+ deliveries: T::Array[Notiflows::Delivery],
151
+ processed_at: T.nilable(Time),
152
+ recipient: Notiflows::User,
153
+ topic: T.nilable(String)
154
+ }
155
+ )
156
+ end
157
+ def to_hash
158
+ end
159
+
160
+ # Notification processing status:
161
+ #
162
+ # - `pending`: Queued for processing
163
+ # - `processing`: Currently being processed
164
+ # - `processed`: Successfully processed (deliveries created)
165
+ # - `failed`: Processing failed
166
+ module Status
167
+ extend Notiflows::Internal::Type::Enum
168
+
169
+ TaggedSymbol =
170
+ T.type_alias { T.all(Symbol, Notiflows::Notification::Status) }
171
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
172
+
173
+ PENDING = T.let(:pending, Notiflows::Notification::Status::TaggedSymbol)
174
+ PROCESSING =
175
+ T.let(:processing, Notiflows::Notification::Status::TaggedSymbol)
176
+ PROCESSED =
177
+ T.let(:processed, Notiflows::Notification::Status::TaggedSymbol)
178
+ FAILED = T.let(:failed, Notiflows::Notification::Status::TaggedSymbol)
179
+
180
+ sig do
181
+ override.returns(
182
+ T::Array[Notiflows::Notification::Status::TaggedSymbol]
183
+ )
184
+ end
185
+ def self.values
186
+ end
187
+ end
188
+ end
189
+ end
190
+ end
@@ -0,0 +1,126 @@
1
+ # typed: strong
2
+
3
+ module Notiflows
4
+ module Models
5
+ class NotificationListDeliveriesParams < Notiflows::Internal::Type::BaseModel
6
+ extend Notiflows::Internal::Type::RequestParameters::Converter
7
+ include Notiflows::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Notiflows::NotificationListDeliveriesParams,
13
+ Notiflows::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Cursor for fetching the next page
18
+ sig { returns(T.nilable(String)) }
19
+ attr_reader :after
20
+
21
+ sig { params(after: String).void }
22
+ attr_writer :after
23
+
24
+ # Cursor for fetching the previous page
25
+ sig { returns(T.nilable(String)) }
26
+ attr_reader :before
27
+
28
+ sig { params(before: String).void }
29
+ attr_writer :before
30
+
31
+ # Filter by channel ID (UUID)
32
+ sig { returns(T.nilable(String)) }
33
+ attr_reader :channel_id
34
+
35
+ sig { params(channel_id: String).void }
36
+ attr_writer :channel_id
37
+
38
+ # Filter by created after (ISO 8601 datetime)
39
+ sig { returns(T.nilable(String)) }
40
+ attr_reader :created_after
41
+
42
+ sig { params(created_after: String).void }
43
+ attr_writer :created_after
44
+
45
+ # Filter by created before (ISO 8601 datetime)
46
+ sig { returns(T.nilable(String)) }
47
+ attr_reader :created_before
48
+
49
+ sig { params(created_before: String).void }
50
+ attr_writer :created_before
51
+
52
+ # Number of items per page (default: 25, max: 1000)
53
+ sig { returns(T.nilable(Integer)) }
54
+ attr_reader :limit
55
+
56
+ sig { params(limit: Integer).void }
57
+ attr_writer :limit
58
+
59
+ # Filter by status (pending, sent, failed)
60
+ sig { returns(T.nilable(String)) }
61
+ attr_reader :status
62
+
63
+ sig { params(status: String).void }
64
+ attr_writer :status
65
+
66
+ # Filter by topic name
67
+ sig { returns(T.nilable(String)) }
68
+ attr_reader :topic
69
+
70
+ sig { params(topic: String).void }
71
+ attr_writer :topic
72
+
73
+ sig do
74
+ params(
75
+ after: String,
76
+ before: String,
77
+ channel_id: String,
78
+ created_after: String,
79
+ created_before: String,
80
+ limit: Integer,
81
+ status: String,
82
+ topic: String,
83
+ request_options: Notiflows::RequestOptions::OrHash
84
+ ).returns(T.attached_class)
85
+ end
86
+ def self.new(
87
+ # Cursor for fetching the next page
88
+ after: nil,
89
+ # Cursor for fetching the previous page
90
+ before: nil,
91
+ # Filter by channel ID (UUID)
92
+ channel_id: nil,
93
+ # Filter by created after (ISO 8601 datetime)
94
+ created_after: nil,
95
+ # Filter by created before (ISO 8601 datetime)
96
+ created_before: nil,
97
+ # Number of items per page (default: 25, max: 1000)
98
+ limit: nil,
99
+ # Filter by status (pending, sent, failed)
100
+ status: nil,
101
+ # Filter by topic name
102
+ topic: nil,
103
+ request_options: {}
104
+ )
105
+ end
106
+
107
+ sig do
108
+ override.returns(
109
+ {
110
+ after: String,
111
+ before: String,
112
+ channel_id: String,
113
+ created_after: String,
114
+ created_before: String,
115
+ limit: Integer,
116
+ status: String,
117
+ topic: String,
118
+ request_options: Notiflows::RequestOptions
119
+ }
120
+ )
121
+ end
122
+ def to_hash
123
+ end
124
+ end
125
+ end
126
+ end