trycourier 4.8.0 → 4.10.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 (225) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -0
  3. data/README.md +1 -1
  4. data/lib/courier/client.rb +8 -0
  5. data/lib/courier/internal/util.rb +19 -6
  6. data/lib/courier/models/associated_notification_list_response.rb +24 -0
  7. data/lib/courier/models/channel.rb +75 -0
  8. data/lib/courier/models/channel_metadata.rb +15 -0
  9. data/lib/courier/models/element_with_checksums.rb +60 -0
  10. data/lib/courier/models/elemental_content.rb +2 -2
  11. data/lib/courier/models/elemental_html_node_with_type.rb +24 -0
  12. data/lib/courier/models/elemental_node.rb +3 -1
  13. data/lib/courier/models/message_channels.rb +8 -0
  14. data/lib/courier/models/message_providers.rb +8 -0
  15. data/lib/courier/models/message_providers_type.rb +38 -0
  16. data/lib/courier/models/metadata.rb +15 -0
  17. data/lib/courier/models/notification_archive_params.rb +20 -0
  18. data/lib/courier/models/notification_content_get_response.rb +26 -0
  19. data/lib/courier/models/notification_content_mutation_response.rb +61 -0
  20. data/lib/courier/models/notification_content_put_request.rb +51 -0
  21. data/lib/courier/models/notification_create_params.rb +14 -0
  22. data/lib/courier/models/notification_element_put_request.rb +62 -0
  23. data/lib/courier/models/notification_get_content.rb +0 -1
  24. data/lib/courier/models/notification_list_params.rb +13 -4
  25. data/lib/courier/models/notification_list_response.rb +108 -93
  26. data/lib/courier/models/notification_list_versions_params.rb +37 -0
  27. data/lib/courier/models/notification_locale_put_request.rb +39 -0
  28. data/lib/courier/models/notification_publish_params.rb +20 -0
  29. data/lib/courier/models/notification_put_content_params.rb +20 -0
  30. data/lib/courier/models/notification_put_element_params.rb +26 -0
  31. data/lib/courier/models/notification_put_locale_params.rb +26 -0
  32. data/lib/courier/models/notification_replace_params.rb +20 -0
  33. data/lib/courier/models/notification_retrieve_content_params.rb +14 -1
  34. data/lib/courier/models/notification_retrieve_content_response.rb +21 -0
  35. data/lib/courier/models/notification_retrieve_params.rb +33 -0
  36. data/lib/courier/models/notification_template_create_request.rb +45 -0
  37. data/lib/courier/models/notification_template_get_response.rb +92 -0
  38. data/lib/courier/models/notification_template_mutation_response.rb +51 -0
  39. data/lib/courier/models/notification_template_payload.rb +98 -0
  40. data/lib/courier/models/notification_template_publish_request.rb +19 -0
  41. data/lib/courier/models/notification_template_state.rb +16 -0
  42. data/lib/courier/models/notification_template_summary.rb +81 -0
  43. data/lib/courier/models/notification_template_update_request.rb +46 -0
  44. data/lib/courier/models/notification_template_version_list_response.rb +22 -0
  45. data/lib/courier/models/provider.rb +67 -0
  46. data/lib/courier/models/provider_create_params.rb +52 -0
  47. data/lib/courier/models/provider_delete_params.rb +20 -0
  48. data/lib/courier/models/provider_list_params.rb +22 -0
  49. data/lib/courier/models/provider_list_response.rb +24 -0
  50. data/lib/courier/models/provider_retrieve_params.rb +20 -0
  51. data/lib/courier/models/provider_update_params.rb +58 -0
  52. data/lib/courier/models/providers/catalog_list_params.rb +44 -0
  53. data/lib/courier/models/providers/catalog_list_response.rb +26 -0
  54. data/lib/courier/models/providers_catalog_entry.rb +86 -0
  55. data/lib/courier/models/routing_strategy_archive_params.rb +20 -0
  56. data/lib/courier/models/routing_strategy_create_params.rb +14 -0
  57. data/lib/courier/models/routing_strategy_create_request.rb +58 -0
  58. data/lib/courier/models/routing_strategy_get_response.rb +99 -0
  59. data/lib/courier/models/routing_strategy_list_notifications_params.rb +37 -0
  60. data/lib/courier/models/routing_strategy_list_params.rb +30 -0
  61. data/lib/courier/models/routing_strategy_list_response.rb +24 -0
  62. data/lib/courier/models/routing_strategy_mutation_response.rb +19 -0
  63. data/lib/courier/models/routing_strategy_replace_params.rb +20 -0
  64. data/lib/courier/models/routing_strategy_replace_request.rb +59 -0
  65. data/lib/courier/models/routing_strategy_retrieve_params.rb +20 -0
  66. data/lib/courier/models/routing_strategy_summary.rb +75 -0
  67. data/lib/courier/models/send_message_params.rb +6 -154
  68. data/lib/courier/models/tenant_template_input.rb +6 -152
  69. data/lib/courier/models/timeouts.rb +21 -0
  70. data/lib/courier/models/version_node.rb +46 -0
  71. data/lib/courier/models.rb +110 -0
  72. data/lib/courier/resources/notifications.rb +289 -12
  73. data/lib/courier/resources/providers/catalog.rb +49 -0
  74. data/lib/courier/resources/providers.rb +150 -0
  75. data/lib/courier/resources/routing_strategies.rb +179 -0
  76. data/lib/courier/version.rb +1 -1
  77. data/lib/courier.rb +60 -2
  78. data/rbi/courier/client.rbi +6 -0
  79. data/rbi/courier/internal/util.rbi +8 -0
  80. data/rbi/courier/models/associated_notification_list_response.rbi +45 -0
  81. data/rbi/courier/models/channel.rbi +106 -0
  82. data/rbi/courier/models/channel_metadata.rbi +28 -0
  83. data/rbi/courier/models/element_with_checksums.rbi +109 -0
  84. data/rbi/courier/models/elemental_content.rbi +6 -3
  85. data/rbi/courier/models/elemental_html_node_with_type.rbi +59 -0
  86. data/rbi/courier/models/elemental_node.rbi +2 -1
  87. data/rbi/courier/models/message_channels.rbi +11 -0
  88. data/rbi/courier/models/message_providers.rbi +11 -0
  89. data/rbi/courier/models/message_providers_type.rbi +60 -0
  90. data/rbi/courier/models/metadata.rbi +26 -0
  91. data/rbi/courier/models/notification_archive_params.rbi +35 -0
  92. data/rbi/courier/models/notification_content_get_response.rbi +45 -0
  93. data/rbi/courier/models/notification_content_mutation_response.rbi +95 -0
  94. data/rbi/courier/models/notification_content_put_request.rbi +145 -0
  95. data/rbi/courier/models/notification_create_params.rbi +27 -0
  96. data/rbi/courier/models/notification_element_put_request.rbi +98 -0
  97. data/rbi/courier/models/notification_list_params.rbi +15 -2
  98. data/rbi/courier/models/notification_list_response.rbi +159 -119
  99. data/rbi/courier/models/notification_list_versions_params.rbi +66 -0
  100. data/rbi/courier/models/notification_locale_put_request.rbi +79 -0
  101. data/rbi/courier/models/notification_publish_params.rbi +35 -0
  102. data/rbi/courier/models/notification_put_content_params.rbi +38 -0
  103. data/rbi/courier/models/notification_put_element_params.rbi +46 -0
  104. data/rbi/courier/models/notification_put_locale_params.rbi +46 -0
  105. data/rbi/courier/models/notification_replace_params.rbi +35 -0
  106. data/rbi/courier/models/notification_retrieve_content_params.rbi +21 -2
  107. data/rbi/courier/models/notification_retrieve_content_response.rbi +29 -0
  108. data/rbi/courier/models/notification_retrieve_params.rbi +54 -0
  109. data/rbi/courier/models/notification_template_create_request.rbi +102 -0
  110. data/rbi/courier/models/notification_template_get_response.rbi +162 -0
  111. data/rbi/courier/models/notification_template_mutation_response.rbi +121 -0
  112. data/rbi/courier/models/notification_template_payload.rbi +183 -0
  113. data/rbi/courier/models/notification_template_publish_request.rbi +35 -0
  114. data/rbi/courier/models/notification_template_state.rbi +26 -0
  115. data/rbi/courier/models/notification_template_summary.rbi +124 -0
  116. data/rbi/courier/models/notification_template_update_request.rbi +103 -0
  117. data/rbi/courier/models/notification_template_version_list_response.rbi +41 -0
  118. data/rbi/courier/models/provider.rbi +87 -0
  119. data/rbi/courier/models/provider_create_params.rbi +82 -0
  120. data/rbi/courier/models/provider_delete_params.rbi +35 -0
  121. data/rbi/courier/models/provider_list_params.rbi +43 -0
  122. data/rbi/courier/models/provider_list_response.rbi +42 -0
  123. data/rbi/courier/models/provider_retrieve_params.rbi +35 -0
  124. data/rbi/courier/models/provider_update_params.rbi +86 -0
  125. data/rbi/courier/models/providers/catalog_list_params.rbi +75 -0
  126. data/rbi/courier/models/providers/catalog_list_response.rbi +47 -0
  127. data/rbi/courier/models/providers_catalog_entry.rbi +129 -0
  128. data/rbi/courier/models/routing_strategy_archive_params.rbi +38 -0
  129. data/rbi/courier/models/routing_strategy_create_params.rbi +30 -0
  130. data/rbi/courier/models/routing_strategy_create_request.rbi +86 -0
  131. data/rbi/courier/models/routing_strategy_get_response.rbi +121 -0
  132. data/rbi/courier/models/routing_strategy_list_notifications_params.rbi +63 -0
  133. data/rbi/courier/models/routing_strategy_list_params.rbi +54 -0
  134. data/rbi/courier/models/routing_strategy_list_response.rbi +45 -0
  135. data/rbi/courier/models/routing_strategy_mutation_response.rbi +31 -0
  136. data/rbi/courier/models/routing_strategy_replace_params.rbi +38 -0
  137. data/rbi/courier/models/routing_strategy_replace_request.rbi +87 -0
  138. data/rbi/courier/models/routing_strategy_retrieve_params.rbi +38 -0
  139. data/rbi/courier/models/routing_strategy_summary.rbi +95 -0
  140. data/rbi/courier/models/send_message_params.rbi +6 -362
  141. data/rbi/courier/models/tenant_template_input.rbi +8 -336
  142. data/rbi/courier/models/timeouts.rbi +33 -0
  143. data/rbi/courier/models/version_node.rbi +65 -0
  144. data/rbi/courier/models.rbi +122 -0
  145. data/rbi/courier/resources/notifications.rbi +222 -6
  146. data/rbi/courier/resources/providers/catalog.rbi +38 -0
  147. data/rbi/courier/resources/providers.rbi +116 -0
  148. data/rbi/courier/resources/routing_strategies.rbi +147 -0
  149. data/sig/courier/client.rbs +4 -0
  150. data/sig/courier/internal/util.rbs +4 -0
  151. data/sig/courier/models/associated_notification_list_response.rbs +25 -0
  152. data/sig/courier/models/channel.rbs +61 -0
  153. data/sig/courier/models/channel_metadata.rbs +13 -0
  154. data/sig/courier/models/element_with_checksums.rbs +60 -0
  155. data/sig/courier/models/elemental_html_node_with_type.rbs +32 -0
  156. data/sig/courier/models/elemental_node.rbs +1 -0
  157. data/sig/courier/models/message_channels.rbs +7 -0
  158. data/sig/courier/models/message_providers.rbs +7 -0
  159. data/sig/courier/models/message_providers_type.rbs +35 -0
  160. data/sig/courier/models/metadata.rbs +13 -0
  161. data/sig/courier/models/notification_archive_params.rbs +20 -0
  162. data/sig/courier/models/notification_content_get_response.rbs +22 -0
  163. data/sig/courier/models/notification_content_mutation_response.rbs +47 -0
  164. data/sig/courier/models/notification_content_put_request.rbs +50 -0
  165. data/sig/courier/models/notification_create_params.rbs +15 -0
  166. data/sig/courier/models/notification_element_put_request.rbs +64 -0
  167. data/sig/courier/models/notification_list_params.rbs +7 -1
  168. data/sig/courier/models/notification_list_response.rbs +81 -71
  169. data/sig/courier/models/notification_list_versions_params.rbs +36 -0
  170. data/sig/courier/models/notification_locale_put_request.rbs +39 -0
  171. data/sig/courier/models/notification_publish_params.rbs +22 -0
  172. data/sig/courier/models/notification_put_content_params.rbs +22 -0
  173. data/sig/courier/models/notification_put_element_params.rbs +32 -0
  174. data/sig/courier/models/notification_put_locale_params.rbs +32 -0
  175. data/sig/courier/models/notification_replace_params.rbs +22 -0
  176. data/sig/courier/models/notification_retrieve_content_params.rbs +12 -2
  177. data/sig/courier/models/notification_retrieve_content_response.rbs +12 -0
  178. data/sig/courier/models/notification_retrieve_params.rbs +30 -0
  179. data/sig/courier/models/notification_template_create_request.rbs +40 -0
  180. data/sig/courier/models/notification_template_get_response.rbs +72 -0
  181. data/sig/courier/models/notification_template_mutation_response.rbs +46 -0
  182. data/sig/courier/models/notification_template_payload.rbs +75 -0
  183. data/sig/courier/models/notification_template_publish_request.rbs +15 -0
  184. data/sig/courier/models/notification_template_state.rbs +14 -0
  185. data/sig/courier/models/notification_template_summary.rbs +70 -0
  186. data/sig/courier/models/notification_template_update_request.rbs +40 -0
  187. data/sig/courier/models/notification_template_version_list_response.rbs +22 -0
  188. data/sig/courier/models/provider.rbs +52 -0
  189. data/sig/courier/models/provider_create_params.rbs +47 -0
  190. data/sig/courier/models/provider_delete_params.rbs +20 -0
  191. data/sig/courier/models/provider_list_params.rbs +25 -0
  192. data/sig/courier/models/provider_list_response.rbs +22 -0
  193. data/sig/courier/models/provider_retrieve_params.rbs +20 -0
  194. data/sig/courier/models/provider_update_params.rbs +52 -0
  195. data/sig/courier/models/providers/catalog_list_params.rbs +40 -0
  196. data/sig/courier/models/providers/catalog_list_response.rbs +27 -0
  197. data/sig/courier/models/providers_catalog_entry.rbs +64 -0
  198. data/sig/courier/models/routing_strategy_archive_params.rbs +20 -0
  199. data/sig/courier/models/routing_strategy_create_params.rbs +15 -0
  200. data/sig/courier/models/routing_strategy_create_request.rbs +45 -0
  201. data/sig/courier/models/routing_strategy_get_response.rbs +70 -0
  202. data/sig/courier/models/routing_strategy_list_notifications_params.rbs +34 -0
  203. data/sig/courier/models/routing_strategy_list_params.rbs +30 -0
  204. data/sig/courier/models/routing_strategy_list_response.rbs +25 -0
  205. data/sig/courier/models/routing_strategy_mutation_response.rbs +13 -0
  206. data/sig/courier/models/routing_strategy_replace_params.rbs +22 -0
  207. data/sig/courier/models/routing_strategy_replace_request.rbs +45 -0
  208. data/sig/courier/models/routing_strategy_retrieve_params.rbs +20 -0
  209. data/sig/courier/models/routing_strategy_summary.rbs +55 -0
  210. data/sig/courier/models/send_message_params.rbs +8 -130
  211. data/sig/courier/models/tenant_template_input.rbs +12 -134
  212. data/sig/courier/models/timeouts.rbs +15 -0
  213. data/sig/courier/models/version_node.rbs +32 -0
  214. data/sig/courier/models.rbs +108 -0
  215. data/sig/courier/resources/notifications.rbs +65 -3
  216. data/sig/courier/resources/providers/catalog.rbs +16 -0
  217. data/sig/courier/resources/providers.rbs +38 -0
  218. data/sig/courier/resources/routing_strategies.rbs +48 -0
  219. metadata +182 -8
  220. data/lib/courier/models/notifications/draft_retrieve_content_params.rb +0 -22
  221. data/lib/courier/resources/notifications/draft.rb +0 -33
  222. data/rbi/courier/models/notifications/draft_retrieve_content_params.rbi +0 -40
  223. data/rbi/courier/resources/notifications/draft.rbi +0 -23
  224. data/sig/courier/models/notifications/draft_retrieve_content_params.rbs +0 -22
  225. data/sig/courier/resources/notifications/draft.rbs +0 -14
@@ -0,0 +1,150 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Courier
4
+ module Resources
5
+ class Providers
6
+ # @return [Courier::Resources::Providers::Catalog]
7
+ attr_reader :catalog
8
+
9
+ # Some parameter documentations has been truncated, see
10
+ # {Courier::Models::ProviderCreateParams} for more details.
11
+ #
12
+ # Create a new provider configuration. The `provider` field must be a known
13
+ # Courier provider key (see catalog).
14
+ #
15
+ # @overload create(provider:, alias_: nil, settings: nil, title: nil, request_options: {})
16
+ #
17
+ # @param provider [String] The provider key identifying the type (e.g. "sendgrid", "twilio"). Must be a kno
18
+ #
19
+ # @param alias_ [String] Optional alias for this configuration.
20
+ #
21
+ # @param settings [Hash{Symbol=>Object}] Provider-specific settings (snake_case keys). Defaults to an empty object when o
22
+ #
23
+ # @param title [String] Optional display title. Omit to use "Default Configuration".
24
+ #
25
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
26
+ #
27
+ # @return [Courier::Models::Provider]
28
+ #
29
+ # @see Courier::Models::ProviderCreateParams
30
+ def create(params)
31
+ parsed, options = Courier::ProviderCreateParams.dump_request(params)
32
+ @client.request(
33
+ method: :post,
34
+ path: "providers",
35
+ body: parsed,
36
+ model: Courier::Provider,
37
+ options: options
38
+ )
39
+ end
40
+
41
+ # Fetch a single provider configuration by ID.
42
+ #
43
+ # @overload retrieve(id, request_options: {})
44
+ #
45
+ # @param id [String] A unique identifier of the provider configuration.
46
+ #
47
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
48
+ #
49
+ # @return [Courier::Models::Provider]
50
+ #
51
+ # @see Courier::Models::ProviderRetrieveParams
52
+ def retrieve(id, params = {})
53
+ @client.request(
54
+ method: :get,
55
+ path: ["providers/%1$s", id],
56
+ model: Courier::Provider,
57
+ options: params[:request_options]
58
+ )
59
+ end
60
+
61
+ # Some parameter documentations has been truncated, see
62
+ # {Courier::Models::ProviderUpdateParams} for more details.
63
+ #
64
+ # Update an existing provider configuration. The `provider` key is required. All
65
+ # other fields are optional — omitted fields are cleared from the stored
66
+ # configuration (this is a full replacement, not a partial merge).
67
+ #
68
+ # @overload update(id, provider:, alias_: nil, settings: nil, title: nil, request_options: {})
69
+ #
70
+ # @param id [String] A unique identifier of the provider configuration to update.
71
+ #
72
+ # @param provider [String] The provider key identifying the type.
73
+ #
74
+ # @param alias_ [String] Updated alias. Omit to clear.
75
+ #
76
+ # @param settings [Hash{Symbol=>Object}] Provider-specific settings (snake_case keys). Replaces the full settings object
77
+ #
78
+ # @param title [String] Updated display title.
79
+ #
80
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
81
+ #
82
+ # @return [Courier::Models::Provider]
83
+ #
84
+ # @see Courier::Models::ProviderUpdateParams
85
+ def update(id, params)
86
+ parsed, options = Courier::ProviderUpdateParams.dump_request(params)
87
+ @client.request(
88
+ method: :post,
89
+ path: ["providers/%1$s", id],
90
+ body: parsed,
91
+ model: Courier::Provider,
92
+ options: options
93
+ )
94
+ end
95
+
96
+ # List configured provider integrations for the current workspace. Supports
97
+ # cursor-based pagination.
98
+ #
99
+ # @overload list(cursor: nil, request_options: {})
100
+ #
101
+ # @param cursor [String] Opaque cursor for fetching the next page.
102
+ #
103
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
104
+ #
105
+ # @return [Courier::Models::ProviderListResponse]
106
+ #
107
+ # @see Courier::Models::ProviderListParams
108
+ def list(params = {})
109
+ parsed, options = Courier::ProviderListParams.dump_request(params)
110
+ query = Courier::Internal::Util.encode_query_params(parsed)
111
+ @client.request(
112
+ method: :get,
113
+ path: "providers",
114
+ query: query,
115
+ model: Courier::Models::ProviderListResponse,
116
+ options: options
117
+ )
118
+ end
119
+
120
+ # Delete a provider configuration. Returns 409 if the provider is still referenced
121
+ # by routing or notifications.
122
+ #
123
+ # @overload delete(id, request_options: {})
124
+ #
125
+ # @param id [String] A unique identifier of the provider configuration to delete.
126
+ #
127
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
128
+ #
129
+ # @return [nil]
130
+ #
131
+ # @see Courier::Models::ProviderDeleteParams
132
+ def delete(id, params = {})
133
+ @client.request(
134
+ method: :delete,
135
+ path: ["providers/%1$s", id],
136
+ model: NilClass,
137
+ options: params[:request_options]
138
+ )
139
+ end
140
+
141
+ # @api private
142
+ #
143
+ # @param client [Courier::Client]
144
+ def initialize(client:)
145
+ @client = client
146
+ @catalog = Courier::Resources::Providers::Catalog.new(client: client)
147
+ end
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,179 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Courier
4
+ module Resources
5
+ class RoutingStrategies
6
+ # Create a routing strategy. Requires a name and routing configuration at minimum.
7
+ # Channels and providers default to empty if omitted.
8
+ #
9
+ # @overload create(name:, routing:, channels: nil, description: nil, providers: nil, tags: nil, request_options: {})
10
+ #
11
+ # @param name [String] Human-readable name for the routing strategy.
12
+ #
13
+ # @param routing [Courier::Models::MessageRouting] Routing tree defining channel selection method and order.
14
+ #
15
+ # @param channels [Hash{Symbol=>Courier::Models::Channel}, nil] Per-channel delivery configuration. Defaults to empty if omitted.
16
+ #
17
+ # @param description [String, nil] Optional description of the routing strategy.
18
+ #
19
+ # @param providers [Hash{Symbol=>Courier::Models::MessageProvidersType}, nil] Per-provider delivery configuration. Defaults to empty if omitted.
20
+ #
21
+ # @param tags [Array<String>, nil] Optional tags for categorization.
22
+ #
23
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
24
+ #
25
+ # @return [Courier::Models::RoutingStrategyMutationResponse]
26
+ #
27
+ # @see Courier::Models::RoutingStrategyCreateParams
28
+ def create(params)
29
+ parsed, options = Courier::RoutingStrategyCreateParams.dump_request(params)
30
+ @client.request(
31
+ method: :post,
32
+ path: "routing-strategies",
33
+ body: parsed,
34
+ model: Courier::RoutingStrategyMutationResponse,
35
+ options: options
36
+ )
37
+ end
38
+
39
+ # Retrieve a routing strategy by ID. Returns the full entity including routing
40
+ # content and metadata.
41
+ #
42
+ # @overload retrieve(id, request_options: {})
43
+ #
44
+ # @param id [String] Routing strategy ID (rs\_ prefix).
45
+ #
46
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
47
+ #
48
+ # @return [Courier::Models::RoutingStrategyGetResponse]
49
+ #
50
+ # @see Courier::Models::RoutingStrategyRetrieveParams
51
+ def retrieve(id, params = {})
52
+ @client.request(
53
+ method: :get,
54
+ path: ["routing-strategies/%1$s", id],
55
+ model: Courier::RoutingStrategyGetResponse,
56
+ options: params[:request_options]
57
+ )
58
+ end
59
+
60
+ # List routing strategies in your workspace. Returns metadata only (no
61
+ # routing/channels/providers content). Use GET /routing-strategies/{id} for full
62
+ # details.
63
+ #
64
+ # @overload list(cursor: nil, limit: nil, request_options: {})
65
+ #
66
+ # @param cursor [String, nil] Opaque pagination cursor from a previous response. Omit for the first page.
67
+ #
68
+ # @param limit [Integer] Maximum number of results per page. Default 20, max 100.
69
+ #
70
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
71
+ #
72
+ # @return [Courier::Models::RoutingStrategyListResponse]
73
+ #
74
+ # @see Courier::Models::RoutingStrategyListParams
75
+ def list(params = {})
76
+ parsed, options = Courier::RoutingStrategyListParams.dump_request(params)
77
+ query = Courier::Internal::Util.encode_query_params(parsed)
78
+ @client.request(
79
+ method: :get,
80
+ path: "routing-strategies",
81
+ query: query,
82
+ model: Courier::RoutingStrategyListResponse,
83
+ options: options
84
+ )
85
+ end
86
+
87
+ # Archive a routing strategy. The strategy must not have associated notification
88
+ # templates. Unlink all templates before archiving.
89
+ #
90
+ # @overload archive(id, request_options: {})
91
+ #
92
+ # @param id [String] Routing strategy ID (rs\_ prefix).
93
+ #
94
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
95
+ #
96
+ # @return [nil]
97
+ #
98
+ # @see Courier::Models::RoutingStrategyArchiveParams
99
+ def archive(id, params = {})
100
+ @client.request(
101
+ method: :delete,
102
+ path: ["routing-strategies/%1$s", id],
103
+ model: NilClass,
104
+ options: params[:request_options]
105
+ )
106
+ end
107
+
108
+ # List notification templates associated with a routing strategy. Includes
109
+ # template metadata only, not full content.
110
+ #
111
+ # @overload list_notifications(id, cursor: nil, limit: nil, request_options: {})
112
+ #
113
+ # @param id [String] Routing strategy ID (`rs_` prefix).
114
+ #
115
+ # @param cursor [String, nil] Opaque pagination cursor from a previous response. Omit for the first page.
116
+ #
117
+ # @param limit [Integer] Maximum number of results per page. Default 20, max 100.
118
+ #
119
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
120
+ #
121
+ # @return [Courier::Models::AssociatedNotificationListResponse]
122
+ #
123
+ # @see Courier::Models::RoutingStrategyListNotificationsParams
124
+ def list_notifications(id, params = {})
125
+ parsed, options = Courier::RoutingStrategyListNotificationsParams.dump_request(params)
126
+ query = Courier::Internal::Util.encode_query_params(parsed)
127
+ @client.request(
128
+ method: :get,
129
+ path: ["routing-strategies/%1$s/notifications", id],
130
+ query: query,
131
+ model: Courier::AssociatedNotificationListResponse,
132
+ options: options
133
+ )
134
+ end
135
+
136
+ # Replace a routing strategy. Full document replacement; the caller must send the
137
+ # complete desired state. Missing optional fields are cleared.
138
+ #
139
+ # @overload replace(id, name:, routing:, channels: nil, description: nil, providers: nil, tags: nil, request_options: {})
140
+ #
141
+ # @param id [String] Routing strategy ID (rs\_ prefix).
142
+ #
143
+ # @param name [String] Human-readable name for the routing strategy.
144
+ #
145
+ # @param routing [Courier::Models::MessageRouting] Routing tree defining channel selection method and order.
146
+ #
147
+ # @param channels [Hash{Symbol=>Courier::Models::Channel}, nil] Per-channel delivery configuration. Omit to clear.
148
+ #
149
+ # @param description [String, nil] Optional description. Omit or null to clear.
150
+ #
151
+ # @param providers [Hash{Symbol=>Courier::Models::MessageProvidersType}, nil] Per-provider delivery configuration. Omit to clear.
152
+ #
153
+ # @param tags [Array<String>, nil] Optional tags. Omit or null to clear.
154
+ #
155
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
156
+ #
157
+ # @return [Courier::Models::RoutingStrategyMutationResponse]
158
+ #
159
+ # @see Courier::Models::RoutingStrategyReplaceParams
160
+ def replace(id, params)
161
+ parsed, options = Courier::RoutingStrategyReplaceParams.dump_request(params)
162
+ @client.request(
163
+ method: :put,
164
+ path: ["routing-strategies/%1$s", id],
165
+ body: parsed,
166
+ model: Courier::RoutingStrategyMutationResponse,
167
+ options: options
168
+ )
169
+ end
170
+
171
+ # @api private
172
+ #
173
+ # @param client [Courier::Client]
174
+ def initialize(client:)
175
+ @client = client
176
+ end
177
+ end
178
+ end
179
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Courier
4
- VERSION = "4.8.0"
4
+ VERSION = "4.10.0"
5
5
  end
data/lib/courier.rb CHANGED
@@ -60,6 +60,15 @@ require_relative "courier/models/subscription_topic_new"
60
60
  require_relative "courier/models/elemental_channel_node"
61
61
  require_relative "courier/models/journeys_invoke_request"
62
62
  require_relative "courier/models/message_details"
63
+ require_relative "courier/models/notification_template_create_request"
64
+ require_relative "courier/models/notification_template_publish_request"
65
+ require_relative "courier/models/notification_content_put_request"
66
+ require_relative "courier/models/notification_element_put_request"
67
+ require_relative "courier/models/notification_locale_put_request"
68
+ require_relative "courier/models/notification_template_update_request"
69
+ require_relative "courier/models/notification_template_payload"
70
+ require_relative "courier/models/routing_strategy_create_request"
71
+ require_relative "courier/models/routing_strategy_replace_request"
63
72
  require_relative "courier/models/base_template_tenant_association"
64
73
  require_relative "courier/models/post_tenant_template_publish_request"
65
74
  require_relative "courier/models/put_tenant_template_request"
@@ -67,6 +76,7 @@ require_relative "courier/models/users/user_token"
67
76
  require_relative "courier/models/airship_profile"
68
77
  require_relative "courier/models/airship_profile_audience"
69
78
  require_relative "courier/models/alignment"
79
+ require_relative "courier/models/associated_notification_list_response"
70
80
  require_relative "courier/models/audience"
71
81
  require_relative "courier/models/audience_delete_params"
72
82
  require_relative "courier/models/audience_filter"
@@ -112,7 +122,9 @@ require_relative "courier/models/bulk_list_users_response"
112
122
  require_relative "courier/models/bulk_retrieve_job_params"
113
123
  require_relative "courier/models/bulk_retrieve_job_response"
114
124
  require_relative "courier/models/bulk_run_job_params"
125
+ require_relative "courier/models/channel"
115
126
  require_relative "courier/models/channel_classification"
127
+ require_relative "courier/models/channel_metadata"
116
128
  require_relative "courier/models/channel_preference"
117
129
  require_relative "courier/models/check"
118
130
  require_relative "courier/models/default_preferences"
@@ -123,11 +135,13 @@ require_relative "courier/models/elemental_channel_node_with_type"
123
135
  require_relative "courier/models/elemental_content"
124
136
  require_relative "courier/models/elemental_content_sugar"
125
137
  require_relative "courier/models/elemental_divider_node_with_type"
138
+ require_relative "courier/models/elemental_html_node_with_type"
126
139
  require_relative "courier/models/elemental_image_node_with_type"
127
140
  require_relative "courier/models/elemental_meta_node_with_type"
128
141
  require_relative "courier/models/elemental_node"
129
142
  require_relative "courier/models/elemental_quote_node_with_type"
130
143
  require_relative "courier/models/elemental_text_node_with_type"
144
+ require_relative "courier/models/element_with_checksums"
131
145
  require_relative "courier/models/email_footer"
132
146
  require_relative "courier/models/email_head"
133
147
  require_relative "courier/models/email_header"
@@ -161,6 +175,7 @@ require_relative "courier/models/lists/subscription_unsubscribe_user_params"
161
175
  require_relative "courier/models/list_update_params"
162
176
  require_relative "courier/models/logo"
163
177
  require_relative "courier/models/message_cancel_params"
178
+ require_relative "courier/models/message_channels"
164
179
  require_relative "courier/models/message_content_params"
165
180
  require_relative "courier/models/message_content_response"
166
181
  require_relative "courier/models/message_context"
@@ -168,25 +183,44 @@ require_relative "courier/models/message_history_params"
168
183
  require_relative "courier/models/message_history_response"
169
184
  require_relative "courier/models/message_list_params"
170
185
  require_relative "courier/models/message_list_response"
186
+ require_relative "courier/models/message_providers"
187
+ require_relative "courier/models/message_providers_type"
171
188
  require_relative "courier/models/message_retrieve_params"
172
189
  require_relative "courier/models/message_retrieve_response"
173
190
  require_relative "courier/models/message_routing"
174
191
  require_relative "courier/models/message_routing_channel"
192
+ require_relative "courier/models/metadata"
175
193
  require_relative "courier/models/ms_teams"
176
194
  require_relative "courier/models/ms_teams_base_properties"
177
195
  require_relative "courier/models/ms_teams_recipient"
178
196
  require_relative "courier/models/multiple_tokens"
197
+ require_relative "courier/models/notification_archive_params"
198
+ require_relative "courier/models/notification_content_get_response"
199
+ require_relative "courier/models/notification_content_mutation_response"
200
+ require_relative "courier/models/notification_create_params"
179
201
  require_relative "courier/models/notification_get_content"
180
202
  require_relative "courier/models/notification_list_params"
181
203
  require_relative "courier/models/notification_list_response"
204
+ require_relative "courier/models/notification_list_versions_params"
182
205
  require_relative "courier/models/notification_preference_details"
206
+ require_relative "courier/models/notification_publish_params"
207
+ require_relative "courier/models/notification_put_content_params"
208
+ require_relative "courier/models/notification_put_element_params"
209
+ require_relative "courier/models/notification_put_locale_params"
210
+ require_relative "courier/models/notification_replace_params"
183
211
  require_relative "courier/models/notification_retrieve_content_params"
212
+ require_relative "courier/models/notification_retrieve_content_response"
213
+ require_relative "courier/models/notification_retrieve_params"
184
214
  require_relative "courier/models/notifications/check_delete_params"
185
215
  require_relative "courier/models/notifications/check_list_params"
186
216
  require_relative "courier/models/notifications/check_list_response"
187
217
  require_relative "courier/models/notifications/check_update_params"
188
218
  require_relative "courier/models/notifications/check_update_response"
189
- require_relative "courier/models/notifications/draft_retrieve_content_params"
219
+ require_relative "courier/models/notification_template_get_response"
220
+ require_relative "courier/models/notification_template_mutation_response"
221
+ require_relative "courier/models/notification_template_state"
222
+ require_relative "courier/models/notification_template_summary"
223
+ require_relative "courier/models/notification_template_version_list_response"
190
224
  require_relative "courier/models/pagerduty"
191
225
  require_relative "courier/models/pagerduty_recipient"
192
226
  require_relative "courier/models/paging"
@@ -207,10 +241,30 @@ require_relative "courier/models/profiles/list_retrieve_response"
207
241
  require_relative "courier/models/profiles/list_subscribe_params"
208
242
  require_relative "courier/models/profiles/list_subscribe_response"
209
243
  require_relative "courier/models/profile_update_params"
244
+ require_relative "courier/models/provider"
245
+ require_relative "courier/models/provider_create_params"
246
+ require_relative "courier/models/provider_delete_params"
247
+ require_relative "courier/models/provider_list_params"
248
+ require_relative "courier/models/provider_list_response"
249
+ require_relative "courier/models/provider_retrieve_params"
250
+ require_relative "courier/models/providers/catalog_list_params"
251
+ require_relative "courier/models/providers/catalog_list_response"
252
+ require_relative "courier/models/providers_catalog_entry"
253
+ require_relative "courier/models/provider_update_params"
210
254
  require_relative "courier/models/put_subscriptions_recipient"
211
255
  require_relative "courier/models/put_tenant_template_response"
212
256
  require_relative "courier/models/recipient_preferences"
213
257
  require_relative "courier/models/request_archive_params"
258
+ require_relative "courier/models/routing_strategy_archive_params"
259
+ require_relative "courier/models/routing_strategy_create_params"
260
+ require_relative "courier/models/routing_strategy_get_response"
261
+ require_relative "courier/models/routing_strategy_list_notifications_params"
262
+ require_relative "courier/models/routing_strategy_list_params"
263
+ require_relative "courier/models/routing_strategy_list_response"
264
+ require_relative "courier/models/routing_strategy_mutation_response"
265
+ require_relative "courier/models/routing_strategy_replace_params"
266
+ require_relative "courier/models/routing_strategy_retrieve_params"
267
+ require_relative "courier/models/routing_strategy_summary"
214
268
  require_relative "courier/models/rule"
215
269
  require_relative "courier/models/send_direct_message"
216
270
  require_relative "courier/models/send_message_params"
@@ -248,6 +302,7 @@ require_relative "courier/models/tenants/templates/version_retrieve_params"
248
302
  require_relative "courier/models/tenant_template_input"
249
303
  require_relative "courier/models/tenant_update_params"
250
304
  require_relative "courier/models/text_style"
305
+ require_relative "courier/models/timeouts"
251
306
  require_relative "courier/models/token"
252
307
  require_relative "courier/models/translation_retrieve_params"
253
308
  require_relative "courier/models/translation_retrieve_response"
@@ -277,6 +332,7 @@ require_relative "courier/models/users/token_retrieve_response"
277
332
  require_relative "courier/models/users/token_update_params"
278
333
  require_relative "courier/models/users/topic_preference"
279
334
  require_relative "courier/models/utm"
335
+ require_relative "courier/models/version_node"
280
336
  require_relative "courier/models/webhook_authentication"
281
337
  require_relative "courier/models/webhook_auth_mode"
282
338
  require_relative "courier/models/webhook_method"
@@ -299,10 +355,12 @@ require_relative "courier/resources/lists/subscriptions"
299
355
  require_relative "courier/resources/messages"
300
356
  require_relative "courier/resources/notifications"
301
357
  require_relative "courier/resources/notifications/checks"
302
- require_relative "courier/resources/notifications/draft"
303
358
  require_relative "courier/resources/profiles"
304
359
  require_relative "courier/resources/profiles/lists"
360
+ require_relative "courier/resources/providers"
361
+ require_relative "courier/resources/providers/catalog"
305
362
  require_relative "courier/resources/requests"
363
+ require_relative "courier/resources/routing_strategies"
306
364
  require_relative "courier/resources/send"
307
365
  require_relative "courier/resources/tenants"
308
366
  require_relative "courier/resources/tenants/preferences"
@@ -19,6 +19,9 @@ module Courier
19
19
  sig { returns(Courier::Resources::Audiences) }
20
20
  attr_reader :audiences
21
21
 
22
+ sig { returns(Courier::Resources::Providers) }
23
+ attr_reader :providers
24
+
22
25
  sig { returns(Courier::Resources::AuditEvents) }
23
26
  attr_reader :audit_events
24
27
 
@@ -52,6 +55,9 @@ module Courier
52
55
  sig { returns(Courier::Resources::Notifications) }
53
56
  attr_reader :notifications
54
57
 
58
+ sig { returns(Courier::Resources::RoutingStrategies) }
59
+ attr_reader :routing_strategies
60
+
55
61
  sig { returns(Courier::Resources::Profiles) }
56
62
  attr_reader :profiles
57
63
 
@@ -148,12 +148,20 @@ module Courier
148
148
  end
149
149
  end
150
150
 
151
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
152
+ RFC_3986_NOT_PCHARS = T.let(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/, Regexp)
153
+
151
154
  class << self
152
155
  # @api private
153
156
  sig { params(uri: URI::Generic).returns(String) }
154
157
  def uri_origin(uri)
155
158
  end
156
159
 
160
+ # @api private
161
+ sig { params(path: T.any(String, Integer)).returns(String) }
162
+ def encode_path(path)
163
+ end
164
+
157
165
  # @api private
158
166
  sig { params(path: T.any(String, T::Array[String])).returns(String) }
159
167
  def interpolate_path(path)
@@ -0,0 +1,45 @@
1
+ # typed: strong
2
+
3
+ module Courier
4
+ module Models
5
+ class AssociatedNotificationListResponse < Courier::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Courier::AssociatedNotificationListResponse,
10
+ Courier::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(Courier::Paging) }
15
+ attr_reader :paging
16
+
17
+ sig { params(paging: Courier::Paging::OrHash).void }
18
+ attr_writer :paging
19
+
20
+ sig { returns(T::Array[Courier::NotificationTemplateSummary]) }
21
+ attr_accessor :results
22
+
23
+ # Paginated list of notification templates associated with a routing strategy.
24
+ sig do
25
+ params(
26
+ paging: Courier::Paging::OrHash,
27
+ results: T::Array[Courier::NotificationTemplateSummary::OrHash]
28
+ ).returns(T.attached_class)
29
+ end
30
+ def self.new(paging:, results:)
31
+ end
32
+
33
+ sig do
34
+ override.returns(
35
+ {
36
+ paging: Courier::Paging,
37
+ results: T::Array[Courier::NotificationTemplateSummary]
38
+ }
39
+ )
40
+ end
41
+ def to_hash
42
+ end
43
+ end
44
+ end
45
+ end