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,84 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Resources
5
+ class Suppressions
6
+ # Add an email address to the suppression list. The address will not receive any
7
+ # emails until removed.
8
+ sig do
9
+ params(
10
+ address: String,
11
+ reason: String,
12
+ request_options: ArkEmail::RequestOptions::OrHash
13
+ ).returns(ArkEmail::Models::SuppressionCreateResponse)
14
+ end
15
+ def create(
16
+ # Email address to suppress
17
+ address:,
18
+ # Reason for suppression
19
+ reason: nil,
20
+ request_options: {}
21
+ )
22
+ end
23
+
24
+ # Check if a specific email address is on the suppression list
25
+ sig do
26
+ params(
27
+ email: String,
28
+ request_options: ArkEmail::RequestOptions::OrHash
29
+ ).returns(ArkEmail::Models::SuppressionRetrieveResponse)
30
+ end
31
+ def retrieve(
32
+ # Email address (URL-encoded)
33
+ email,
34
+ request_options: {}
35
+ )
36
+ end
37
+
38
+ # Get all email addresses on the suppression list. These addresses will not
39
+ # receive any emails.
40
+ sig do
41
+ params(
42
+ page: Integer,
43
+ per_page: Integer,
44
+ request_options: ArkEmail::RequestOptions::OrHash
45
+ ).returns(
46
+ ArkEmail::Internal::PageNumberPagination[
47
+ ArkEmail::Models::SuppressionListResponse
48
+ ]
49
+ )
50
+ end
51
+ def list(page: nil, per_page: nil, request_options: {})
52
+ end
53
+
54
+ # Remove an email address from the suppression list. The address will be able to
55
+ # receive emails again.
56
+ sig do
57
+ params(
58
+ email: String,
59
+ request_options: ArkEmail::RequestOptions::OrHash
60
+ ).returns(ArkEmail::Models::SuppressionDeleteResponse)
61
+ end
62
+ def delete(email, request_options: {})
63
+ end
64
+
65
+ # Add up to 1000 email addresses to the suppression list at once
66
+ sig do
67
+ params(
68
+ suppressions:
69
+ T::Array[
70
+ ArkEmail::SuppressionBulkCreateParams::Suppression::OrHash
71
+ ],
72
+ request_options: ArkEmail::RequestOptions::OrHash
73
+ ).returns(ArkEmail::Models::SuppressionBulkCreateResponse)
74
+ end
75
+ def bulk_create(suppressions:, request_options: {})
76
+ end
77
+
78
+ # @api private
79
+ sig { params(client: ArkEmail::Client).returns(T.attached_class) }
80
+ def self.new(client:)
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,130 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Resources
5
+ class Tracking
6
+ # Create a new track domain for open/click tracking.
7
+ #
8
+ # After creation, you must configure a CNAME record pointing to the provided DNS
9
+ # value before tracking will work.
10
+ sig do
11
+ params(
12
+ domain_id: String,
13
+ name: String,
14
+ ssl_enabled: T::Boolean,
15
+ track_clicks: T::Boolean,
16
+ track_opens: T::Boolean,
17
+ request_options: ArkEmail::RequestOptions::OrHash
18
+ ).returns(ArkEmail::Models::TrackingCreateResponse)
19
+ end
20
+ def create(
21
+ # ID of the sending domain to attach this track domain to
22
+ domain_id:,
23
+ # Subdomain name (e.g., 'track' for track.yourdomain.com)
24
+ name:,
25
+ # Enable SSL for tracking URLs (recommended)
26
+ ssl_enabled: nil,
27
+ # Enable click tracking
28
+ track_clicks: nil,
29
+ # Enable open tracking (tracking pixel)
30
+ track_opens: nil,
31
+ request_options: {}
32
+ )
33
+ end
34
+
35
+ # Get details of a specific track domain including DNS configuration
36
+ sig do
37
+ params(
38
+ tracking_id: String,
39
+ request_options: ArkEmail::RequestOptions::OrHash
40
+ ).returns(ArkEmail::Models::TrackingRetrieveResponse)
41
+ end
42
+ def retrieve(
43
+ # Track domain ID or UUID
44
+ tracking_id,
45
+ request_options: {}
46
+ )
47
+ end
48
+
49
+ # Update track domain settings.
50
+ #
51
+ # Use this to:
52
+ #
53
+ # - Enable/disable click tracking
54
+ # - Enable/disable open tracking
55
+ # - Enable/disable SSL
56
+ # - Set excluded click domains
57
+ sig do
58
+ params(
59
+ tracking_id: String,
60
+ excluded_click_domains: String,
61
+ ssl_enabled: T::Boolean,
62
+ track_clicks: T::Boolean,
63
+ track_opens: T::Boolean,
64
+ request_options: ArkEmail::RequestOptions::OrHash
65
+ ).returns(ArkEmail::Models::TrackingUpdateResponse)
66
+ end
67
+ def update(
68
+ # Track domain ID or UUID
69
+ tracking_id,
70
+ # Comma-separated list of domains to exclude from click tracking
71
+ excluded_click_domains: nil,
72
+ # Enable or disable SSL for tracking URLs
73
+ ssl_enabled: nil,
74
+ # Enable or disable click tracking
75
+ track_clicks: nil,
76
+ # Enable or disable open tracking
77
+ track_opens: nil,
78
+ request_options: {}
79
+ )
80
+ end
81
+
82
+ # List all track domains configured for your server. Track domains enable open and
83
+ # click tracking for your emails.
84
+ sig do
85
+ params(request_options: ArkEmail::RequestOptions::OrHash).returns(
86
+ ArkEmail::Models::TrackingListResponse
87
+ )
88
+ end
89
+ def list(request_options: {})
90
+ end
91
+
92
+ # Delete a track domain. This will disable tracking for any emails using this
93
+ # domain.
94
+ sig do
95
+ params(
96
+ tracking_id: String,
97
+ request_options: ArkEmail::RequestOptions::OrHash
98
+ ).returns(ArkEmail::Models::TrackingDeleteResponse)
99
+ end
100
+ def delete(
101
+ # Track domain ID or UUID
102
+ tracking_id,
103
+ request_options: {}
104
+ )
105
+ end
106
+
107
+ # Check DNS configuration for the track domain.
108
+ #
109
+ # The track domain requires a CNAME record to be configured before open and click
110
+ # tracking will work. Use this endpoint to verify the DNS is correctly set up.
111
+ sig do
112
+ params(
113
+ tracking_id: String,
114
+ request_options: ArkEmail::RequestOptions::OrHash
115
+ ).returns(ArkEmail::Models::TrackingVerifyResponse)
116
+ end
117
+ def verify(
118
+ # Track domain ID or UUID
119
+ tracking_id,
120
+ request_options: {}
121
+ )
122
+ end
123
+
124
+ # @api private
125
+ sig { params(client: ArkEmail::Client).returns(T.attached_class) }
126
+ def self.new(client:)
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,137 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Resources
5
+ class Webhooks
6
+ # Create a webhook endpoint to receive email event notifications.
7
+ #
8
+ # **Available events:**
9
+ #
10
+ # - `MessageSent` - Email accepted by recipient server
11
+ # - `MessageDeliveryFailed` - Delivery permanently failed
12
+ # - `MessageDelayed` - Delivery temporarily failed, will retry
13
+ # - `MessageBounced` - Email bounced
14
+ # - `MessageHeld` - Email held for review
15
+ # - `MessageLinkClicked` - Recipient clicked a link
16
+ # - `MessageLoaded` - Recipient opened the email
17
+ # - `DomainDNSError` - Domain DNS issue detected
18
+ sig do
19
+ params(
20
+ events: T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol],
21
+ name: String,
22
+ url: String,
23
+ all_events: T::Boolean,
24
+ enabled: T::Boolean,
25
+ request_options: ArkEmail::RequestOptions::OrHash
26
+ ).returns(ArkEmail::Models::WebhookCreateResponse)
27
+ end
28
+ def create(
29
+ # Events to subscribe to:
30
+ #
31
+ # - `MessageSent` - Email successfully delivered to recipient's server
32
+ # - `MessageDelayed` - Temporary delivery failure, will retry
33
+ # - `MessageDeliveryFailed` - Permanent delivery failure
34
+ # - `MessageHeld` - Email held for manual review
35
+ # - `MessageBounced` - Email bounced back
36
+ # - `MessageLinkClicked` - Recipient clicked a tracked link
37
+ # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded)
38
+ # - `DomainDNSError` - DNS configuration issue detected
39
+ events:,
40
+ # Webhook name for identification
41
+ name:,
42
+ # HTTPS endpoint URL
43
+ url:,
44
+ # Subscribe to all events (ignores events array)
45
+ all_events: nil,
46
+ enabled: nil,
47
+ request_options: {}
48
+ )
49
+ end
50
+
51
+ # Get webhook details
52
+ sig do
53
+ params(
54
+ webhook_id: String,
55
+ request_options: ArkEmail::RequestOptions::OrHash
56
+ ).returns(ArkEmail::Models::WebhookRetrieveResponse)
57
+ end
58
+ def retrieve(webhook_id, request_options: {})
59
+ end
60
+
61
+ # Update a webhook
62
+ sig do
63
+ params(
64
+ webhook_id: String,
65
+ all_events: T::Boolean,
66
+ enabled: T::Boolean,
67
+ events: T::Array[String],
68
+ name: String,
69
+ url: String,
70
+ request_options: ArkEmail::RequestOptions::OrHash
71
+ ).returns(ArkEmail::Models::WebhookUpdateResponse)
72
+ end
73
+ def update(
74
+ webhook_id,
75
+ all_events: nil,
76
+ enabled: nil,
77
+ events: nil,
78
+ name: nil,
79
+ url: nil,
80
+ request_options: {}
81
+ )
82
+ end
83
+
84
+ # Get all configured webhook endpoints
85
+ sig do
86
+ params(request_options: ArkEmail::RequestOptions::OrHash).returns(
87
+ ArkEmail::Models::WebhookListResponse
88
+ )
89
+ end
90
+ def list(request_options: {})
91
+ end
92
+
93
+ # Delete a webhook
94
+ sig do
95
+ params(
96
+ webhook_id: String,
97
+ request_options: ArkEmail::RequestOptions::OrHash
98
+ ).returns(ArkEmail::Models::WebhookDeleteResponse)
99
+ end
100
+ def delete(webhook_id, request_options: {})
101
+ end
102
+
103
+ # Send a test payload to your webhook endpoint and verify it receives the data
104
+ # correctly.
105
+ #
106
+ # Use this to:
107
+ #
108
+ # - Verify your webhook URL is accessible
109
+ # - Test your signature verification code
110
+ # - Ensure your server handles the payload format correctly
111
+ #
112
+ # **Test payload format:** The test payload is identical to real webhook payloads,
113
+ # containing sample data for the specified event type. Your webhook should respond
114
+ # with a 2xx status code.
115
+ sig do
116
+ params(
117
+ webhook_id: String,
118
+ event: ArkEmail::WebhookTestParams::Event::OrSymbol,
119
+ request_options: ArkEmail::RequestOptions::OrHash
120
+ ).returns(ArkEmail::Models::WebhookTestResponse)
121
+ end
122
+ def test_(
123
+ # Webhook ID or UUID
124
+ webhook_id,
125
+ # Event type to simulate
126
+ event:,
127
+ request_options: {}
128
+ )
129
+ end
130
+
131
+ # @api private
132
+ sig { params(client: ArkEmail::Client).returns(T.attached_class) }
133
+ def self.new(client:)
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,5 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ VERSION = T.let(T.unsafe(nil), String)
5
+ end
@@ -0,0 +1,34 @@
1
+ module ArkEmail
2
+ class Client < ArkEmail::Internal::Transport::BaseClient
3
+ DEFAULT_MAX_RETRIES: 2
4
+
5
+ DEFAULT_TIMEOUT_IN_SECONDS: Float
6
+
7
+ DEFAULT_INITIAL_RETRY_DELAY: Float
8
+
9
+ DEFAULT_MAX_RETRY_DELAY: Float
10
+
11
+ attr_reader api_key: String
12
+
13
+ attr_reader emails: ArkEmail::Resources::Emails
14
+
15
+ attr_reader domains: ArkEmail::Resources::Domains
16
+
17
+ attr_reader suppressions: ArkEmail::Resources::Suppressions
18
+
19
+ attr_reader webhooks: ArkEmail::Resources::Webhooks
20
+
21
+ attr_reader tracking: ArkEmail::Resources::Tracking
22
+
23
+ private def auth_headers: -> ::Hash[String, String]
24
+
25
+ def initialize: (
26
+ ?api_key: String?,
27
+ ?base_url: String?,
28
+ ?max_retries: Integer,
29
+ ?timeout: Float,
30
+ ?initial_retry_delay: Float,
31
+ ?max_retry_delay: Float
32
+ ) -> void
33
+ end
34
+ end
@@ -0,0 +1,117 @@
1
+ module ArkEmail
2
+ module Errors
3
+ class Error < StandardError
4
+ attr_accessor cause: StandardError?
5
+ end
6
+
7
+ class ConversionError < ArkEmail::Errors::Error
8
+ def cause: -> StandardError?
9
+
10
+ def initialize: (
11
+ on: Class,
12
+ method: Symbol,
13
+ target: top,
14
+ value: top,
15
+ ?cause: StandardError?
16
+ ) -> void
17
+ end
18
+
19
+ class APIError < ArkEmail::Errors::Error
20
+ attr_accessor url: URI::Generic
21
+
22
+ attr_accessor status: Integer?
23
+
24
+ attr_accessor headers: ::Hash[String, String]?
25
+
26
+ attr_accessor body: top?
27
+
28
+ def initialize: (
29
+ url: URI::Generic,
30
+ ?status: Integer?,
31
+ ?headers: ::Hash[String, String]?,
32
+ ?body: Object?,
33
+ ?request: nil,
34
+ ?response: nil,
35
+ ?message: String?
36
+ ) -> void
37
+ end
38
+
39
+ class APIConnectionError < ArkEmail::Errors::APIError
40
+ def initialize: (
41
+ url: URI::Generic,
42
+ ?status: nil,
43
+ ?headers: ::Hash[String, String]?,
44
+ ?body: nil,
45
+ ?request: nil,
46
+ ?response: nil,
47
+ ?message: String?
48
+ ) -> void
49
+ end
50
+
51
+ class APITimeoutError < ArkEmail::Errors::APIConnectionError
52
+ def initialize: (
53
+ url: URI::Generic,
54
+ ?status: nil,
55
+ ?headers: ::Hash[String, String]?,
56
+ ?body: nil,
57
+ ?request: nil,
58
+ ?response: nil,
59
+ ?message: String?
60
+ ) -> void
61
+ end
62
+
63
+ class APIStatusError < ArkEmail::Errors::APIError
64
+ def self.for: (
65
+ url: URI::Generic,
66
+ status: Integer,
67
+ headers: ::Hash[String, String]?,
68
+ body: Object?,
69
+ request: nil,
70
+ response: nil,
71
+ ?message: String?
72
+ ) -> instance
73
+
74
+ def initialize: (
75
+ url: URI::Generic,
76
+ status: Integer,
77
+ headers: ::Hash[String, String]?,
78
+ body: Object?,
79
+ request: nil,
80
+ response: nil,
81
+ ?message: String?
82
+ ) -> void
83
+ end
84
+
85
+ class BadRequestError < ArkEmail::Errors::APIStatusError
86
+ HTTP_STATUS: 400
87
+ end
88
+
89
+ class AuthenticationError < ArkEmail::Errors::APIStatusError
90
+ HTTP_STATUS: 401
91
+ end
92
+
93
+ class PermissionDeniedError < ArkEmail::Errors::APIStatusError
94
+ HTTP_STATUS: 403
95
+ end
96
+
97
+ class NotFoundError < ArkEmail::Errors::APIStatusError
98
+ HTTP_STATUS: 404
99
+ end
100
+
101
+ class ConflictError < ArkEmail::Errors::APIStatusError
102
+ HTTP_STATUS: 409
103
+ end
104
+
105
+ class UnprocessableEntityError < ArkEmail::Errors::APIStatusError
106
+ HTTP_STATUS: 422
107
+ end
108
+
109
+ class RateLimitError < ArkEmail::Errors::APIStatusError
110
+ HTTP_STATUS: 429
111
+ end
112
+
113
+ class InternalServerError < ArkEmail::Errors::APIStatusError
114
+ HTTP_STATUS: Range[Integer]
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,21 @@
1
+ module ArkEmail
2
+ class FilePart
3
+ attr_reader content: Pathname | StringIO | IO | String
4
+
5
+ attr_reader content_type: String?
6
+
7
+ attr_reader filename: String?
8
+
9
+ private def read: -> String
10
+
11
+ def to_json: (*top a) -> String
12
+
13
+ def to_yaml: (*top a) -> String
14
+
15
+ def initialize: (
16
+ Pathname | StringIO | IO | String content,
17
+ ?filename: (Pathname | String)?,
18
+ ?content_type: String?
19
+ ) -> void
20
+ end
21
+ end
@@ -0,0 +1,32 @@
1
+ module ArkEmail
2
+ module Internal
3
+ class PageNumberPagination[Elem]
4
+ include ArkEmail::Internal::Type::BasePage[Elem]
5
+
6
+ attr_accessor data: ::Array[Elem]?
7
+
8
+ attr_accessor page: Integer
9
+
10
+ attr_accessor per_page: Integer
11
+
12
+ attr_accessor total: Integer
13
+
14
+ attr_accessor total_pages: Integer
15
+
16
+ attr_accessor meta: Meta
17
+
18
+ def inspect: -> String
19
+
20
+ type meta = { request_id: String }
21
+ class Meta < ArkEmail::Internal::Type::BaseModel
22
+ attr_reader request_id: String?
23
+
24
+ def request_id=: (String) -> String
25
+
26
+ def initialize: (?request_id: String) -> void
27
+
28
+ def to_hash: -> { request_id: String }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,133 @@
1
+ module ArkEmail
2
+ module Internal
3
+ module Transport
4
+ class BaseClient
5
+ extend ArkEmail::Internal::Util::SorbetRuntimeSupport
6
+
7
+ type request_components =
8
+ {
9
+ method: Symbol,
10
+ path: String | ::Array[String],
11
+ query: ::Hash[String, (::Array[String] | String)?]?,
12
+ headers: ::Hash[String, (String
13
+ | Integer
14
+ | ::Array[(String | Integer)?])?]?,
15
+ body: top?,
16
+ unwrap: (Symbol
17
+ | Integer
18
+ | ::Array[(Symbol | Integer)]
19
+ | (^(top arg0) -> top))?,
20
+ page: Class?,
21
+ stream: Class?,
22
+ model: ArkEmail::Internal::Type::Converter::input?,
23
+ options: ArkEmail::request_opts?
24
+ }
25
+ type request_input =
26
+ {
27
+ method: Symbol,
28
+ url: URI::Generic,
29
+ headers: ::Hash[String, String],
30
+ body: top,
31
+ max_retries: Integer,
32
+ timeout: Float
33
+ }
34
+
35
+ MAX_REDIRECTS: 20
36
+
37
+ PLATFORM_HEADERS: ::Hash[String, String]
38
+
39
+ def self.validate!: (
40
+ ArkEmail::Internal::Transport::BaseClient::request_components req
41
+ ) -> void
42
+
43
+ def self.should_retry?: (
44
+ Integer status,
45
+ headers: ::Hash[String, String]
46
+ ) -> bool
47
+
48
+ def self.follow_redirect: (
49
+ ArkEmail::Internal::Transport::BaseClient::request_input request,
50
+ status: Integer,
51
+ response_headers: ::Hash[String, String]
52
+ ) -> ArkEmail::Internal::Transport::BaseClient::request_input
53
+
54
+ def self.reap_connection!: (
55
+ Integer | ArkEmail::Errors::APIConnectionError status,
56
+ stream: Enumerable[String]?
57
+ ) -> void
58
+
59
+ attr_reader base_url: URI::Generic
60
+
61
+ attr_reader timeout: Float
62
+
63
+ attr_reader max_retries: Integer
64
+
65
+ attr_reader initial_retry_delay: Float
66
+
67
+ attr_reader max_retry_delay: Float
68
+
69
+ attr_reader headers: ::Hash[String, String]
70
+
71
+ attr_reader idempotency_header: String?
72
+
73
+ # @api private
74
+ attr_reader requester: ArkEmail::Internal::Transport::PooledNetRequester
75
+
76
+ def initialize: (
77
+ base_url: String,
78
+ ?timeout: Float,
79
+ ?max_retries: Integer,
80
+ ?initial_retry_delay: Float,
81
+ ?max_retry_delay: Float,
82
+ ?headers: ::Hash[String, (String
83
+ | Integer
84
+ | ::Array[(String | Integer)?])?],
85
+ ?idempotency_header: String?
86
+ ) -> void
87
+
88
+ private def auth_headers: -> ::Hash[String, String]
89
+
90
+ private def user_agent: -> String
91
+
92
+ private def generate_idempotency_key: -> String
93
+
94
+ private def build_request: (
95
+ ArkEmail::Internal::Transport::BaseClient::request_components req,
96
+ ArkEmail::request_options opts
97
+ ) -> ArkEmail::Internal::Transport::BaseClient::request_input
98
+
99
+ private def retry_delay: (
100
+ ::Hash[String, String] headers,
101
+ retry_count: Integer
102
+ ) -> Float
103
+
104
+ def send_request: (
105
+ ArkEmail::Internal::Transport::BaseClient::request_input request,
106
+ redirect_count: Integer,
107
+ retry_count: Integer,
108
+ send_retry_header: bool
109
+ ) -> [Integer, top, Enumerable[String]]
110
+
111
+ def request: (
112
+ Symbol method,
113
+ String | ::Array[String] path,
114
+ ?query: ::Hash[String, (::Array[String] | String)?]?,
115
+ ?headers: ::Hash[String, (String
116
+ | Integer
117
+ | ::Array[(String | Integer)?])?]?,
118
+ ?body: top?,
119
+ ?unwrap: (Symbol
120
+ | Integer
121
+ | ::Array[(Symbol | Integer)]
122
+ | (^(top arg0) -> top))?,
123
+ ?page: Class?,
124
+ ?stream: Class?,
125
+ ?model: ArkEmail::Internal::Type::Converter::input?,
126
+ ?options: ArkEmail::request_opts?
127
+ ) -> top
128
+
129
+ def inspect: -> String
130
+ end
131
+ end
132
+ end
133
+ end