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,263 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ module Resources
5
+ class Emails
6
+ # Some parameter documentations has been truncated, see
7
+ # {ArkEmail::Models::EmailRetrieveParams} for more details.
8
+ #
9
+ # Retrieve detailed information about a specific email including delivery status,
10
+ # timestamps, and optionally the email content.
11
+ #
12
+ # Use the `expand` parameter to include additional data like the HTML/text body,
13
+ # headers, or delivery attempts.
14
+ #
15
+ # @overload retrieve(email_id, expand: nil, request_options: {})
16
+ #
17
+ # @param email_id [String] The email ID (from send response) or message token
18
+ #
19
+ # @param expand [String] Comma-separated list of fields to include:
20
+ #
21
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
22
+ #
23
+ # @return [ArkEmail::Models::EmailRetrieveResponse]
24
+ #
25
+ # @see ArkEmail::Models::EmailRetrieveParams
26
+ def retrieve(email_id, params = {})
27
+ parsed, options = ArkEmail::EmailRetrieveParams.dump_request(params)
28
+ @client.request(
29
+ method: :get,
30
+ path: ["emails/%1$s", email_id],
31
+ query: parsed,
32
+ model: ArkEmail::Models::EmailRetrieveResponse,
33
+ options: options
34
+ )
35
+ end
36
+
37
+ # Some parameter documentations has been truncated, see
38
+ # {ArkEmail::Models::EmailListParams} for more details.
39
+ #
40
+ # Retrieve a paginated list of sent emails. Results are ordered by send time,
41
+ # newest first.
42
+ #
43
+ # Use filters to narrow down results by status, recipient, sender, or tag.
44
+ #
45
+ # **Related endpoints:**
46
+ #
47
+ # - `GET /emails/{id}` - Get full details of a specific email
48
+ # - `POST /emails` - Send a new email
49
+ #
50
+ # @overload list(after: nil, before: nil, from: nil, page: nil, per_page: nil, status: nil, tag: nil, to: nil, request_options: {})
51
+ #
52
+ # @param after [String] Return emails sent after this timestamp (Unix seconds or ISO 8601)
53
+ #
54
+ # @param before [String] Return emails sent before this timestamp
55
+ #
56
+ # @param from [String] Filter by sender email address
57
+ #
58
+ # @param page [Integer] Page number (starts at 1)
59
+ #
60
+ # @param per_page [Integer] Results per page (max 100)
61
+ #
62
+ # @param status [Symbol, ArkEmail::Models::EmailListParams::Status] Filter by delivery status:
63
+ #
64
+ # @param tag [String] Filter by tag
65
+ #
66
+ # @param to [String] Filter by recipient email address
67
+ #
68
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
69
+ #
70
+ # @return [ArkEmail::Internal::PageNumberPagination<ArkEmail::Models::EmailListResponse>]
71
+ #
72
+ # @see ArkEmail::Models::EmailListParams
73
+ def list(params = {})
74
+ parsed, options = ArkEmail::EmailListParams.dump_request(params)
75
+ @client.request(
76
+ method: :get,
77
+ path: "emails",
78
+ query: parsed.transform_keys(per_page: "perPage"),
79
+ page: ArkEmail::Internal::PageNumberPagination,
80
+ model: ArkEmail::Models::EmailListResponse,
81
+ options: options
82
+ )
83
+ end
84
+
85
+ # Get the history of delivery attempts for an email, including SMTP response codes
86
+ # and timestamps.
87
+ #
88
+ # @overload retrieve_deliveries(email_id, request_options: {})
89
+ #
90
+ # @param email_id [String]
91
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
92
+ #
93
+ # @return [ArkEmail::Models::EmailRetrieveDeliveriesResponse]
94
+ #
95
+ # @see ArkEmail::Models::EmailRetrieveDeliveriesParams
96
+ def retrieve_deliveries(email_id, params = {})
97
+ @client.request(
98
+ method: :get,
99
+ path: ["emails/%1$s/deliveries", email_id],
100
+ model: ArkEmail::Models::EmailRetrieveDeliveriesResponse,
101
+ options: params[:request_options]
102
+ )
103
+ end
104
+
105
+ # Retry delivery of a failed or soft-bounced email. Creates a new delivery
106
+ # attempt.
107
+ #
108
+ # Only works for emails that have failed or are in a retryable state.
109
+ #
110
+ # @overload retry_(email_id, request_options: {})
111
+ #
112
+ # @param email_id [String]
113
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
114
+ #
115
+ # @return [ArkEmail::Models::EmailRetryResponse]
116
+ #
117
+ # @see ArkEmail::Models::EmailRetryParams
118
+ def retry_(email_id, params = {})
119
+ @client.request(
120
+ method: :post,
121
+ path: ["emails/%1$s/retry", email_id],
122
+ model: ArkEmail::Models::EmailRetryResponse,
123
+ options: params[:request_options]
124
+ )
125
+ end
126
+
127
+ # Some parameter documentations has been truncated, see
128
+ # {ArkEmail::Models::EmailSendParams} for more details.
129
+ #
130
+ # Send a single email message. The email is accepted for immediate delivery and
131
+ # typically delivered within seconds.
132
+ #
133
+ # **Example use case:** Send a password reset email to a user.
134
+ #
135
+ # **Required fields:** `from`, `to`, `subject`, and either `html` or `text`
136
+ #
137
+ # **Idempotency:** Supports `Idempotency-Key` header for safe retries.
138
+ #
139
+ # **Related endpoints:**
140
+ #
141
+ # - `GET /emails/{id}` - Track delivery status
142
+ # - `GET /emails/{id}/deliveries` - View delivery attempts
143
+ # - `POST /emails/{id}/retry` - Retry failed delivery
144
+ #
145
+ # @overload send_(from:, subject:, to:, attachments: nil, bcc: nil, cc: nil, headers: nil, html: nil, reply_to: nil, tag: nil, text: nil, idempotency_key: nil, request_options: {})
146
+ #
147
+ # @param from [String] Body param: Sender email address. Must be from a verified domain.
148
+ #
149
+ # @param subject [String] Body param: Email subject line
150
+ #
151
+ # @param to [Array<String>] Body param: Recipient email addresses (max 50)
152
+ #
153
+ # @param attachments [Array<ArkEmail::Models::EmailSendParams::Attachment>] Body param: File attachments
154
+ #
155
+ # @param bcc [Array<String>] Body param: BCC recipients
156
+ #
157
+ # @param cc [Array<String>] Body param: CC recipients
158
+ #
159
+ # @param headers [Hash{Symbol=>String}] Body param: Custom email headers
160
+ #
161
+ # @param html [String] Body param: HTML body content.
162
+ #
163
+ # @param reply_to [String] Body param: Reply-to address
164
+ #
165
+ # @param tag [String] Body param: Tag for categorization and filtering
166
+ #
167
+ # @param text [String] Body param: Plain text body (auto-generated from HTML if not provided).
168
+ #
169
+ # @param idempotency_key [String] Header param: Unique key for idempotent requests. If a request with this key was
170
+ #
171
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
172
+ #
173
+ # @return [ArkEmail::Models::EmailSendResponse]
174
+ #
175
+ # @see ArkEmail::Models::EmailSendParams
176
+ def send_(params)
177
+ parsed, options = ArkEmail::EmailSendParams.dump_request(params)
178
+ header_params = {idempotency_key: "idempotency-key"}
179
+ @client.request(
180
+ method: :post,
181
+ path: "emails",
182
+ headers: parsed.slice(*header_params.keys).transform_keys(header_params),
183
+ body: parsed.except(*header_params.keys),
184
+ model: ArkEmail::Models::EmailSendResponse,
185
+ options: options
186
+ )
187
+ end
188
+
189
+ # Some parameter documentations has been truncated, see
190
+ # {ArkEmail::Models::EmailSendBatchParams} for more details.
191
+ #
192
+ # Send up to 100 emails in a single request. Useful for sending personalized
193
+ # emails to multiple recipients efficiently.
194
+ #
195
+ # Each email in the batch can have different content and recipients. Failed emails
196
+ # don't affect other emails in the batch.
197
+ #
198
+ # **Idempotency:** Supports `Idempotency-Key` header for safe retries.
199
+ #
200
+ # @overload send_batch(emails:, from:, idempotency_key: nil, request_options: {})
201
+ #
202
+ # @param emails [Array<ArkEmail::Models::EmailSendBatchParams::Email>] Body param:
203
+ #
204
+ # @param from [String] Body param: Sender email for all messages
205
+ #
206
+ # @param idempotency_key [String] Header param: Unique key for idempotent requests. If a request with this key was
207
+ #
208
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
209
+ #
210
+ # @return [ArkEmail::Models::EmailSendBatchResponse]
211
+ #
212
+ # @see ArkEmail::Models::EmailSendBatchParams
213
+ def send_batch(params)
214
+ parsed, options = ArkEmail::EmailSendBatchParams.dump_request(params)
215
+ header_params = {idempotency_key: "idempotency-key"}
216
+ @client.request(
217
+ method: :post,
218
+ path: "emails/batch",
219
+ headers: parsed.slice(*header_params.keys).transform_keys(header_params),
220
+ body: parsed.except(*header_params.keys),
221
+ model: ArkEmail::Models::EmailSendBatchResponse,
222
+ options: options
223
+ )
224
+ end
225
+
226
+ # Send a pre-formatted RFC 2822 MIME message. Use this for advanced use cases or
227
+ # when migrating from systems that generate raw email content.
228
+ #
229
+ # The `data` field should contain the base64-encoded raw email.
230
+ #
231
+ # @overload send_raw(data:, mail_from:, rcpt_to:, request_options: {})
232
+ #
233
+ # @param data [String] Base64-encoded RFC 2822 message
234
+ #
235
+ # @param mail_from [String] Envelope sender address
236
+ #
237
+ # @param rcpt_to [Array<String>] Envelope recipient addresses
238
+ #
239
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
240
+ #
241
+ # @return [ArkEmail::Models::EmailSendRawResponse]
242
+ #
243
+ # @see ArkEmail::Models::EmailSendRawParams
244
+ def send_raw(params)
245
+ parsed, options = ArkEmail::EmailSendRawParams.dump_request(params)
246
+ @client.request(
247
+ method: :post,
248
+ path: "emails/raw",
249
+ body: parsed,
250
+ model: ArkEmail::Models::EmailSendRawResponse,
251
+ options: options
252
+ )
253
+ end
254
+
255
+ # @api private
256
+ #
257
+ # @param client [ArkEmail::Client]
258
+ def initialize(client:)
259
+ @client = client
260
+ end
261
+ end
262
+ end
263
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
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
+ #
9
+ # @overload create(address:, reason: nil, request_options: {})
10
+ #
11
+ # @param address [String] Email address to suppress
12
+ #
13
+ # @param reason [String] Reason for suppression
14
+ #
15
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
16
+ #
17
+ # @return [ArkEmail::Models::SuppressionCreateResponse]
18
+ #
19
+ # @see ArkEmail::Models::SuppressionCreateParams
20
+ def create(params)
21
+ parsed, options = ArkEmail::SuppressionCreateParams.dump_request(params)
22
+ @client.request(
23
+ method: :post,
24
+ path: "suppressions",
25
+ body: parsed,
26
+ model: ArkEmail::Models::SuppressionCreateResponse,
27
+ options: options
28
+ )
29
+ end
30
+
31
+ # Check if a specific email address is on the suppression list
32
+ #
33
+ # @overload retrieve(email, request_options: {})
34
+ #
35
+ # @param email [String] Email address (URL-encoded)
36
+ #
37
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
38
+ #
39
+ # @return [ArkEmail::Models::SuppressionRetrieveResponse]
40
+ #
41
+ # @see ArkEmail::Models::SuppressionRetrieveParams
42
+ def retrieve(email, params = {})
43
+ @client.request(
44
+ method: :get,
45
+ path: ["suppressions/%1$s", email],
46
+ model: ArkEmail::Models::SuppressionRetrieveResponse,
47
+ options: params[:request_options]
48
+ )
49
+ end
50
+
51
+ # Get all email addresses on the suppression list. These addresses will not
52
+ # receive any emails.
53
+ #
54
+ # @overload list(page: nil, per_page: nil, request_options: {})
55
+ #
56
+ # @param page [Integer]
57
+ # @param per_page [Integer]
58
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
59
+ #
60
+ # @return [ArkEmail::Internal::PageNumberPagination<ArkEmail::Models::SuppressionListResponse>]
61
+ #
62
+ # @see ArkEmail::Models::SuppressionListParams
63
+ def list(params = {})
64
+ parsed, options = ArkEmail::SuppressionListParams.dump_request(params)
65
+ @client.request(
66
+ method: :get,
67
+ path: "suppressions",
68
+ query: parsed.transform_keys(per_page: "perPage"),
69
+ page: ArkEmail::Internal::PageNumberPagination,
70
+ model: ArkEmail::Models::SuppressionListResponse,
71
+ options: options
72
+ )
73
+ end
74
+
75
+ # Remove an email address from the suppression list. The address will be able to
76
+ # receive emails again.
77
+ #
78
+ # @overload delete(email, request_options: {})
79
+ #
80
+ # @param email [String]
81
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
82
+ #
83
+ # @return [ArkEmail::Models::SuppressionDeleteResponse]
84
+ #
85
+ # @see ArkEmail::Models::SuppressionDeleteParams
86
+ def delete(email, params = {})
87
+ @client.request(
88
+ method: :delete,
89
+ path: ["suppressions/%1$s", email],
90
+ model: ArkEmail::Models::SuppressionDeleteResponse,
91
+ options: params[:request_options]
92
+ )
93
+ end
94
+
95
+ # Add up to 1000 email addresses to the suppression list at once
96
+ #
97
+ # @overload bulk_create(suppressions:, request_options: {})
98
+ #
99
+ # @param suppressions [Array<ArkEmail::Models::SuppressionBulkCreateParams::Suppression>]
100
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
101
+ #
102
+ # @return [ArkEmail::Models::SuppressionBulkCreateResponse]
103
+ #
104
+ # @see ArkEmail::Models::SuppressionBulkCreateParams
105
+ def bulk_create(params)
106
+ parsed, options = ArkEmail::SuppressionBulkCreateParams.dump_request(params)
107
+ @client.request(
108
+ method: :post,
109
+ path: "suppressions/bulk",
110
+ body: parsed,
111
+ model: ArkEmail::Models::SuppressionBulkCreateResponse,
112
+ options: options
113
+ )
114
+ end
115
+
116
+ # @api private
117
+ #
118
+ # @param client [ArkEmail::Client]
119
+ def initialize(client:)
120
+ @client = client
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,167 @@
1
+ # frozen_string_literal: true
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
+ #
11
+ # @overload create(domain_id:, name:, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {})
12
+ #
13
+ # @param domain_id [String] ID of the sending domain to attach this track domain to
14
+ #
15
+ # @param name [String] Subdomain name (e.g., 'track' for track.yourdomain.com)
16
+ #
17
+ # @param ssl_enabled [Boolean] Enable SSL for tracking URLs (recommended)
18
+ #
19
+ # @param track_clicks [Boolean] Enable click tracking
20
+ #
21
+ # @param track_opens [Boolean] Enable open tracking (tracking pixel)
22
+ #
23
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
24
+ #
25
+ # @return [ArkEmail::Models::TrackingCreateResponse]
26
+ #
27
+ # @see ArkEmail::Models::TrackingCreateParams
28
+ def create(params)
29
+ parsed, options = ArkEmail::TrackingCreateParams.dump_request(params)
30
+ @client.request(
31
+ method: :post,
32
+ path: "tracking",
33
+ body: parsed,
34
+ model: ArkEmail::Models::TrackingCreateResponse,
35
+ options: options
36
+ )
37
+ end
38
+
39
+ # Get details of a specific track domain including DNS configuration
40
+ #
41
+ # @overload retrieve(tracking_id, request_options: {})
42
+ #
43
+ # @param tracking_id [String] Track domain ID or UUID
44
+ #
45
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
46
+ #
47
+ # @return [ArkEmail::Models::TrackingRetrieveResponse]
48
+ #
49
+ # @see ArkEmail::Models::TrackingRetrieveParams
50
+ def retrieve(tracking_id, params = {})
51
+ @client.request(
52
+ method: :get,
53
+ path: ["tracking/%1$s", tracking_id],
54
+ model: ArkEmail::Models::TrackingRetrieveResponse,
55
+ options: params[:request_options]
56
+ )
57
+ end
58
+
59
+ # Update track domain settings.
60
+ #
61
+ # Use this to:
62
+ #
63
+ # - Enable/disable click tracking
64
+ # - Enable/disable open tracking
65
+ # - Enable/disable SSL
66
+ # - Set excluded click domains
67
+ #
68
+ # @overload update(tracking_id, excluded_click_domains: nil, ssl_enabled: nil, track_clicks: nil, track_opens: nil, request_options: {})
69
+ #
70
+ # @param tracking_id [String] Track domain ID or UUID
71
+ #
72
+ # @param excluded_click_domains [String] Comma-separated list of domains to exclude from click tracking
73
+ #
74
+ # @param ssl_enabled [Boolean] Enable or disable SSL for tracking URLs
75
+ #
76
+ # @param track_clicks [Boolean] Enable or disable click tracking
77
+ #
78
+ # @param track_opens [Boolean] Enable or disable open tracking
79
+ #
80
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
81
+ #
82
+ # @return [ArkEmail::Models::TrackingUpdateResponse]
83
+ #
84
+ # @see ArkEmail::Models::TrackingUpdateParams
85
+ def update(tracking_id, params = {})
86
+ parsed, options = ArkEmail::TrackingUpdateParams.dump_request(params)
87
+ @client.request(
88
+ method: :patch,
89
+ path: ["tracking/%1$s", tracking_id],
90
+ body: parsed,
91
+ model: ArkEmail::Models::TrackingUpdateResponse,
92
+ options: options
93
+ )
94
+ end
95
+
96
+ # List all track domains configured for your server. Track domains enable open and
97
+ # click tracking for your emails.
98
+ #
99
+ # @overload list(request_options: {})
100
+ #
101
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
102
+ #
103
+ # @return [ArkEmail::Models::TrackingListResponse]
104
+ #
105
+ # @see ArkEmail::Models::TrackingListParams
106
+ def list(params = {})
107
+ @client.request(
108
+ method: :get,
109
+ path: "tracking",
110
+ model: ArkEmail::Models::TrackingListResponse,
111
+ options: params[:request_options]
112
+ )
113
+ end
114
+
115
+ # Delete a track domain. This will disable tracking for any emails using this
116
+ # domain.
117
+ #
118
+ # @overload delete(tracking_id, request_options: {})
119
+ #
120
+ # @param tracking_id [String] Track domain ID or UUID
121
+ #
122
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
123
+ #
124
+ # @return [ArkEmail::Models::TrackingDeleteResponse]
125
+ #
126
+ # @see ArkEmail::Models::TrackingDeleteParams
127
+ def delete(tracking_id, params = {})
128
+ @client.request(
129
+ method: :delete,
130
+ path: ["tracking/%1$s", tracking_id],
131
+ model: ArkEmail::Models::TrackingDeleteResponse,
132
+ options: params[:request_options]
133
+ )
134
+ end
135
+
136
+ # Check DNS configuration for the track domain.
137
+ #
138
+ # The track domain requires a CNAME record to be configured before open and click
139
+ # tracking will work. Use this endpoint to verify the DNS is correctly set up.
140
+ #
141
+ # @overload verify(tracking_id, request_options: {})
142
+ #
143
+ # @param tracking_id [String] Track domain ID or UUID
144
+ #
145
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
146
+ #
147
+ # @return [ArkEmail::Models::TrackingVerifyResponse]
148
+ #
149
+ # @see ArkEmail::Models::TrackingVerifyParams
150
+ def verify(tracking_id, params = {})
151
+ @client.request(
152
+ method: :post,
153
+ path: ["tracking/%1$s/verify", tracking_id],
154
+ model: ArkEmail::Models::TrackingVerifyResponse,
155
+ options: params[:request_options]
156
+ )
157
+ end
158
+
159
+ # @api private
160
+ #
161
+ # @param client [ArkEmail::Client]
162
+ def initialize(client:)
163
+ @client = client
164
+ end
165
+ end
166
+ end
167
+ end