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,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ module Models
5
+ # @see ArkEmail::Resources::Webhooks#test_
6
+ class WebhookTestParams < ArkEmail::Internal::Type::BaseModel
7
+ extend ArkEmail::Internal::Type::RequestParameters::Converter
8
+ include ArkEmail::Internal::Type::RequestParameters
9
+
10
+ # @!attribute event
11
+ # Event type to simulate
12
+ #
13
+ # @return [Symbol, ArkEmail::Models::WebhookTestParams::Event]
14
+ required :event, enum: -> { ArkEmail::WebhookTestParams::Event }
15
+
16
+ # @!method initialize(event:, request_options: {})
17
+ # @param event [Symbol, ArkEmail::Models::WebhookTestParams::Event] Event type to simulate
18
+ #
19
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}]
20
+
21
+ # Event type to simulate
22
+ module Event
23
+ extend ArkEmail::Internal::Type::Enum
24
+
25
+ MESSAGE_SENT = :MessageSent
26
+ MESSAGE_DELAYED = :MessageDelayed
27
+ MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed
28
+ MESSAGE_HELD = :MessageHeld
29
+ MESSAGE_BOUNCED = :MessageBounced
30
+ MESSAGE_LINK_CLICKED = :MessageLinkClicked
31
+ MESSAGE_LOADED = :MessageLoaded
32
+ DOMAIN_DNS_ERROR = :DomainDNSError
33
+
34
+ # @!method self.values
35
+ # @return [Array<Symbol>]
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ module Models
5
+ # @see ArkEmail::Resources::Webhooks#test_
6
+ class WebhookTestResponse < ArkEmail::Internal::Type::BaseModel
7
+ # @!attribute data
8
+ #
9
+ # @return [ArkEmail::Models::WebhookTestResponse::Data]
10
+ required :data, -> { ArkEmail::Models::WebhookTestResponse::Data }
11
+
12
+ # @!attribute meta
13
+ #
14
+ # @return [ArkEmail::Models::APIMeta]
15
+ required :meta, -> { ArkEmail::APIMeta }
16
+
17
+ # @!attribute success
18
+ #
19
+ # @return [Boolean, true]
20
+ required :success, const: true
21
+
22
+ # @!method initialize(data:, meta:, success: true)
23
+ # @param data [ArkEmail::Models::WebhookTestResponse::Data]
24
+ # @param meta [ArkEmail::Models::APIMeta]
25
+ # @param success [Boolean, true]
26
+
27
+ # @see ArkEmail::Models::WebhookTestResponse#data
28
+ class Data < ArkEmail::Internal::Type::BaseModel
29
+ # @!attribute duration
30
+ # Request duration in milliseconds
31
+ #
32
+ # @return [Integer]
33
+ required :duration, Integer
34
+
35
+ # @!attribute event
36
+ # Event type that was tested
37
+ #
38
+ # @return [String]
39
+ required :event, String
40
+
41
+ # @!attribute status_code
42
+ # HTTP status code from the webhook endpoint
43
+ #
44
+ # @return [Integer, nil]
45
+ required :status_code, Integer, api_name: :statusCode, nil?: true
46
+
47
+ # @!attribute success
48
+ # Whether the webhook endpoint responded with a 2xx status
49
+ #
50
+ # @return [Boolean]
51
+ required :success, ArkEmail::Internal::Type::Boolean
52
+
53
+ # @!attribute body
54
+ # Response body from the webhook endpoint (truncated if too long)
55
+ #
56
+ # @return [String, nil]
57
+ optional :body, String, nil?: true
58
+
59
+ # @!attribute error
60
+ # Error message if the request failed
61
+ #
62
+ # @return [String, nil]
63
+ optional :error, String, nil?: true
64
+
65
+ # @!method initialize(duration:, event:, status_code:, success:, body: nil, error: nil)
66
+ # @param duration [Integer] Request duration in milliseconds
67
+ #
68
+ # @param event [String] Event type that was tested
69
+ #
70
+ # @param status_code [Integer, nil] HTTP status code from the webhook endpoint
71
+ #
72
+ # @param success [Boolean] Whether the webhook endpoint responded with a 2xx status
73
+ #
74
+ # @param body [String, nil] Response body from the webhook endpoint (truncated if too long)
75
+ #
76
+ # @param error [String, nil] Error message if the request failed
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ module Models
5
+ # @see ArkEmail::Resources::Webhooks#update
6
+ class WebhookUpdateParams < ArkEmail::Internal::Type::BaseModel
7
+ extend ArkEmail::Internal::Type::RequestParameters::Converter
8
+ include ArkEmail::Internal::Type::RequestParameters
9
+
10
+ # @!attribute all_events
11
+ #
12
+ # @return [Boolean, nil]
13
+ optional :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents
14
+
15
+ # @!attribute enabled
16
+ #
17
+ # @return [Boolean, nil]
18
+ optional :enabled, ArkEmail::Internal::Type::Boolean
19
+
20
+ # @!attribute events
21
+ #
22
+ # @return [Array<String>, nil]
23
+ optional :events, ArkEmail::Internal::Type::ArrayOf[String]
24
+
25
+ # @!attribute name
26
+ #
27
+ # @return [String, nil]
28
+ optional :name, String
29
+
30
+ # @!attribute url
31
+ #
32
+ # @return [String, nil]
33
+ optional :url, String
34
+
35
+ # @!method initialize(all_events: nil, enabled: nil, events: nil, name: nil, url: nil, request_options: {})
36
+ # @param all_events [Boolean]
37
+ # @param enabled [Boolean]
38
+ # @param events [Array<String>]
39
+ # @param name [String]
40
+ # @param url [String]
41
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}]
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ module Models
5
+ # @see ArkEmail::Resources::Webhooks#update
6
+ class WebhookUpdateResponse < ArkEmail::Internal::Type::BaseModel
7
+ # @!attribute data
8
+ #
9
+ # @return [ArkEmail::Models::WebhookUpdateResponse::Data]
10
+ required :data, -> { ArkEmail::Models::WebhookUpdateResponse::Data }
11
+
12
+ # @!attribute meta
13
+ #
14
+ # @return [ArkEmail::Models::APIMeta]
15
+ required :meta, -> { ArkEmail::APIMeta }
16
+
17
+ # @!attribute success
18
+ #
19
+ # @return [Boolean, true]
20
+ required :success, const: true
21
+
22
+ # @!method initialize(data:, meta:, success: true)
23
+ # @param data [ArkEmail::Models::WebhookUpdateResponse::Data]
24
+ # @param meta [ArkEmail::Models::APIMeta]
25
+ # @param success [Boolean, true]
26
+
27
+ # @see ArkEmail::Models::WebhookUpdateResponse#data
28
+ class Data < ArkEmail::Internal::Type::BaseModel
29
+ # @!attribute id
30
+ # Webhook ID
31
+ #
32
+ # @return [String]
33
+ required :id, String
34
+
35
+ # @!attribute all_events
36
+ # Whether subscribed to all events
37
+ #
38
+ # @return [Boolean]
39
+ required :all_events, ArkEmail::Internal::Type::Boolean, api_name: :allEvents
40
+
41
+ # @!attribute created_at
42
+ #
43
+ # @return [Time]
44
+ required :created_at, Time, api_name: :createdAt
45
+
46
+ # @!attribute enabled
47
+ # Whether the webhook is active
48
+ #
49
+ # @return [Boolean]
50
+ required :enabled, ArkEmail::Internal::Type::Boolean
51
+
52
+ # @!attribute events
53
+ # Subscribed events
54
+ #
55
+ # @return [Array<Symbol, ArkEmail::Models::WebhookUpdateResponse::Data::Event>]
56
+ required :events,
57
+ -> { ArkEmail::Internal::Type::ArrayOf[enum: ArkEmail::Models::WebhookUpdateResponse::Data::Event] }
58
+
59
+ # @!attribute name
60
+ # Webhook name for identification
61
+ #
62
+ # @return [String]
63
+ required :name, String
64
+
65
+ # @!attribute url
66
+ # Webhook endpoint URL
67
+ #
68
+ # @return [String]
69
+ required :url, String
70
+
71
+ # @!attribute uuid
72
+ #
73
+ # @return [String]
74
+ required :uuid, String
75
+
76
+ # @!method initialize(id:, all_events:, created_at:, enabled:, events:, name:, url:, uuid:)
77
+ # @param id [String] Webhook ID
78
+ #
79
+ # @param all_events [Boolean] Whether subscribed to all events
80
+ #
81
+ # @param created_at [Time]
82
+ #
83
+ # @param enabled [Boolean] Whether the webhook is active
84
+ #
85
+ # @param events [Array<Symbol, ArkEmail::Models::WebhookUpdateResponse::Data::Event>] Subscribed events
86
+ #
87
+ # @param name [String] Webhook name for identification
88
+ #
89
+ # @param url [String] Webhook endpoint URL
90
+ #
91
+ # @param uuid [String]
92
+
93
+ module Event
94
+ extend ArkEmail::Internal::Type::Enum
95
+
96
+ MESSAGE_SENT = :MessageSent
97
+ MESSAGE_DELAYED = :MessageDelayed
98
+ MESSAGE_DELIVERY_FAILED = :MessageDeliveryFailed
99
+ MESSAGE_HELD = :MessageHeld
100
+ MESSAGE_BOUNCED = :MessageBounced
101
+ MESSAGE_LINK_CLICKED = :MessageLinkClicked
102
+ MESSAGE_LOADED = :MessageLoaded
103
+ DOMAIN_DNS_ERROR = :DomainDNSError
104
+
105
+ # @!method self.values
106
+ # @return [Array<Symbol>]
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,105 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ [ArkEmail::Internal::Type::BaseModel, *ArkEmail::Internal::Type::BaseModel.subclasses].each do |cls|
5
+ cls.define_sorbet_constant!(:OrHash) { T.type_alias { T.any(cls, ArkEmail::Internal::AnyHash) } }
6
+ end
7
+
8
+ ArkEmail::Internal::Util.walk_namespaces(ArkEmail::Models).each do |mod|
9
+ case mod
10
+ in ArkEmail::Internal::Type::Enum | ArkEmail::Internal::Type::Union
11
+ mod.constants.each do |name|
12
+ case mod.const_get(name)
13
+ in true | false
14
+ mod.define_sorbet_constant!(:TaggedBoolean) { T.type_alias { T::Boolean } }
15
+ mod.define_sorbet_constant!(:OrBoolean) { T.type_alias { T::Boolean } }
16
+ in Integer
17
+ mod.define_sorbet_constant!(:TaggedInteger) { T.type_alias { Integer } }
18
+ mod.define_sorbet_constant!(:OrInteger) { T.type_alias { Integer } }
19
+ in Float
20
+ mod.define_sorbet_constant!(:TaggedFloat) { T.type_alias { Float } }
21
+ mod.define_sorbet_constant!(:OrFloat) { T.type_alias { Float } }
22
+ in Symbol
23
+ mod.define_sorbet_constant!(:TaggedSymbol) { T.type_alias { Symbol } }
24
+ mod.define_sorbet_constant!(:OrSymbol) { T.type_alias { T.any(Symbol, String) } }
25
+ else
26
+ end
27
+ end
28
+ else
29
+ end
30
+ end
31
+
32
+ ArkEmail::Internal::Util.walk_namespaces(ArkEmail::Models)
33
+ .lazy
34
+ .grep(ArkEmail::Internal::Type::Union)
35
+ .each do |mod|
36
+ const = :Variants
37
+ next if mod.sorbet_constant_defined?(const)
38
+
39
+ mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
40
+ end
41
+
42
+ APIMeta = ArkEmail::Models::APIMeta
43
+
44
+ DNSRecord = ArkEmail::Models::DNSRecord
45
+
46
+ DomainCreateParams = ArkEmail::Models::DomainCreateParams
47
+
48
+ DomainDeleteParams = ArkEmail::Models::DomainDeleteParams
49
+
50
+ DomainListParams = ArkEmail::Models::DomainListParams
51
+
52
+ DomainRetrieveParams = ArkEmail::Models::DomainRetrieveParams
53
+
54
+ DomainVerifyParams = ArkEmail::Models::DomainVerifyParams
55
+
56
+ EmailListParams = ArkEmail::Models::EmailListParams
57
+
58
+ EmailRetrieveDeliveriesParams = ArkEmail::Models::EmailRetrieveDeliveriesParams
59
+
60
+ EmailRetrieveParams = ArkEmail::Models::EmailRetrieveParams
61
+
62
+ EmailRetryParams = ArkEmail::Models::EmailRetryParams
63
+
64
+ EmailSendBatchParams = ArkEmail::Models::EmailSendBatchParams
65
+
66
+ EmailSendParams = ArkEmail::Models::EmailSendParams
67
+
68
+ EmailSendRawParams = ArkEmail::Models::EmailSendRawParams
69
+
70
+ SuppressionBulkCreateParams = ArkEmail::Models::SuppressionBulkCreateParams
71
+
72
+ SuppressionCreateParams = ArkEmail::Models::SuppressionCreateParams
73
+
74
+ SuppressionDeleteParams = ArkEmail::Models::SuppressionDeleteParams
75
+
76
+ SuppressionListParams = ArkEmail::Models::SuppressionListParams
77
+
78
+ SuppressionRetrieveParams = ArkEmail::Models::SuppressionRetrieveParams
79
+
80
+ TrackDomain = ArkEmail::Models::TrackDomain
81
+
82
+ TrackingCreateParams = ArkEmail::Models::TrackingCreateParams
83
+
84
+ TrackingDeleteParams = ArkEmail::Models::TrackingDeleteParams
85
+
86
+ TrackingListParams = ArkEmail::Models::TrackingListParams
87
+
88
+ TrackingRetrieveParams = ArkEmail::Models::TrackingRetrieveParams
89
+
90
+ TrackingUpdateParams = ArkEmail::Models::TrackingUpdateParams
91
+
92
+ TrackingVerifyParams = ArkEmail::Models::TrackingVerifyParams
93
+
94
+ WebhookCreateParams = ArkEmail::Models::WebhookCreateParams
95
+
96
+ WebhookDeleteParams = ArkEmail::Models::WebhookDeleteParams
97
+
98
+ WebhookListParams = ArkEmail::Models::WebhookListParams
99
+
100
+ WebhookRetrieveParams = ArkEmail::Models::WebhookRetrieveParams
101
+
102
+ WebhookTestParams = ArkEmail::Models::WebhookTestParams
103
+
104
+ WebhookUpdateParams = ArkEmail::Models::WebhookUpdateParams
105
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement
5
+ # or override those provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or
8
+ # simply pass a Hash with symbol keys matching the attributes on this class.
9
+ class RequestOptions < ArkEmail::Internal::Type::BaseModel
10
+ # @api private
11
+ #
12
+ # @param opts [ArkEmail::RequestOptions, Hash{Symbol=>Object}]
13
+ #
14
+ # @raise [ArgumentError]
15
+ def self.validate!(opts)
16
+ case opts
17
+ in ArkEmail::RequestOptions | Hash
18
+ opts.to_h.each_key do |k|
19
+ unless fields.include?(k)
20
+ raise ArgumentError.new("Request `opts` keys must be one of #{fields.keys}, got #{k.inspect}")
21
+ end
22
+ end
23
+ else
24
+ raise ArgumentError.new("Request `opts` must be a Hash or RequestOptions, got #{opts.inspect}")
25
+ end
26
+ end
27
+
28
+ # @!attribute idempotency_key
29
+ # Idempotency key to send with request and all associated retries. Will only be
30
+ # sent for write requests.
31
+ #
32
+ # @return [String, nil]
33
+ optional :idempotency_key, String
34
+
35
+ # @!attribute extra_query
36
+ # Extra query params to send with the request. These are `.merge`’d into any
37
+ # `query` given at the client level.
38
+ #
39
+ # @return [Hash{String=>Array<String>, String, nil}, nil]
40
+ optional :extra_query, ArkEmail::Internal::Type::HashOf[ArkEmail::Internal::Type::ArrayOf[String]]
41
+
42
+ # @!attribute extra_headers
43
+ # Extra headers to send with the request. These are `.merged`’d into any
44
+ # `extra_headers` given at the client level.
45
+ #
46
+ # @return [Hash{String=>String, nil}, nil]
47
+ optional :extra_headers, ArkEmail::Internal::Type::HashOf[String, nil?: true]
48
+
49
+ # @!attribute extra_body
50
+ # Extra data to send with the request. These are deep merged into any data
51
+ # generated as part of the normal request.
52
+ #
53
+ # @return [Object, nil]
54
+ optional :extra_body, ArkEmail::Internal::Type::HashOf[ArkEmail::Internal::Type::Unknown]
55
+
56
+ # @!attribute max_retries
57
+ # Maximum number of retries to attempt after a failed initial request.
58
+ #
59
+ # @return [Integer, nil]
60
+ optional :max_retries, Integer
61
+
62
+ # @!attribute timeout
63
+ # Request timeout in seconds.
64
+ #
65
+ # @return [Float, nil]
66
+ optional :timeout, Float
67
+
68
+ # @!method initialize(values = {})
69
+ # Returns a new instance of RequestOptions.
70
+ #
71
+ # @param values [Hash{Symbol=>Object}]
72
+
73
+ define_sorbet_constant!(:OrHash) do
74
+ T.type_alias { T.any(ArkEmail::RequestOptions, ArkEmail::Internal::AnyHash) }
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,127 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ module Resources
5
+ class Domains
6
+ # Add a new domain for sending emails. Returns DNS records that must be configured
7
+ # before the domain can be verified.
8
+ #
9
+ # **Required DNS records:**
10
+ #
11
+ # - **SPF** - TXT record for sender authentication
12
+ # - **DKIM** - TXT record for email signing
13
+ # - **Return Path** - CNAME for bounce handling
14
+ #
15
+ # After adding DNS records, call `POST /domains/{id}/verify` to verify.
16
+ #
17
+ # @overload create(name:, request_options: {})
18
+ #
19
+ # @param name [String] Domain name (e.g., "mail.example.com")
20
+ #
21
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
22
+ #
23
+ # @return [ArkEmail::Models::DomainCreateResponse]
24
+ #
25
+ # @see ArkEmail::Models::DomainCreateParams
26
+ def create(params)
27
+ parsed, options = ArkEmail::DomainCreateParams.dump_request(params)
28
+ @client.request(
29
+ method: :post,
30
+ path: "domains",
31
+ body: parsed,
32
+ model: ArkEmail::Models::DomainCreateResponse,
33
+ options: options
34
+ )
35
+ end
36
+
37
+ # Get detailed information about a domain including DNS record status
38
+ #
39
+ # @overload retrieve(domain_id, request_options: {})
40
+ #
41
+ # @param domain_id [String] Domain ID or domain name
42
+ #
43
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
44
+ #
45
+ # @return [ArkEmail::Models::DomainRetrieveResponse]
46
+ #
47
+ # @see ArkEmail::Models::DomainRetrieveParams
48
+ def retrieve(domain_id, params = {})
49
+ @client.request(
50
+ method: :get,
51
+ path: ["domains/%1$s", domain_id],
52
+ model: ArkEmail::Models::DomainRetrieveResponse,
53
+ options: params[:request_options]
54
+ )
55
+ end
56
+
57
+ # Get all sending domains with their verification status
58
+ #
59
+ # @overload list(request_options: {})
60
+ #
61
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
62
+ #
63
+ # @return [ArkEmail::Models::DomainListResponse]
64
+ #
65
+ # @see ArkEmail::Models::DomainListParams
66
+ def list(params = {})
67
+ @client.request(
68
+ method: :get,
69
+ path: "domains",
70
+ model: ArkEmail::Models::DomainListResponse,
71
+ options: params[:request_options]
72
+ )
73
+ end
74
+
75
+ # Remove a sending domain. You will no longer be able to send emails from this
76
+ # domain.
77
+ #
78
+ # **Warning:** This action cannot be undone.
79
+ #
80
+ # @overload delete(domain_id, request_options: {})
81
+ #
82
+ # @param domain_id [String]
83
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
84
+ #
85
+ # @return [ArkEmail::Models::DomainDeleteResponse]
86
+ #
87
+ # @see ArkEmail::Models::DomainDeleteParams
88
+ def delete(domain_id, params = {})
89
+ @client.request(
90
+ method: :delete,
91
+ path: ["domains/%1$s", domain_id],
92
+ model: ArkEmail::Models::DomainDeleteResponse,
93
+ options: params[:request_options]
94
+ )
95
+ end
96
+
97
+ # Check if DNS records are correctly configured and verify the domain. Returns the
98
+ # current status of each required DNS record.
99
+ #
100
+ # Call this after you've added the DNS records shown when creating the domain.
101
+ #
102
+ # @overload verify(domain_id, request_options: {})
103
+ #
104
+ # @param domain_id [String]
105
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
106
+ #
107
+ # @return [ArkEmail::Models::DomainVerifyResponse]
108
+ #
109
+ # @see ArkEmail::Models::DomainVerifyParams
110
+ def verify(domain_id, params = {})
111
+ @client.request(
112
+ method: :post,
113
+ path: ["domains/%1$s/verify", domain_id],
114
+ model: ArkEmail::Models::DomainVerifyResponse,
115
+ options: params[:request_options]
116
+ )
117
+ end
118
+
119
+ # @api private
120
+ #
121
+ # @param client [ArkEmail::Client]
122
+ def initialize(client:)
123
+ @client = client
124
+ end
125
+ end
126
+ end
127
+ end