ark-email 0.5.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 (272) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +71 -0
  4. data/README.md +303 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/ark_email/client.rb +102 -0
  7. data/lib/ark_email/errors.rb +228 -0
  8. data/lib/ark_email/file_part.rb +58 -0
  9. data/lib/ark_email/internal/page_number_pagination.rb +121 -0
  10. data/lib/ark_email/internal/transport/base_client.rb +573 -0
  11. data/lib/ark_email/internal/transport/pooled_net_requester.rb +210 -0
  12. data/lib/ark_email/internal/type/array_of.rb +168 -0
  13. data/lib/ark_email/internal/type/base_model.rb +529 -0
  14. data/lib/ark_email/internal/type/base_page.rb +55 -0
  15. data/lib/ark_email/internal/type/boolean.rb +77 -0
  16. data/lib/ark_email/internal/type/converter.rb +327 -0
  17. data/lib/ark_email/internal/type/enum.rb +131 -0
  18. data/lib/ark_email/internal/type/file_input.rb +111 -0
  19. data/lib/ark_email/internal/type/hash_of.rb +188 -0
  20. data/lib/ark_email/internal/type/request_parameters.rb +42 -0
  21. data/lib/ark_email/internal/type/union.rb +237 -0
  22. data/lib/ark_email/internal/type/unknown.rb +81 -0
  23. data/lib/ark_email/internal/util.rb +920 -0
  24. data/lib/ark_email/internal.rb +20 -0
  25. data/lib/ark_email/models/api_meta.rb +16 -0
  26. data/lib/ark_email/models/dns_record.rb +81 -0
  27. data/lib/ark_email/models/domain_create_params.rb +22 -0
  28. data/lib/ark_email/models/domain_create_response.rb +110 -0
  29. data/lib/ark_email/models/domain_delete_params.rb +14 -0
  30. data/lib/ark_email/models/domain_delete_response.rb +39 -0
  31. data/lib/ark_email/models/domain_list_params.rb +14 -0
  32. data/lib/ark_email/models/domain_list_response.rb +72 -0
  33. data/lib/ark_email/models/domain_retrieve_params.rb +14 -0
  34. data/lib/ark_email/models/domain_retrieve_response.rb +110 -0
  35. data/lib/ark_email/models/domain_verify_params.rb +14 -0
  36. data/lib/ark_email/models/domain_verify_response.rb +110 -0
  37. data/lib/ark_email/models/email_list_params.rb +110 -0
  38. data/lib/ark_email/models/email_list_response.rb +108 -0
  39. data/lib/ark_email/models/email_retrieve_deliveries_params.rb +14 -0
  40. data/lib/ark_email/models/email_retrieve_deliveries_response.rb +123 -0
  41. data/lib/ark_email/models/email_retrieve_params.rb +30 -0
  42. data/lib/ark_email/models/email_retrieve_response.rb +285 -0
  43. data/lib/ark_email/models/email_retry_params.rb +14 -0
  44. data/lib/ark_email/models/email_retry_response.rb +39 -0
  45. data/lib/ark_email/models/email_send_batch_params.rb +70 -0
  46. data/lib/ark_email/models/email_send_batch_response.rb +83 -0
  47. data/lib/ark_email/models/email_send_params.rb +149 -0
  48. data/lib/ark_email/models/email_send_raw_params.rb +38 -0
  49. data/lib/ark_email/models/email_send_raw_response.rb +77 -0
  50. data/lib/ark_email/models/email_send_response.rb +77 -0
  51. data/lib/ark_email/models/suppression_bulk_create_params.rb +37 -0
  52. data/lib/ark_email/models/suppression_bulk_create_response.rb +64 -0
  53. data/lib/ark_email/models/suppression_create_params.rb +30 -0
  54. data/lib/ark_email/models/suppression_create_response.rb +62 -0
  55. data/lib/ark_email/models/suppression_delete_params.rb +14 -0
  56. data/lib/ark_email/models/suppression_delete_response.rb +39 -0
  57. data/lib/ark_email/models/suppression_list_params.rb +26 -0
  58. data/lib/ark_email/models/suppression_list_response.rb +38 -0
  59. data/lib/ark_email/models/suppression_retrieve_params.rb +14 -0
  60. data/lib/ark_email/models/suppression_retrieve_response.rb +64 -0
  61. data/lib/ark_email/models/track_domain.rb +172 -0
  62. data/lib/ark_email/models/tracking_create_params.rb +54 -0
  63. data/lib/ark_email/models/tracking_create_response.rb +28 -0
  64. data/lib/ark_email/models/tracking_delete_params.rb +14 -0
  65. data/lib/ark_email/models/tracking_delete_response.rb +39 -0
  66. data/lib/ark_email/models/tracking_list_params.rb +14 -0
  67. data/lib/ark_email/models/tracking_list_response.rb +41 -0
  68. data/lib/ark_email/models/tracking_retrieve_params.rb +14 -0
  69. data/lib/ark_email/models/tracking_retrieve_response.rb +28 -0
  70. data/lib/ark_email/models/tracking_update_params.rb +46 -0
  71. data/lib/ark_email/models/tracking_update_response.rb +28 -0
  72. data/lib/ark_email/models/tracking_verify_params.rb +14 -0
  73. data/lib/ark_email/models/tracking_verify_response.rb +133 -0
  74. data/lib/ark_email/models/webhook_create_params.rb +81 -0
  75. data/lib/ark_email/models/webhook_create_response.rb +111 -0
  76. data/lib/ark_email/models/webhook_delete_params.rb +14 -0
  77. data/lib/ark_email/models/webhook_delete_response.rb +39 -0
  78. data/lib/ark_email/models/webhook_list_params.rb +14 -0
  79. data/lib/ark_email/models/webhook_list_response.rb +79 -0
  80. data/lib/ark_email/models/webhook_retrieve_params.rb +14 -0
  81. data/lib/ark_email/models/webhook_retrieve_response.rb +111 -0
  82. data/lib/ark_email/models/webhook_test_params.rb +39 -0
  83. data/lib/ark_email/models/webhook_test_response.rb +80 -0
  84. data/lib/ark_email/models/webhook_update_params.rb +44 -0
  85. data/lib/ark_email/models/webhook_update_response.rb +111 -0
  86. data/lib/ark_email/models.rb +105 -0
  87. data/lib/ark_email/request_options.rb +77 -0
  88. data/lib/ark_email/resources/domains.rb +127 -0
  89. data/lib/ark_email/resources/emails.rb +263 -0
  90. data/lib/ark_email/resources/suppressions.rb +124 -0
  91. data/lib/ark_email/resources/tracking.rb +167 -0
  92. data/lib/ark_email/resources/webhooks.rb +175 -0
  93. data/lib/ark_email/version.rb +5 -0
  94. data/lib/ark_email.rb +122 -0
  95. data/manifest.yaml +17 -0
  96. data/rbi/ark_email/client.rbi +73 -0
  97. data/rbi/ark_email/errors.rbi +205 -0
  98. data/rbi/ark_email/file_part.rbi +37 -0
  99. data/rbi/ark_email/internal/page_number_pagination.rbi +52 -0
  100. data/rbi/ark_email/internal/transport/base_client.rbi +297 -0
  101. data/rbi/ark_email/internal/transport/pooled_net_requester.rbi +83 -0
  102. data/rbi/ark_email/internal/type/array_of.rbi +104 -0
  103. data/rbi/ark_email/internal/type/base_model.rbi +306 -0
  104. data/rbi/ark_email/internal/type/base_page.rbi +42 -0
  105. data/rbi/ark_email/internal/type/boolean.rbi +58 -0
  106. data/rbi/ark_email/internal/type/converter.rbi +216 -0
  107. data/rbi/ark_email/internal/type/enum.rbi +82 -0
  108. data/rbi/ark_email/internal/type/file_input.rbi +59 -0
  109. data/rbi/ark_email/internal/type/hash_of.rbi +104 -0
  110. data/rbi/ark_email/internal/type/request_parameters.rbi +29 -0
  111. data/rbi/ark_email/internal/type/union.rbi +128 -0
  112. data/rbi/ark_email/internal/type/unknown.rbi +58 -0
  113. data/rbi/ark_email/internal/util.rbi +487 -0
  114. data/rbi/ark_email/internal.rbi +16 -0
  115. data/rbi/ark_email/models/api_meta.rbi +25 -0
  116. data/rbi/ark_email/models/dns_record.rbi +111 -0
  117. data/rbi/ark_email/models/domain_create_params.rbi +40 -0
  118. data/rbi/ark_email/models/domain_create_response.rbi +193 -0
  119. data/rbi/ark_email/models/domain_delete_params.rbi +27 -0
  120. data/rbi/ark_email/models/domain_delete_response.rbi +75 -0
  121. data/rbi/ark_email/models/domain_list_params.rbi +27 -0
  122. data/rbi/ark_email/models/domain_list_response.rbi +144 -0
  123. data/rbi/ark_email/models/domain_retrieve_params.rbi +27 -0
  124. data/rbi/ark_email/models/domain_retrieve_response.rbi +195 -0
  125. data/rbi/ark_email/models/domain_verify_params.rbi +27 -0
  126. data/rbi/ark_email/models/domain_verify_response.rbi +193 -0
  127. data/rbi/ark_email/models/email_list_params.rbi +172 -0
  128. data/rbi/ark_email/models/email_list_response.rbi +164 -0
  129. data/rbi/ark_email/models/email_retrieve_deliveries_params.rbi +30 -0
  130. data/rbi/ark_email/models/email_retrieve_deliveries_response.rbi +220 -0
  131. data/rbi/ark_email/models/email_retrieve_params.rbi +53 -0
  132. data/rbi/ark_email/models/email_retrieve_response.rbi +490 -0
  133. data/rbi/ark_email/models/email_retry_params.rbi +27 -0
  134. data/rbi/ark_email/models/email_retry_response.rbi +75 -0
  135. data/rbi/ark_email/models/email_send_batch_params.rbi +118 -0
  136. data/rbi/ark_email/models/email_send_batch_response.rbi +159 -0
  137. data/rbi/ark_email/models/email_send_params.rbi +229 -0
  138. data/rbi/ark_email/models/email_send_raw_params.rbi +59 -0
  139. data/rbi/ark_email/models/email_send_raw_response.rbi +157 -0
  140. data/rbi/ark_email/models/email_send_response.rbi +153 -0
  141. data/rbi/ark_email/models/suppression_bulk_create_params.rbi +76 -0
  142. data/rbi/ark_email/models/suppression_bulk_create_response.rbi +115 -0
  143. data/rbi/ark_email/models/suppression_create_params.rbi +54 -0
  144. data/rbi/ark_email/models/suppression_create_response.rbi +109 -0
  145. data/rbi/ark_email/models/suppression_delete_params.rbi +27 -0
  146. data/rbi/ark_email/models/suppression_delete_response.rbi +77 -0
  147. data/rbi/ark_email/models/suppression_list_params.rbi +49 -0
  148. data/rbi/ark_email/models/suppression_list_response.rbi +56 -0
  149. data/rbi/ark_email/models/suppression_retrieve_params.rbi +30 -0
  150. data/rbi/ark_email/models/suppression_retrieve_response.rbi +115 -0
  151. data/rbi/ark_email/models/track_domain.rbi +228 -0
  152. data/rbi/ark_email/models/tracking_create_params.rbi +84 -0
  153. data/rbi/ark_email/models/tracking_create_response.rbi +52 -0
  154. data/rbi/ark_email/models/tracking_delete_params.rbi +27 -0
  155. data/rbi/ark_email/models/tracking_delete_response.rbi +77 -0
  156. data/rbi/ark_email/models/tracking_list_params.rbi +27 -0
  157. data/rbi/ark_email/models/tracking_list_response.rbi +81 -0
  158. data/rbi/ark_email/models/tracking_retrieve_params.rbi +27 -0
  159. data/rbi/ark_email/models/tracking_retrieve_response.rbi +52 -0
  160. data/rbi/ark_email/models/tracking_update_params.rbi +79 -0
  161. data/rbi/ark_email/models/tracking_update_response.rbi +52 -0
  162. data/rbi/ark_email/models/tracking_verify_params.rbi +27 -0
  163. data/rbi/ark_email/models/tracking_verify_response.rbi +254 -0
  164. data/rbi/ark_email/models/webhook_create_params.rbi +154 -0
  165. data/rbi/ark_email/models/webhook_create_response.rbi +217 -0
  166. data/rbi/ark_email/models/webhook_delete_params.rbi +27 -0
  167. data/rbi/ark_email/models/webhook_delete_response.rbi +75 -0
  168. data/rbi/ark_email/models/webhook_list_params.rbi +27 -0
  169. data/rbi/ark_email/models/webhook_list_response.rbi +152 -0
  170. data/rbi/ark_email/models/webhook_retrieve_params.rbi +27 -0
  171. data/rbi/ark_email/models/webhook_retrieve_response.rbi +219 -0
  172. data/rbi/ark_email/models/webhook_test_params.rbi +95 -0
  173. data/rbi/ark_email/models/webhook_test_response.rbi +129 -0
  174. data/rbi/ark_email/models/webhook_update_params.rbi +80 -0
  175. data/rbi/ark_email/models/webhook_update_response.rbi +217 -0
  176. data/rbi/ark_email/models.rbi +68 -0
  177. data/rbi/ark_email/request_options.rbi +59 -0
  178. data/rbi/ark_email/resources/domains.rbi +84 -0
  179. data/rbi/ark_email/resources/emails.rbi +237 -0
  180. data/rbi/ark_email/resources/suppressions.rbi +84 -0
  181. data/rbi/ark_email/resources/tracking.rbi +130 -0
  182. data/rbi/ark_email/resources/webhooks.rbi +137 -0
  183. data/rbi/ark_email/version.rbi +5 -0
  184. data/sig/ark_email/client.rbs +34 -0
  185. data/sig/ark_email/errors.rbs +117 -0
  186. data/sig/ark_email/file_part.rbs +21 -0
  187. data/sig/ark_email/internal/page_number_pagination.rbs +32 -0
  188. data/sig/ark_email/internal/transport/base_client.rbs +133 -0
  189. data/sig/ark_email/internal/transport/pooled_net_requester.rbs +48 -0
  190. data/sig/ark_email/internal/type/array_of.rbs +48 -0
  191. data/sig/ark_email/internal/type/base_model.rbs +102 -0
  192. data/sig/ark_email/internal/type/base_page.rbs +24 -0
  193. data/sig/ark_email/internal/type/boolean.rbs +26 -0
  194. data/sig/ark_email/internal/type/converter.rbs +79 -0
  195. data/sig/ark_email/internal/type/enum.rbs +32 -0
  196. data/sig/ark_email/internal/type/file_input.rbs +25 -0
  197. data/sig/ark_email/internal/type/hash_of.rbs +48 -0
  198. data/sig/ark_email/internal/type/request_parameters.rbs +17 -0
  199. data/sig/ark_email/internal/type/union.rbs +52 -0
  200. data/sig/ark_email/internal/type/unknown.rbs +26 -0
  201. data/sig/ark_email/internal/util.rbs +185 -0
  202. data/sig/ark_email/internal.rbs +9 -0
  203. data/sig/ark_email/models/api_meta.rbs +13 -0
  204. data/sig/ark_email/models/dns_record.rbs +59 -0
  205. data/sig/ark_email/models/domain_create_params.rbs +23 -0
  206. data/sig/ark_email/models/domain_create_response.rbs +104 -0
  207. data/sig/ark_email/models/domain_delete_params.rbs +15 -0
  208. data/sig/ark_email/models/domain_delete_response.rbs +40 -0
  209. data/sig/ark_email/models/domain_list_params.rbs +15 -0
  210. data/sig/ark_email/models/domain_list_response.rbs +71 -0
  211. data/sig/ark_email/models/domain_retrieve_params.rbs +15 -0
  212. data/sig/ark_email/models/domain_retrieve_response.rbs +104 -0
  213. data/sig/ark_email/models/domain_verify_params.rbs +15 -0
  214. data/sig/ark_email/models/domain_verify_response.rbs +104 -0
  215. data/sig/ark_email/models/email_list_params.rbs +94 -0
  216. data/sig/ark_email/models/email_list_response.rbs +77 -0
  217. data/sig/ark_email/models/email_retrieve_deliveries_params.rbs +15 -0
  218. data/sig/ark_email/models/email_retrieve_deliveries_response.rbs +117 -0
  219. data/sig/ark_email/models/email_retrieve_params.rbs +25 -0
  220. data/sig/ark_email/models/email_retrieve_response.rbs +232 -0
  221. data/sig/ark_email/models/email_retry_params.rbs +15 -0
  222. data/sig/ark_email/models/email_retry_response.rbs +40 -0
  223. data/sig/ark_email/models/email_send_batch_params.rbs +81 -0
  224. data/sig/ark_email/models/email_send_batch_response.rbs +74 -0
  225. data/sig/ark_email/models/email_send_params.rbs +124 -0
  226. data/sig/ark_email/models/email_send_raw_params.rbs +32 -0
  227. data/sig/ark_email/models/email_send_raw_response.rbs +75 -0
  228. data/sig/ark_email/models/email_send_response.rbs +75 -0
  229. data/sig/ark_email/models/suppression_bulk_create_params.rbs +40 -0
  230. data/sig/ark_email/models/suppression_bulk_create_response.rbs +62 -0
  231. data/sig/ark_email/models/suppression_create_params.rbs +30 -0
  232. data/sig/ark_email/models/suppression_create_response.rbs +59 -0
  233. data/sig/ark_email/models/suppression_delete_params.rbs +15 -0
  234. data/sig/ark_email/models/suppression_delete_response.rbs +40 -0
  235. data/sig/ark_email/models/suppression_list_params.rbs +32 -0
  236. data/sig/ark_email/models/suppression_list_response.rbs +32 -0
  237. data/sig/ark_email/models/suppression_retrieve_params.rbs +15 -0
  238. data/sig/ark_email/models/suppression_retrieve_response.rbs +62 -0
  239. data/sig/ark_email/models/track_domain.rbs +122 -0
  240. data/sig/ark_email/models/tracking_create_params.rbs +52 -0
  241. data/sig/ark_email/models/tracking_create_response.rbs +26 -0
  242. data/sig/ark_email/models/tracking_delete_params.rbs +15 -0
  243. data/sig/ark_email/models/tracking_delete_response.rbs +40 -0
  244. data/sig/ark_email/models/tracking_list_params.rbs +15 -0
  245. data/sig/ark_email/models/tracking_list_response.rbs +40 -0
  246. data/sig/ark_email/models/tracking_retrieve_params.rbs +15 -0
  247. data/sig/ark_email/models/tracking_retrieve_response.rbs +26 -0
  248. data/sig/ark_email/models/tracking_update_params.rbs +49 -0
  249. data/sig/ark_email/models/tracking_update_response.rbs +26 -0
  250. data/sig/ark_email/models/tracking_verify_params.rbs +15 -0
  251. data/sig/ark_email/models/tracking_verify_response.rbs +109 -0
  252. data/sig/ark_email/models/webhook_create_params.rbs +75 -0
  253. data/sig/ark_email/models/webhook_create_response.rbs +107 -0
  254. data/sig/ark_email/models/webhook_delete_params.rbs +15 -0
  255. data/sig/ark_email/models/webhook_delete_response.rbs +40 -0
  256. data/sig/ark_email/models/webhook_list_params.rbs +15 -0
  257. data/sig/ark_email/models/webhook_list_response.rbs +84 -0
  258. data/sig/ark_email/models/webhook_retrieve_params.rbs +15 -0
  259. data/sig/ark_email/models/webhook_retrieve_response.rbs +107 -0
  260. data/sig/ark_email/models/webhook_test_params.rbs +49 -0
  261. data/sig/ark_email/models/webhook_test_response.rbs +72 -0
  262. data/sig/ark_email/models/webhook_update_params.rbs +56 -0
  263. data/sig/ark_email/models/webhook_update_response.rbs +107 -0
  264. data/sig/ark_email/models.rbs +65 -0
  265. data/sig/ark_email/request_options.rbs +34 -0
  266. data/sig/ark_email/resources/domains.rbs +31 -0
  267. data/sig/ark_email/resources/emails.rbs +65 -0
  268. data/sig/ark_email/resources/suppressions.rbs +34 -0
  269. data/sig/ark_email/resources/tracking.rbs +44 -0
  270. data/sig/ark_email/resources/webhooks.rbs +46 -0
  271. data/sig/ark_email/version.rbs +3 -0
  272. metadata +343 -0
@@ -0,0 +1,175 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ module Resources
5
+ class Webhooks
6
+ # Some parameter documentations has been truncated, see
7
+ # {ArkEmail::Models::WebhookCreateParams} for more details.
8
+ #
9
+ # Create a webhook endpoint to receive email event notifications.
10
+ #
11
+ # **Available events:**
12
+ #
13
+ # - `MessageSent` - Email accepted by recipient server
14
+ # - `MessageDeliveryFailed` - Delivery permanently failed
15
+ # - `MessageDelayed` - Delivery temporarily failed, will retry
16
+ # - `MessageBounced` - Email bounced
17
+ # - `MessageHeld` - Email held for review
18
+ # - `MessageLinkClicked` - Recipient clicked a link
19
+ # - `MessageLoaded` - Recipient opened the email
20
+ # - `DomainDNSError` - Domain DNS issue detected
21
+ #
22
+ # @overload create(events:, name:, url:, all_events: nil, enabled: nil, request_options: {})
23
+ #
24
+ # @param events [Array<Symbol, ArkEmail::Models::WebhookCreateParams::Event>] Events to subscribe to:
25
+ #
26
+ # @param name [String] Webhook name for identification
27
+ #
28
+ # @param url [String] HTTPS endpoint URL
29
+ #
30
+ # @param all_events [Boolean] Subscribe to all events (ignores events array)
31
+ #
32
+ # @param enabled [Boolean]
33
+ #
34
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
35
+ #
36
+ # @return [ArkEmail::Models::WebhookCreateResponse]
37
+ #
38
+ # @see ArkEmail::Models::WebhookCreateParams
39
+ def create(params)
40
+ parsed, options = ArkEmail::WebhookCreateParams.dump_request(params)
41
+ @client.request(
42
+ method: :post,
43
+ path: "webhooks",
44
+ body: parsed,
45
+ model: ArkEmail::Models::WebhookCreateResponse,
46
+ options: options
47
+ )
48
+ end
49
+
50
+ # Get webhook details
51
+ #
52
+ # @overload retrieve(webhook_id, request_options: {})
53
+ #
54
+ # @param webhook_id [String]
55
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
56
+ #
57
+ # @return [ArkEmail::Models::WebhookRetrieveResponse]
58
+ #
59
+ # @see ArkEmail::Models::WebhookRetrieveParams
60
+ def retrieve(webhook_id, params = {})
61
+ @client.request(
62
+ method: :get,
63
+ path: ["webhooks/%1$s", webhook_id],
64
+ model: ArkEmail::Models::WebhookRetrieveResponse,
65
+ options: params[:request_options]
66
+ )
67
+ end
68
+
69
+ # Update a webhook
70
+ #
71
+ # @overload update(webhook_id, all_events: nil, enabled: nil, events: nil, name: nil, url: nil, request_options: {})
72
+ #
73
+ # @param webhook_id [String]
74
+ # @param all_events [Boolean]
75
+ # @param enabled [Boolean]
76
+ # @param events [Array<String>]
77
+ # @param name [String]
78
+ # @param url [String]
79
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
80
+ #
81
+ # @return [ArkEmail::Models::WebhookUpdateResponse]
82
+ #
83
+ # @see ArkEmail::Models::WebhookUpdateParams
84
+ def update(webhook_id, params = {})
85
+ parsed, options = ArkEmail::WebhookUpdateParams.dump_request(params)
86
+ @client.request(
87
+ method: :patch,
88
+ path: ["webhooks/%1$s", webhook_id],
89
+ body: parsed,
90
+ model: ArkEmail::Models::WebhookUpdateResponse,
91
+ options: options
92
+ )
93
+ end
94
+
95
+ # Get all configured webhook endpoints
96
+ #
97
+ # @overload list(request_options: {})
98
+ #
99
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
100
+ #
101
+ # @return [ArkEmail::Models::WebhookListResponse]
102
+ #
103
+ # @see ArkEmail::Models::WebhookListParams
104
+ def list(params = {})
105
+ @client.request(
106
+ method: :get,
107
+ path: "webhooks",
108
+ model: ArkEmail::Models::WebhookListResponse,
109
+ options: params[:request_options]
110
+ )
111
+ end
112
+
113
+ # Delete a webhook
114
+ #
115
+ # @overload delete(webhook_id, request_options: {})
116
+ #
117
+ # @param webhook_id [String]
118
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
119
+ #
120
+ # @return [ArkEmail::Models::WebhookDeleteResponse]
121
+ #
122
+ # @see ArkEmail::Models::WebhookDeleteParams
123
+ def delete(webhook_id, params = {})
124
+ @client.request(
125
+ method: :delete,
126
+ path: ["webhooks/%1$s", webhook_id],
127
+ model: ArkEmail::Models::WebhookDeleteResponse,
128
+ options: params[:request_options]
129
+ )
130
+ end
131
+
132
+ # Send a test payload to your webhook endpoint and verify it receives the data
133
+ # correctly.
134
+ #
135
+ # Use this to:
136
+ #
137
+ # - Verify your webhook URL is accessible
138
+ # - Test your signature verification code
139
+ # - Ensure your server handles the payload format correctly
140
+ #
141
+ # **Test payload format:** The test payload is identical to real webhook payloads,
142
+ # containing sample data for the specified event type. Your webhook should respond
143
+ # with a 2xx status code.
144
+ #
145
+ # @overload test_(webhook_id, event:, request_options: {})
146
+ #
147
+ # @param webhook_id [String] Webhook ID or UUID
148
+ #
149
+ # @param event [Symbol, ArkEmail::Models::WebhookTestParams::Event] Event type to simulate
150
+ #
151
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
152
+ #
153
+ # @return [ArkEmail::Models::WebhookTestResponse]
154
+ #
155
+ # @see ArkEmail::Models::WebhookTestParams
156
+ def test_(webhook_id, params)
157
+ parsed, options = ArkEmail::WebhookTestParams.dump_request(params)
158
+ @client.request(
159
+ method: :post,
160
+ path: ["webhooks/%1$s/test", webhook_id],
161
+ body: parsed,
162
+ model: ArkEmail::Models::WebhookTestResponse,
163
+ options: options
164
+ )
165
+ end
166
+
167
+ # @api private
168
+ #
169
+ # @param client [ArkEmail::Client]
170
+ def initialize(client:)
171
+ @client = client
172
+ end
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ VERSION = "0.5.1"
5
+ end
data/lib/ark_email.rb ADDED
@@ -0,0 +1,122 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Standard libraries.
4
+ # rubocop:disable Lint/RedundantRequireStatement
5
+ require "English"
6
+ require "base64"
7
+ require "cgi"
8
+ require "date"
9
+ require "erb"
10
+ require "etc"
11
+ require "json"
12
+ require "net/http"
13
+ require "openssl"
14
+ require "pathname"
15
+ require "rbconfig"
16
+ require "securerandom"
17
+ require "set"
18
+ require "stringio"
19
+ require "time"
20
+ require "uri"
21
+ # rubocop:enable Lint/RedundantRequireStatement
22
+
23
+ # We already ship the preferred sorbet manifests in the package itself.
24
+ # `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
25
+ if Object.const_defined?(:Tapioca) &&
26
+ caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
27
+ ARGV.none?(/dsl/)
28
+ return
29
+ end
30
+
31
+ # Gems.
32
+ require "connection_pool"
33
+
34
+ # Package files.
35
+ require_relative "ark_email/version"
36
+ require_relative "ark_email/internal/util"
37
+ require_relative "ark_email/internal/type/converter"
38
+ require_relative "ark_email/internal/type/unknown"
39
+ require_relative "ark_email/internal/type/boolean"
40
+ require_relative "ark_email/internal/type/file_input"
41
+ require_relative "ark_email/internal/type/enum"
42
+ require_relative "ark_email/internal/type/union"
43
+ require_relative "ark_email/internal/type/array_of"
44
+ require_relative "ark_email/internal/type/hash_of"
45
+ require_relative "ark_email/internal/type/base_model"
46
+ require_relative "ark_email/internal/type/base_page"
47
+ require_relative "ark_email/internal/type/request_parameters"
48
+ require_relative "ark_email/internal"
49
+ require_relative "ark_email/request_options"
50
+ require_relative "ark_email/file_part"
51
+ require_relative "ark_email/errors"
52
+ require_relative "ark_email/internal/transport/base_client"
53
+ require_relative "ark_email/internal/transport/pooled_net_requester"
54
+ require_relative "ark_email/client"
55
+ require_relative "ark_email/internal/page_number_pagination"
56
+ require_relative "ark_email/models/api_meta"
57
+ require_relative "ark_email/models/dns_record"
58
+ require_relative "ark_email/models/domain_create_params"
59
+ require_relative "ark_email/models/domain_create_response"
60
+ require_relative "ark_email/models/domain_delete_params"
61
+ require_relative "ark_email/models/domain_delete_response"
62
+ require_relative "ark_email/models/domain_list_params"
63
+ require_relative "ark_email/models/domain_list_response"
64
+ require_relative "ark_email/models/domain_retrieve_params"
65
+ require_relative "ark_email/models/domain_retrieve_response"
66
+ require_relative "ark_email/models/domain_verify_params"
67
+ require_relative "ark_email/models/domain_verify_response"
68
+ require_relative "ark_email/models/email_list_params"
69
+ require_relative "ark_email/models/email_list_response"
70
+ require_relative "ark_email/models/email_retrieve_deliveries_params"
71
+ require_relative "ark_email/models/email_retrieve_deliveries_response"
72
+ require_relative "ark_email/models/email_retrieve_params"
73
+ require_relative "ark_email/models/email_retrieve_response"
74
+ require_relative "ark_email/models/email_retry_params"
75
+ require_relative "ark_email/models/email_retry_response"
76
+ require_relative "ark_email/models/email_send_batch_params"
77
+ require_relative "ark_email/models/email_send_batch_response"
78
+ require_relative "ark_email/models/email_send_params"
79
+ require_relative "ark_email/models/email_send_raw_params"
80
+ require_relative "ark_email/models/email_send_raw_response"
81
+ require_relative "ark_email/models/email_send_response"
82
+ require_relative "ark_email/models/suppression_bulk_create_params"
83
+ require_relative "ark_email/models/suppression_bulk_create_response"
84
+ require_relative "ark_email/models/suppression_create_params"
85
+ require_relative "ark_email/models/suppression_create_response"
86
+ require_relative "ark_email/models/suppression_delete_params"
87
+ require_relative "ark_email/models/suppression_delete_response"
88
+ require_relative "ark_email/models/suppression_list_params"
89
+ require_relative "ark_email/models/suppression_list_response"
90
+ require_relative "ark_email/models/suppression_retrieve_params"
91
+ require_relative "ark_email/models/suppression_retrieve_response"
92
+ require_relative "ark_email/models/track_domain"
93
+ require_relative "ark_email/models/tracking_create_params"
94
+ require_relative "ark_email/models/tracking_create_response"
95
+ require_relative "ark_email/models/tracking_delete_params"
96
+ require_relative "ark_email/models/tracking_delete_response"
97
+ require_relative "ark_email/models/tracking_list_params"
98
+ require_relative "ark_email/models/tracking_list_response"
99
+ require_relative "ark_email/models/tracking_retrieve_params"
100
+ require_relative "ark_email/models/tracking_retrieve_response"
101
+ require_relative "ark_email/models/tracking_update_params"
102
+ require_relative "ark_email/models/tracking_update_response"
103
+ require_relative "ark_email/models/tracking_verify_params"
104
+ require_relative "ark_email/models/tracking_verify_response"
105
+ require_relative "ark_email/models/webhook_create_params"
106
+ require_relative "ark_email/models/webhook_create_response"
107
+ require_relative "ark_email/models/webhook_delete_params"
108
+ require_relative "ark_email/models/webhook_delete_response"
109
+ require_relative "ark_email/models/webhook_list_params"
110
+ require_relative "ark_email/models/webhook_list_response"
111
+ require_relative "ark_email/models/webhook_retrieve_params"
112
+ require_relative "ark_email/models/webhook_retrieve_response"
113
+ require_relative "ark_email/models/webhook_test_params"
114
+ require_relative "ark_email/models/webhook_test_response"
115
+ require_relative "ark_email/models/webhook_update_params"
116
+ require_relative "ark_email/models/webhook_update_response"
117
+ require_relative "ark_email/models"
118
+ require_relative "ark_email/resources/domains"
119
+ require_relative "ark_email/resources/emails"
120
+ require_relative "ark_email/resources/suppressions"
121
+ require_relative "ark_email/resources/tracking"
122
+ require_relative "ark_email/resources/webhooks"
data/manifest.yaml ADDED
@@ -0,0 +1,17 @@
1
+ dependencies:
2
+ - English
3
+ - base64
4
+ - cgi
5
+ - date
6
+ - erb
7
+ - etc
8
+ - json
9
+ - net/http
10
+ - openssl
11
+ - pathname
12
+ - rbconfig
13
+ - securerandom
14
+ - set
15
+ - stringio
16
+ - time
17
+ - uri
@@ -0,0 +1,73 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ class Client < ArkEmail::Internal::Transport::BaseClient
5
+ DEFAULT_MAX_RETRIES = 2
6
+
7
+ DEFAULT_TIMEOUT_IN_SECONDS = T.let(60.0, Float)
8
+
9
+ DEFAULT_INITIAL_RETRY_DELAY = T.let(0.5, Float)
10
+
11
+ DEFAULT_MAX_RETRY_DELAY = T.let(8.0, Float)
12
+
13
+ # Use your API key from
14
+ # [arkhq.io/org/credentials](https://arkhq.io/org/credentials)
15
+ #
16
+ # ```
17
+ # Authorization: Bearer YOUR_API_KEY
18
+ # ```
19
+ sig { returns(String) }
20
+ attr_reader :api_key
21
+
22
+ sig { returns(ArkEmail::Resources::Emails) }
23
+ attr_reader :emails
24
+
25
+ sig { returns(ArkEmail::Resources::Domains) }
26
+ attr_reader :domains
27
+
28
+ sig { returns(ArkEmail::Resources::Suppressions) }
29
+ attr_reader :suppressions
30
+
31
+ sig { returns(ArkEmail::Resources::Webhooks) }
32
+ attr_reader :webhooks
33
+
34
+ sig { returns(ArkEmail::Resources::Tracking) }
35
+ attr_reader :tracking
36
+
37
+ # @api private
38
+ sig { override.returns(T::Hash[String, String]) }
39
+ private def auth_headers
40
+ end
41
+
42
+ # Creates and returns a new client for interacting with the API.
43
+ sig do
44
+ params(
45
+ api_key: T.nilable(String),
46
+ base_url: T.nilable(String),
47
+ max_retries: Integer,
48
+ timeout: Float,
49
+ initial_retry_delay: Float,
50
+ max_retry_delay: Float
51
+ ).returns(T.attached_class)
52
+ end
53
+ def self.new(
54
+ # Use your API key from
55
+ # [arkhq.io/org/credentials](https://arkhq.io/org/credentials)
56
+ #
57
+ # ````
58
+ # Authorization: Bearer YOUR_API_KEY
59
+ # ``` Defaults to `ENV["ARK_API_KEY"]`
60
+ # ````
61
+ api_key: ENV["ARK_API_KEY"],
62
+ # Override the default base URL for the API, e.g.,
63
+ # `"https://api.example.com/v2/"`. Defaults to `ENV["ARK_BASE_URL"]`
64
+ base_url: ENV["ARK_BASE_URL"],
65
+ # Max number of retries to attempt after a failed retryable request.
66
+ max_retries: ArkEmail::Client::DEFAULT_MAX_RETRIES,
67
+ timeout: ArkEmail::Client::DEFAULT_TIMEOUT_IN_SECONDS,
68
+ initial_retry_delay: ArkEmail::Client::DEFAULT_INITIAL_RETRY_DELAY,
69
+ max_retry_delay: ArkEmail::Client::DEFAULT_MAX_RETRY_DELAY
70
+ )
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,205 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Errors
5
+ class Error < StandardError
6
+ sig { returns(T.nilable(StandardError)) }
7
+ attr_accessor :cause
8
+ end
9
+
10
+ class ConversionError < ArkEmail::Errors::Error
11
+ sig { returns(T.nilable(StandardError)) }
12
+ def cause
13
+ end
14
+
15
+ # @api private
16
+ sig do
17
+ params(
18
+ on: T::Class[StandardError],
19
+ method: Symbol,
20
+ target: T.anything,
21
+ value: T.anything,
22
+ cause: T.nilable(StandardError)
23
+ ).returns(T.attached_class)
24
+ end
25
+ def self.new(on:, method:, target:, value:, cause: nil)
26
+ end
27
+ end
28
+
29
+ class APIError < ArkEmail::Errors::Error
30
+ sig { returns(URI::Generic) }
31
+ attr_accessor :url
32
+
33
+ sig { returns(T.nilable(Integer)) }
34
+ attr_accessor :status
35
+
36
+ sig { returns(T.nilable(T::Hash[String, String])) }
37
+ attr_accessor :headers
38
+
39
+ sig { returns(T.nilable(T.anything)) }
40
+ attr_accessor :body
41
+
42
+ # @api private
43
+ sig do
44
+ params(
45
+ url: URI::Generic,
46
+ status: T.nilable(Integer),
47
+ headers: T.nilable(T::Hash[String, String]),
48
+ body: T.nilable(Object),
49
+ request: NilClass,
50
+ response: NilClass,
51
+ message: T.nilable(String)
52
+ ).returns(T.attached_class)
53
+ end
54
+ def self.new(
55
+ url:,
56
+ status: nil,
57
+ headers: nil,
58
+ body: nil,
59
+ request: nil,
60
+ response: nil,
61
+ message: nil
62
+ )
63
+ end
64
+ end
65
+
66
+ class APIConnectionError < ArkEmail::Errors::APIError
67
+ sig { returns(NilClass) }
68
+ attr_accessor :status
69
+
70
+ sig { returns(NilClass) }
71
+ attr_accessor :body
72
+
73
+ # @api private
74
+ sig do
75
+ params(
76
+ url: URI::Generic,
77
+ status: NilClass,
78
+ headers: T.nilable(T::Hash[String, String]),
79
+ body: NilClass,
80
+ request: NilClass,
81
+ response: NilClass,
82
+ message: T.nilable(String)
83
+ ).returns(T.attached_class)
84
+ end
85
+ def self.new(
86
+ url:,
87
+ status: nil,
88
+ headers: nil,
89
+ body: nil,
90
+ request: nil,
91
+ response: nil,
92
+ message: "Connection error."
93
+ )
94
+ end
95
+ end
96
+
97
+ class APITimeoutError < ArkEmail::Errors::APIConnectionError
98
+ # @api private
99
+ sig do
100
+ params(
101
+ url: URI::Generic,
102
+ status: NilClass,
103
+ headers: T.nilable(T::Hash[String, String]),
104
+ body: NilClass,
105
+ request: NilClass,
106
+ response: NilClass,
107
+ message: T.nilable(String)
108
+ ).returns(T.attached_class)
109
+ end
110
+ def self.new(
111
+ url:,
112
+ status: nil,
113
+ headers: nil,
114
+ body: nil,
115
+ request: nil,
116
+ response: nil,
117
+ message: "Request timed out."
118
+ )
119
+ end
120
+ end
121
+
122
+ class APIStatusError < ArkEmail::Errors::APIError
123
+ # @api private
124
+ sig do
125
+ params(
126
+ url: URI::Generic,
127
+ status: Integer,
128
+ headers: T.nilable(T::Hash[String, String]),
129
+ body: T.nilable(Object),
130
+ request: NilClass,
131
+ response: NilClass,
132
+ message: T.nilable(String)
133
+ ).returns(T.attached_class)
134
+ end
135
+ def self.for(
136
+ url:,
137
+ status:,
138
+ headers:,
139
+ body:,
140
+ request:,
141
+ response:,
142
+ message: nil
143
+ )
144
+ end
145
+
146
+ sig { returns(Integer) }
147
+ attr_accessor :status
148
+
149
+ # @api private
150
+ sig do
151
+ params(
152
+ url: URI::Generic,
153
+ status: Integer,
154
+ headers: T.nilable(T::Hash[String, String]),
155
+ body: T.nilable(Object),
156
+ request: NilClass,
157
+ response: NilClass,
158
+ message: T.nilable(String)
159
+ ).returns(T.attached_class)
160
+ end
161
+ def self.new(
162
+ url:,
163
+ status:,
164
+ headers:,
165
+ body:,
166
+ request:,
167
+ response:,
168
+ message: nil
169
+ )
170
+ end
171
+ end
172
+
173
+ class BadRequestError < ArkEmail::Errors::APIStatusError
174
+ HTTP_STATUS = 400
175
+ end
176
+
177
+ class AuthenticationError < ArkEmail::Errors::APIStatusError
178
+ HTTP_STATUS = 401
179
+ end
180
+
181
+ class PermissionDeniedError < ArkEmail::Errors::APIStatusError
182
+ HTTP_STATUS = 403
183
+ end
184
+
185
+ class NotFoundError < ArkEmail::Errors::APIStatusError
186
+ HTTP_STATUS = 404
187
+ end
188
+
189
+ class ConflictError < ArkEmail::Errors::APIStatusError
190
+ HTTP_STATUS = 409
191
+ end
192
+
193
+ class UnprocessableEntityError < ArkEmail::Errors::APIStatusError
194
+ HTTP_STATUS = 422
195
+ end
196
+
197
+ class RateLimitError < ArkEmail::Errors::APIStatusError
198
+ HTTP_STATUS = 429
199
+ end
200
+
201
+ class InternalServerError < ArkEmail::Errors::APIStatusError
202
+ HTTP_STATUS = T.let((500..), T::Range[Integer])
203
+ end
204
+ end
205
+ end
@@ -0,0 +1,37 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ class FilePart
5
+ sig { returns(T.any(Pathname, StringIO, IO, String)) }
6
+ attr_reader :content
7
+
8
+ sig { returns(T.nilable(String)) }
9
+ attr_reader :content_type
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ attr_reader :filename
13
+
14
+ # @api private
15
+ sig { returns(String) }
16
+ private def read
17
+ end
18
+
19
+ sig { params(a: T.anything).returns(String) }
20
+ def to_json(*a)
21
+ end
22
+
23
+ sig { params(a: T.anything).returns(String) }
24
+ def to_yaml(*a)
25
+ end
26
+
27
+ sig do
28
+ params(
29
+ content: T.any(Pathname, StringIO, IO, String),
30
+ filename: T.nilable(T.any(Pathname, String)),
31
+ content_type: T.nilable(String)
32
+ ).returns(T.attached_class)
33
+ end
34
+ def self.new(content, filename: nil, content_type: nil)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,52 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Internal
5
+ class PageNumberPagination
6
+ include ArkEmail::Internal::Type::BasePage
7
+
8
+ Elem = type_member
9
+
10
+ sig { returns(T.nilable(T::Array[Elem])) }
11
+ attr_accessor :data
12
+
13
+ sig { returns(Integer) }
14
+ attr_accessor :page
15
+
16
+ sig { returns(Integer) }
17
+ attr_accessor :per_page
18
+
19
+ sig { returns(Integer) }
20
+ attr_accessor :total
21
+
22
+ sig { returns(Integer) }
23
+ attr_accessor :total_pages
24
+
25
+ sig { returns(Meta) }
26
+ attr_accessor :meta
27
+
28
+ # @api private
29
+ sig { returns(String) }
30
+ def inspect
31
+ end
32
+
33
+ class Meta < ArkEmail::Internal::Type::BaseModel
34
+ OrHash = T.type_alias { T.any(Meta, ArkEmail::Internal::AnyHash) }
35
+
36
+ sig { returns(T.nilable(String)) }
37
+ attr_reader :request_id
38
+
39
+ sig { params(request_id: String).void }
40
+ attr_writer :request_id
41
+
42
+ sig { params(request_id: String).returns(T.attached_class) }
43
+ def self.new(request_id: nil)
44
+ end
45
+
46
+ sig { override.returns({ request_id: String }) }
47
+ def to_hash
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end