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,122 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ # @see Notiflows::Resources::Users#upsert
6
+ class UserUpsertParams < Notiflows::Internal::Type::BaseModel
7
+ extend Notiflows::Internal::Type::RequestParameters::Converter
8
+ include Notiflows::Internal::Type::RequestParameters
9
+
10
+ # @!attribute external_id
11
+ # Your system's unique identifier for this user. Required for creating new users.
12
+ #
13
+ # @return [String]
14
+ required :external_id, String
15
+
16
+ # @!attribute avatar
17
+ # URL to user's avatar image (must start with http:// or https://)
18
+ #
19
+ # @return [String, nil]
20
+ optional :avatar, String
21
+
22
+ # @!attribute channel_settings
23
+ # Initial channel settings (e.g., device tokens for push)
24
+ #
25
+ # @return [Array<Notiflows::Models::UserUpsertParams::ChannelSetting>, nil]
26
+ optional :channel_settings,
27
+ -> { Notiflows::Internal::Type::ArrayOf[Notiflows::UserUpsertParams::ChannelSetting] }
28
+
29
+ # @!attribute custom_fields
30
+ # Custom attributes. Deep-merged with existing values on update.
31
+ #
32
+ # @return [Object, nil]
33
+ optional :custom_fields, Notiflows::Internal::Type::Unknown
34
+
35
+ # @!attribute email
36
+ # User's email address
37
+ #
38
+ # @return [String, nil]
39
+ optional :email, String
40
+
41
+ # @!attribute first_name
42
+ # User's first name
43
+ #
44
+ # @return [String, nil]
45
+ optional :first_name, String
46
+
47
+ # @!attribute last_name
48
+ # User's last name
49
+ #
50
+ # @return [String, nil]
51
+ optional :last_name, String
52
+
53
+ # @!attribute locale
54
+ # BCP 47 locale code (e.g., en-US, es-ES, fr-FR)
55
+ #
56
+ # @return [String, nil]
57
+ optional :locale, String
58
+
59
+ # @!attribute phone
60
+ # User's phone number in E.164 format
61
+ #
62
+ # @return [String, nil]
63
+ optional :phone, String
64
+
65
+ # @!attribute preferences
66
+ # Request body for updating user preferences. Only provided fields are updated.
67
+ #
68
+ # @return [::Notiflows::Models::Users::UpdatePreferencesRequest, nil]
69
+ optional :preferences, -> { ::Notiflows::Users::UpdatePreferencesRequest }
70
+
71
+ # @!attribute timezone
72
+ # IANA timezone (e.g., America/New_York, Europe/London)
73
+ #
74
+ # @return [String, nil]
75
+ optional :timezone, String
76
+
77
+ # @!method initialize(external_id:, avatar: nil, channel_settings: nil, custom_fields: nil, email: nil, first_name: nil, last_name: nil, locale: nil, phone: nil, preferences: nil, timezone: nil, request_options: {})
78
+ # @param external_id [String] Your system's unique identifier for this user. Required for creating new users.
79
+ #
80
+ # @param avatar [String] URL to user's avatar image (must start with http:// or https://)
81
+ #
82
+ # @param channel_settings [Array<Notiflows::Models::UserUpsertParams::ChannelSetting>] Initial channel settings (e.g., device tokens for push)
83
+ #
84
+ # @param custom_fields [Object] Custom attributes. Deep-merged with existing values on update.
85
+ #
86
+ # @param email [String] User's email address
87
+ #
88
+ # @param first_name [String] User's first name
89
+ #
90
+ # @param last_name [String] User's last name
91
+ #
92
+ # @param locale [String] BCP 47 locale code (e.g., en-US, es-ES, fr-FR)
93
+ #
94
+ # @param phone [String] User's phone number in E.164 format
95
+ #
96
+ # @param preferences [::Notiflows::Models::Users::UpdatePreferencesRequest] Request body for updating user preferences. Only provided fields are updated.
97
+ #
98
+ # @param timezone [String] IANA timezone (e.g., America/New_York, Europe/London)
99
+ #
100
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
101
+
102
+ class ChannelSetting < Notiflows::Internal::Type::BaseModel
103
+ # @!attribute channel_id
104
+ # Channel ID
105
+ #
106
+ # @return [String]
107
+ required :channel_id, String
108
+
109
+ # @!attribute settings
110
+ # Provider-specific settings
111
+ #
112
+ # @return [Object]
113
+ required :settings, Notiflows::Internal::Type::Unknown
114
+
115
+ # @!method initialize(channel_id:, settings:)
116
+ # @param channel_id [String] Channel ID
117
+ #
118
+ # @param settings [Object] Provider-specific settings
119
+ end
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::ChannelSettings#delete
7
+ class ChannelSettingDeleteParams < Notiflows::Internal::Type::BaseModel
8
+ extend Notiflows::Internal::Type::RequestParameters::Converter
9
+ include Notiflows::Internal::Type::RequestParameters
10
+
11
+ # @!attribute user_external_id
12
+ #
13
+ # @return [String]
14
+ required :user_external_id, String
15
+
16
+ # @!method initialize(user_external_id:, request_options: {})
17
+ # @param user_external_id [String]
18
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::ChannelSettings#retrieve
7
+ class ChannelSettingRetrieveParams < Notiflows::Internal::Type::BaseModel
8
+ extend Notiflows::Internal::Type::RequestParameters::Converter
9
+ include Notiflows::Internal::Type::RequestParameters
10
+
11
+ # @!attribute user_external_id
12
+ #
13
+ # @return [String]
14
+ required :user_external_id, String
15
+
16
+ # @!method initialize(user_external_id:, request_options: {})
17
+ # @param user_external_id [String]
18
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::ChannelSettings#update
7
+ class ChannelSettingUpdateParams < Notiflows::Internal::Type::BaseModel
8
+ extend Notiflows::Internal::Type::RequestParameters::Converter
9
+ include Notiflows::Internal::Type::RequestParameters
10
+
11
+ # @!attribute user_external_id
12
+ #
13
+ # @return [String]
14
+ required :user_external_id, String
15
+
16
+ # @!attribute settings
17
+ # Provider-specific settings. Structure depends on channel provider.
18
+ #
19
+ # @return [Notiflows::Models::Users::MobilePushSettings, Notiflows::Models::Users::SlackSettings]
20
+ required :settings, union: -> { Notiflows::Users::ChannelSettingUpdateParams::Settings }
21
+
22
+ # @!method initialize(user_external_id:, settings:, request_options: {})
23
+ # @param user_external_id [String]
24
+ #
25
+ # @param settings [Notiflows::Models::Users::MobilePushSettings, Notiflows::Models::Users::SlackSettings] Provider-specific settings. Structure depends on channel provider.
26
+ #
27
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
28
+
29
+ # Provider-specific settings. Structure depends on channel provider.
30
+ module Settings
31
+ extend Notiflows::Internal::Type::Union
32
+
33
+ # Settings for mobile push notifications (APNS/FCM)
34
+ variant -> { Notiflows::Users::MobilePushSettings }
35
+
36
+ # Settings for Slack notifications. At least one of `slack_channel_id` or `slack_user_id` must be provided.
37
+ variant -> { Notiflows::Users::SlackSettings }
38
+
39
+ # @!method self.variants
40
+ # @return [Array(Notiflows::Models::Users::MobilePushSettings, Notiflows::Models::Users::SlackSettings)]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::ChannelSettings#retrieve
7
+ class UsersChannelSettings < Notiflows::Internal::Type::BaseModel
8
+ # @!attribute channel_id
9
+ # Channel ID
10
+ #
11
+ # @return [String]
12
+ required :channel_id, String
13
+
14
+ # @!attribute created_at
15
+ # When the settings were created
16
+ #
17
+ # @return [Time]
18
+ required :created_at, Time
19
+
20
+ # @!attribute provider
21
+ # The provider type for this channel
22
+ #
23
+ # @return [Symbol, Notiflows::Models::Users::UsersChannelSettings::Provider]
24
+ required :provider, enum: -> { Notiflows::Users::UsersChannelSettings::Provider }
25
+
26
+ # @!attribute settings
27
+ # Provider-specific settings. See MobilePushSettings or SlackSettings schemas.
28
+ #
29
+ # @return [Notiflows::Models::Users::MobilePushSettings, Notiflows::Models::Users::SlackSettings]
30
+ required :settings, union: -> { Notiflows::Users::UsersChannelSettings::Settings }
31
+
32
+ # @!attribute updated_at
33
+ # When the settings were last updated
34
+ #
35
+ # @return [Time]
36
+ required :updated_at, Time
37
+
38
+ # @!attribute user_id
39
+ # Internal user ID
40
+ #
41
+ # @return [String]
42
+ required :user_id, String
43
+
44
+ # @!method initialize(channel_id:, created_at:, provider:, settings:, updated_at:, user_id:)
45
+ # User's settings for a specific channel (e.g., device tokens, Slack credentials)
46
+ #
47
+ # @param channel_id [String] Channel ID
48
+ #
49
+ # @param created_at [Time] When the settings were created
50
+ #
51
+ # @param provider [Symbol, Notiflows::Models::Users::UsersChannelSettings::Provider] The provider type for this channel
52
+ #
53
+ # @param settings [Notiflows::Models::Users::MobilePushSettings, Notiflows::Models::Users::SlackSettings] Provider-specific settings. See MobilePushSettings or SlackSettings schemas.
54
+ #
55
+ # @param updated_at [Time] When the settings were last updated
56
+ #
57
+ # @param user_id [String] Internal user ID
58
+
59
+ # The provider type for this channel
60
+ #
61
+ # @see Notiflows::Models::Users::UsersChannelSettings#provider
62
+ module Provider
63
+ extend Notiflows::Internal::Type::Enum
64
+
65
+ APNS = :apns
66
+ FCM = :fcm
67
+ SLACK = :slack
68
+
69
+ # @!method self.values
70
+ # @return [Array<Symbol>]
71
+ end
72
+
73
+ # Provider-specific settings. See MobilePushSettings or SlackSettings schemas.
74
+ #
75
+ # @see Notiflows::Models::Users::UsersChannelSettings#settings
76
+ module Settings
77
+ extend Notiflows::Internal::Type::Union
78
+
79
+ # Settings for mobile push notifications (APNS/FCM)
80
+ variant -> { Notiflows::Users::MobilePushSettings }
81
+
82
+ # Settings for Slack notifications. At least one of `slack_channel_id` or `slack_user_id` must be provided.
83
+ variant -> { Notiflows::Users::SlackSettings }
84
+
85
+ # @!method self.variants
86
+ # @return [Array(Notiflows::Models::Users::MobilePushSettings, Notiflows::Models::Users::SlackSettings)]
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::Deliveries#list
7
+ class DeliveryListParams < Notiflows::Internal::Type::BaseModel
8
+ extend Notiflows::Internal::Type::RequestParameters::Converter
9
+ include Notiflows::Internal::Type::RequestParameters
10
+
11
+ # @!attribute after
12
+ # Cursor for fetching the next page
13
+ #
14
+ # @return [String, nil]
15
+ optional :after, String
16
+
17
+ # @!attribute before
18
+ # Cursor for fetching the previous page
19
+ #
20
+ # @return [String, nil]
21
+ optional :before, String
22
+
23
+ # @!attribute channel_id
24
+ # Filter by channel ID (UUID)
25
+ #
26
+ # @return [String, nil]
27
+ optional :channel_id, String
28
+
29
+ # @!attribute created_after
30
+ # Filter by created after (ISO 8601 datetime)
31
+ #
32
+ # @return [String, nil]
33
+ optional :created_after, String
34
+
35
+ # @!attribute created_before
36
+ # Filter by created before (ISO 8601 datetime)
37
+ #
38
+ # @return [String, nil]
39
+ optional :created_before, String
40
+
41
+ # @!attribute limit
42
+ # Number of items per page (default: 25, max: 1000)
43
+ #
44
+ # @return [Integer, nil]
45
+ optional :limit, Integer
46
+
47
+ # @!attribute status
48
+ # Filter by status (pending, sent, failed)
49
+ #
50
+ # @return [String, nil]
51
+ optional :status, String
52
+
53
+ # @!attribute topic
54
+ # Filter by topic name
55
+ #
56
+ # @return [String, nil]
57
+ optional :topic, String
58
+
59
+ # @!method initialize(after: nil, before: nil, channel_id: nil, created_after: nil, created_before: nil, limit: nil, status: nil, topic: nil, request_options: {})
60
+ # @param after [String] Cursor for fetching the next page
61
+ #
62
+ # @param before [String] Cursor for fetching the previous page
63
+ #
64
+ # @param channel_id [String] Filter by channel ID (UUID)
65
+ #
66
+ # @param created_after [String] Filter by created after (ISO 8601 datetime)
67
+ #
68
+ # @param created_before [String] Filter by created before (ISO 8601 datetime)
69
+ #
70
+ # @param limit [Integer] Number of items per page (default: 25, max: 1000)
71
+ #
72
+ # @param status [String] Filter by status (pending, sent, failed)
73
+ #
74
+ # @param topic [String] Filter by topic name
75
+ #
76
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::Deliveries#retrieve
7
+ class DeliveryRetrieveParams < Notiflows::Internal::Type::BaseModel
8
+ extend Notiflows::Internal::Type::RequestParameters::Converter
9
+ include Notiflows::Internal::Type::RequestParameters
10
+
11
+ # @!attribute user_external_id
12
+ #
13
+ # @return [String]
14
+ required :user_external_id, String
15
+
16
+ # @!method initialize(user_external_id:, request_options: {})
17
+ # @param user_external_id [String]
18
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ class MobilePushSettings < Notiflows::Internal::Type::BaseModel
7
+ # @!attribute device_tokens
8
+ # List of device tokens for push notifications. At least one token is required.
9
+ #
10
+ # @return [Array<String>]
11
+ required :device_tokens, Notiflows::Internal::Type::ArrayOf[String]
12
+
13
+ # @!method initialize(device_tokens:)
14
+ # Settings for mobile push notifications (APNS/FCM)
15
+ #
16
+ # @param device_tokens [Array<String>] List of device tokens for push notifications. At least one token is required.
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::Notifications#list
7
+ class NotificationListParams < Notiflows::Internal::Type::BaseModel
8
+ extend Notiflows::Internal::Type::RequestParameters::Converter
9
+ include Notiflows::Internal::Type::RequestParameters
10
+
11
+ # @!attribute after
12
+ # Cursor for fetching the next page
13
+ #
14
+ # @return [String, nil]
15
+ optional :after, String
16
+
17
+ # @!attribute before
18
+ # Cursor for fetching the previous page
19
+ #
20
+ # @return [String, nil]
21
+ optional :before, String
22
+
23
+ # @!attribute created_after
24
+ # Filter by created after (ISO 8601 datetime)
25
+ #
26
+ # @return [String, nil]
27
+ optional :created_after, String
28
+
29
+ # @!attribute created_before
30
+ # Filter by created before (ISO 8601 datetime)
31
+ #
32
+ # @return [String, nil]
33
+ optional :created_before, String
34
+
35
+ # @!attribute limit
36
+ # Number of items per page (default: 25, max: 1000)
37
+ #
38
+ # @return [Integer, nil]
39
+ optional :limit, Integer
40
+
41
+ # @!attribute status
42
+ # Filter by status
43
+ #
44
+ # @return [String, nil]
45
+ optional :status, String
46
+
47
+ # @!attribute topic
48
+ # Filter by topic
49
+ #
50
+ # @return [String, nil]
51
+ optional :topic, String
52
+
53
+ # @!method initialize(after: nil, before: nil, created_after: nil, created_before: nil, limit: nil, status: nil, topic: nil, request_options: {})
54
+ # @param after [String] Cursor for fetching the next page
55
+ #
56
+ # @param before [String] Cursor for fetching the previous page
57
+ #
58
+ # @param created_after [String] Filter by created after (ISO 8601 datetime)
59
+ #
60
+ # @param created_before [String] Filter by created before (ISO 8601 datetime)
61
+ #
62
+ # @param limit [Integer] Number of items per page (default: 25, max: 1000)
63
+ #
64
+ # @param status [String] Filter by status
65
+ #
66
+ # @param topic [String] Filter by topic
67
+ #
68
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::Notifications#retrieve
7
+ class NotificationRetrieveParams < Notiflows::Internal::Type::BaseModel
8
+ extend Notiflows::Internal::Type::RequestParameters::Converter
9
+ include Notiflows::Internal::Type::RequestParameters
10
+
11
+ # @!attribute user_external_id
12
+ #
13
+ # @return [String]
14
+ required :user_external_id, String
15
+
16
+ # @!method initialize(user_external_id:, request_options: {})
17
+ # @param user_external_id [String]
18
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::Preferences#retrieve
7
+ class PreferenceRetrieveParams < Notiflows::Internal::Type::BaseModel
8
+ extend Notiflows::Internal::Type::RequestParameters::Converter
9
+ include Notiflows::Internal::Type::RequestParameters
10
+
11
+ # @!method initialize(request_options: {})
12
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::Preferences#update
7
+ class PreferenceUpdateParams < ::Notiflows::Models::Users::UpdatePreferencesRequest
8
+ extend ::Notiflows::Internal::Type::RequestParameters::Converter
9
+ include ::Notiflows::Internal::Type::RequestParameters
10
+
11
+ # @!method initialize(request_options: {})
12
+ # @param request_options [Notiflows::RequestOptions, Hash{Symbol=>Object}]
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,116 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Notiflows
4
+ module Models
5
+ module Users
6
+ # @see Notiflows::Resources::Users::Preferences#retrieve
7
+ class UsersPreferences < ::Notiflows::Internal::Type::BaseModel
8
+ # @!attribute channel_types
9
+ # Global opt-in/opt-out settings per channel type. `true` = enabled, `false` =
10
+ # opted out.
11
+ #
12
+ # @return [::Notiflows::Models::Users::UsersPreferences::ChannelTypes, nil]
13
+ optional :channel_types, -> { ::Notiflows::Users::UsersPreferences::ChannelTypes }
14
+
15
+ # @!attribute notiflows
16
+ # Per-notiflow preferences. Keys are notiflow IDs (UUIDs).
17
+ #
18
+ # @return [Hash{Symbol=>::Notiflows::Models::Users::UsersPreferences::Notiflow}, nil]
19
+ optional :notiflows,
20
+ -> { ::Notiflows::Internal::Type::HashOf[::Notiflows::Users::UsersPreferences::Notiflow] }
21
+
22
+ # @!method initialize(channel_types: nil, notiflows: nil)
23
+ # Some parameter documentations has been truncated, see
24
+ # {::Notiflows::Models::Users::UsersPreferences} for more details.
25
+ #
26
+ # User notification preferences
27
+ #
28
+ # @param channel_types [::Notiflows::Models::Users::UsersPreferences::ChannelTypes] Global opt-in/opt-out settings per channel type. `true` = enabled, `false` = opt
29
+ #
30
+ # @param notiflows [Hash{Symbol=>::Notiflows::Models::Users::UsersPreferences::Notiflow}] Per-notiflow preferences. Keys are notiflow IDs (UUIDs).
31
+
32
+ # @see Notiflows::Models::Users::UsersPreferences#channel_types
33
+ class ChannelTypes < ::Notiflows::Internal::Type::BaseModel
34
+ # @!attribute chat
35
+ # Chat notifications (Slack, etc.)
36
+ #
37
+ # @return [Boolean, nil]
38
+ optional :chat, ::Notiflows::Internal::Type::Boolean
39
+
40
+ # @!attribute email
41
+ # Email notifications
42
+ #
43
+ # @return [Boolean, nil]
44
+ optional :email, ::Notiflows::Internal::Type::Boolean
45
+
46
+ # @!attribute in_app
47
+ # In-app feed notifications
48
+ #
49
+ # @return [Boolean, nil]
50
+ optional :in_app, ::Notiflows::Internal::Type::Boolean
51
+
52
+ # @!attribute mobile_push
53
+ # Mobile push notifications (iOS/Android)
54
+ #
55
+ # @return [Boolean, nil]
56
+ optional :mobile_push, ::Notiflows::Internal::Type::Boolean
57
+
58
+ # @!attribute sms
59
+ # SMS notifications
60
+ #
61
+ # @return [Boolean, nil]
62
+ optional :sms, ::Notiflows::Internal::Type::Boolean
63
+
64
+ # @!attribute web_push
65
+ # Web push notifications
66
+ #
67
+ # @return [Boolean, nil]
68
+ optional :web_push, ::Notiflows::Internal::Type::Boolean
69
+
70
+ # @!method initialize(chat: nil, email: nil, in_app: nil, mobile_push: nil, sms: nil, web_push: nil)
71
+ # Global opt-in/opt-out settings per channel type. `true` = enabled, `false` =
72
+ # opted out.
73
+ #
74
+ # @param chat [Boolean] Chat notifications (Slack, etc.)
75
+ #
76
+ # @param email [Boolean] Email notifications
77
+ #
78
+ # @param in_app [Boolean] In-app feed notifications
79
+ #
80
+ # @param mobile_push [Boolean] Mobile push notifications (iOS/Android)
81
+ #
82
+ # @param sms [Boolean] SMS notifications
83
+ #
84
+ # @param web_push [Boolean] Web push notifications
85
+ end
86
+
87
+ class Notiflow < ::Notiflows::Internal::Type::BaseModel
88
+ # @!attribute channel_types
89
+ # Channel-specific overrides for this notiflow
90
+ #
91
+ # @return [Hash{Symbol=>Boolean}, nil]
92
+ optional :channel_types, ::Notiflows::Internal::Type::HashOf[::Notiflows::Internal::Type::Boolean]
93
+
94
+ # @!attribute enabled
95
+ # Whether this notiflow is enabled for the user
96
+ #
97
+ # @return [Boolean, nil]
98
+ optional :enabled, ::Notiflows::Internal::Type::Boolean
99
+
100
+ # @!attribute name
101
+ # Notiflow name (read-only, for display)
102
+ #
103
+ # @return [String, nil]
104
+ optional :name, String
105
+
106
+ # @!method initialize(channel_types: nil, enabled: nil, name: nil)
107
+ # @param channel_types [Hash{Symbol=>Boolean}] Channel-specific overrides for this notiflow
108
+ #
109
+ # @param enabled [Boolean] Whether this notiflow is enabled for the user
110
+ #
111
+ # @param name [String] Notiflow name (read-only, for display)
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end