coss 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1057) hide show
  1. checksums.yaml +7 -0
  2. data/.fernignore +11 -0
  3. data/.rubocop.yml +103 -0
  4. data/CHANGELOG.md +7 -0
  5. data/CONTRIBUTING.md +120 -0
  6. data/LICENSE +21 -0
  7. data/README.md +29 -0
  8. data/Rakefile +20 -0
  9. data/custom.gemspec.rb +11 -0
  10. data/lib/coss/api_key/client.rb +50 -0
  11. data/lib/coss/audit_events/client.rb +110 -0
  12. data/lib/coss/audit_events/types/get_audit_events_request.rb +11 -0
  13. data/lib/coss/audit_events/types/list_audit_events_request.rb +27 -0
  14. data/lib/coss/billing/client.rb +114 -0
  15. data/lib/coss/billing/credits/client.rb +63 -0
  16. data/lib/coss/billing/credits/types/list_credits_request.rb +17 -0
  17. data/lib/coss/billing/credits/types/list_credits_request_status.rb +16 -0
  18. data/lib/coss/billing/invoices/client.rb +99 -0
  19. data/lib/coss/billing/invoices/types/get_invoices_request.rb +13 -0
  20. data/lib/coss/billing/invoices/types/list_invoices_request.rb +17 -0
  21. data/lib/coss/billing/invoices/types/list_invoices_request_status.rb +18 -0
  22. data/lib/coss/billing/types/usage_billing_request.rb +19 -0
  23. data/lib/coss/billing/types/usage_billing_request_granularity.rb +15 -0
  24. data/lib/coss/billing/types/usage_billing_request_group_by.rb +16 -0
  25. data/lib/coss/billing/types/usage_billing_request_meter.rb +20 -0
  26. data/lib/coss/client.rb +100 -0
  27. data/lib/coss/domains/client.rb +223 -0
  28. data/lib/coss/domains/dmarc/client.rb +61 -0
  29. data/lib/coss/domains/dmarc/reports/client.rb +107 -0
  30. data/lib/coss/domains/dmarc/reports/types/get_reports_request.rb +17 -0
  31. data/lib/coss/domains/dmarc/reports/types/list_reports_request.rb +19 -0
  32. data/lib/coss/domains/dmarc/types/get_dmarc_request.rb +13 -0
  33. data/lib/coss/domains/receiving/client.rb +105 -0
  34. data/lib/coss/domains/receiving/types/create_receiving_domain_request.rb +15 -0
  35. data/lib/coss/domains/receiving/types/delete_receiving_request.rb +13 -0
  36. data/lib/coss/domains/tracking/client.rb +105 -0
  37. data/lib/coss/domains/tracking/types/create_tracking_domain_request.rb +15 -0
  38. data/lib/coss/domains/tracking/types/delete_tracking_request.rb +13 -0
  39. data/lib/coss/domains/types/create_domain_request.rb +11 -0
  40. data/lib/coss/domains/types/delete_domains_request.rb +11 -0
  41. data/lib/coss/domains/types/get_domains_request.rb +11 -0
  42. data/lib/coss/domains/types/verify_domains_request.rb +11 -0
  43. data/lib/coss/email/audiences/client.rb +343 -0
  44. data/lib/coss/email/audiences/types/add_audience_contacts_request.rb +15 -0
  45. data/lib/coss/email/audiences/types/create_audience_request.rb +13 -0
  46. data/lib/coss/email/audiences/types/get_audiences_request.rb +13 -0
  47. data/lib/coss/email/audiences/types/list_audiences_request.rb +15 -0
  48. data/lib/coss/email/audiences/types/list_contacts_audiences_request.rb +17 -0
  49. data/lib/coss/email/audiences/types/remove_audiences_request.rb +13 -0
  50. data/lib/coss/email/audiences/types/remove_contact_audiences_request.rb +15 -0
  51. data/lib/coss/email/audiences/types/remove_contact_audiences_response.rb +19 -0
  52. data/lib/coss/email/audiences/types/remove_contact_audiences_response_object.rb +15 -0
  53. data/lib/coss/email/audiences/types/update_audience_request.rb +15 -0
  54. data/lib/coss/email/broadcasts/client.rb +495 -0
  55. data/lib/coss/email/broadcasts/types/cancel_broadcasts_request.rb +13 -0
  56. data/lib/coss/email/broadcasts/types/create_broadcast_request.rb +41 -0
  57. data/lib/coss/email/broadcasts/types/create_broadcast_request_tracking.rb +15 -0
  58. data/lib/coss/email/broadcasts/types/get_broadcasts_request.rb +13 -0
  59. data/lib/coss/email/broadcasts/types/list_broadcasts_request.rb +17 -0
  60. data/lib/coss/email/broadcasts/types/list_broadcasts_request_status.rb +21 -0
  61. data/lib/coss/email/broadcasts/types/list_emails_broadcasts_request.rb +17 -0
  62. data/lib/coss/email/broadcasts/types/pause_broadcasts_request.rb +13 -0
  63. data/lib/coss/email/broadcasts/types/remove_broadcasts_request.rb +13 -0
  64. data/lib/coss/email/broadcasts/types/resume_broadcasts_request.rb +13 -0
  65. data/lib/coss/email/broadcasts/types/send_broadcast_request.rb +15 -0
  66. data/lib/coss/email/broadcasts/types/test_broadcast_request.rb +17 -0
  67. data/lib/coss/email/broadcasts/types/update_broadcast_request.rb +37 -0
  68. data/lib/coss/email/broadcasts/types/update_broadcast_request_tracking.rb +15 -0
  69. data/lib/coss/email/client.rb +509 -0
  70. data/lib/coss/email/contacts/client.rb +511 -0
  71. data/lib/coss/email/contacts/properties/client.rb +214 -0
  72. data/lib/coss/email/contacts/properties/types/create_contact_property_request.rb +19 -0
  73. data/lib/coss/email/contacts/properties/types/create_contact_property_request_fallback.rb +21 -0
  74. data/lib/coss/email/contacts/properties/types/create_contact_property_request_type.rb +20 -0
  75. data/lib/coss/email/contacts/properties/types/get_properties_request.rb +15 -0
  76. data/lib/coss/email/contacts/properties/types/remove_properties_request.rb +15 -0
  77. data/lib/coss/email/contacts/properties/types/update_contact_property_request.rb +17 -0
  78. data/lib/coss/email/contacts/properties/types/update_contact_property_request_fallback.rb +21 -0
  79. data/lib/coss/email/contacts/types/create_preference_links_request.rb +15 -0
  80. data/lib/coss/email/contacts/types/export_contacts_request.rb +15 -0
  81. data/lib/coss/email/contacts/types/export_contacts_request_status.rb +17 -0
  82. data/lib/coss/email/contacts/types/get_contacts_request.rb +13 -0
  83. data/lib/coss/email/contacts/types/get_topics_contacts_request.rb +13 -0
  84. data/lib/coss/email/contacts/types/import_contacts_request.rb +15 -0
  85. data/lib/coss/email/contacts/types/import_contacts_request_contacts_item.rb +21 -0
  86. data/lib/coss/email/contacts/types/import_contacts_request_contacts_item_properties_value.rb +19 -0
  87. data/lib/coss/email/contacts/types/list_contacts_request.rb +21 -0
  88. data/lib/coss/email/contacts/types/list_contacts_request_status.rb +17 -0
  89. data/lib/coss/email/contacts/types/remove_contacts_request.rb +13 -0
  90. data/lib/coss/email/contacts/types/resend_confirmation_contacts_request.rb +13 -0
  91. data/lib/coss/email/contacts/types/update_contact_request.rb +23 -0
  92. data/lib/coss/email/contacts/types/update_contact_request_properties_value.rb +19 -0
  93. data/lib/coss/email/contacts/types/update_contact_request_status.rb +16 -0
  94. data/lib/coss/email/contacts/types/update_contact_request_topics_item.rb +15 -0
  95. data/lib/coss/email/contacts/types/update_contact_request_topics_item_status.rb +16 -0
  96. data/lib/coss/email/contacts/types/update_contact_topics_request.rb +15 -0
  97. data/lib/coss/email/contacts/types/update_contact_topics_request_topics_item.rb +15 -0
  98. data/lib/coss/email/contacts/types/update_contact_topics_request_topics_item_status.rb +16 -0
  99. data/lib/coss/email/contacts/types/upsert_contact_request.rb +27 -0
  100. data/lib/coss/email/contacts/types/upsert_contact_request_properties_value.rb +19 -0
  101. data/lib/coss/email/contacts/types/upsert_contact_request_status.rb +16 -0
  102. data/lib/coss/email/contacts/types/upsert_contact_request_topics_item.rb +15 -0
  103. data/lib/coss/email/contacts/types/upsert_contact_request_topics_item_status.rb +16 -0
  104. data/lib/coss/email/dedicated_ips/client.rb +54 -0
  105. data/lib/coss/email/marketing_settings/client.rb +88 -0
  106. data/lib/coss/email/marketing_settings/types/update_marketing_settings_request.rb +27 -0
  107. data/lib/coss/email/received/client.rb +249 -0
  108. data/lib/coss/email/received/types/delete_received_request.rb +13 -0
  109. data/lib/coss/email/received/types/get_attachment_received_request.rb +15 -0
  110. data/lib/coss/email/received/types/get_raw_received_request.rb +13 -0
  111. data/lib/coss/email/received/types/get_received_request.rb +13 -0
  112. data/lib/coss/email/received/types/list_received_request.rb +15 -0
  113. data/lib/coss/email/segments/client.rb +284 -0
  114. data/lib/coss/email/segments/types/create_segment_request.rb +15 -0
  115. data/lib/coss/email/segments/types/get_segments_request.rb +13 -0
  116. data/lib/coss/email/segments/types/list_contacts_segments_request.rb +17 -0
  117. data/lib/coss/email/segments/types/list_segments_request.rb +15 -0
  118. data/lib/coss/email/segments/types/remove_segments_request.rb +13 -0
  119. data/lib/coss/email/segments/types/update_segment_request.rb +17 -0
  120. data/lib/coss/email/storage/client.rb +95 -0
  121. data/lib/coss/email/storage/types/update_storage_settings_request.rb +13 -0
  122. data/lib/coss/email/storage/types/update_storage_settings_request_content_storage.rb +16 -0
  123. data/lib/coss/email/suppressions/client.rb +316 -0
  124. data/lib/coss/email/suppressions/types/check_suppressions_request.rb +17 -0
  125. data/lib/coss/email/suppressions/types/check_suppressions_request_stream.rb +16 -0
  126. data/lib/coss/email/suppressions/types/create_suppression_request.rb +15 -0
  127. data/lib/coss/email/suppressions/types/create_suppression_request_scope.rb +20 -0
  128. data/lib/coss/email/suppressions/types/create_suppression_request_scope_one.rb +15 -0
  129. data/lib/coss/email/suppressions/types/create_suppression_request_scope_zero.rb +15 -0
  130. data/lib/coss/email/suppressions/types/export_suppressions_request.rb +15 -0
  131. data/lib/coss/email/suppressions/types/export_suppressions_request_reason.rb +19 -0
  132. data/lib/coss/email/suppressions/types/get_suppressions_request.rb +13 -0
  133. data/lib/coss/email/suppressions/types/import_suppressions_request.rb +13 -0
  134. data/lib/coss/email/suppressions/types/import_suppressions_request_suppressions_item.rb +15 -0
  135. data/lib/coss/email/suppressions/types/list_suppressions_request.rb +19 -0
  136. data/lib/coss/email/suppressions/types/remove_suppressions_request.rb +13 -0
  137. data/lib/coss/email/templates/client.rb +455 -0
  138. data/lib/coss/email/templates/types/create_email_template_request.rb +25 -0
  139. data/lib/coss/email/templates/types/delete_templates_request.rb +13 -0
  140. data/lib/coss/email/templates/types/get_draft_templates_request.rb +13 -0
  141. data/lib/coss/email/templates/types/get_templates_request.rb +13 -0
  142. data/lib/coss/email/templates/types/list_templates_request.rb +15 -0
  143. data/lib/coss/email/templates/types/publish_email_template_request.rb +15 -0
  144. data/lib/coss/email/templates/types/render_email_template_request.rb +19 -0
  145. data/lib/coss/email/templates/types/update_email_template_draft_request.rb +23 -0
  146. data/lib/coss/email/templates/types/update_email_template_request.rb +19 -0
  147. data/lib/coss/email/templates/versions/client.rb +149 -0
  148. data/lib/coss/email/templates/versions/types/get_versions_request.rb +17 -0
  149. data/lib/coss/email/templates/versions/types/list_versions_request.rb +19 -0
  150. data/lib/coss/email/templates/versions/types/restore_versions_request.rb +17 -0
  151. data/lib/coss/email/topics/client.rb +222 -0
  152. data/lib/coss/email/topics/types/create_topic_request.rb +23 -0
  153. data/lib/coss/email/topics/types/create_topic_request_default_subscription.rb +16 -0
  154. data/lib/coss/email/topics/types/create_topic_request_visibility.rb +16 -0
  155. data/lib/coss/email/topics/types/get_topics_request.rb +13 -0
  156. data/lib/coss/email/topics/types/list_topics_request.rb +15 -0
  157. data/lib/coss/email/topics/types/remove_topics_request.rb +13 -0
  158. data/lib/coss/email/topics/types/update_topic_request.rb +23 -0
  159. data/lib/coss/email/topics/types/update_topic_request_default_subscription.rb +16 -0
  160. data/lib/coss/email/topics/types/update_topic_request_visibility.rb +16 -0
  161. data/lib/coss/email/tracking/client.rb +221 -0
  162. data/lib/coss/email/tracking/types/remove_category_tracking_request.rb +13 -0
  163. data/lib/coss/email/tracking/types/update_category_tracking_request.rb +15 -0
  164. data/lib/coss/email/types/cancel_email_request.rb +11 -0
  165. data/lib/coss/email/types/get_batch_email_request.rb +11 -0
  166. data/lib/coss/email/types/get_email_request.rb +11 -0
  167. data/lib/coss/email/types/list_email_request.rb +29 -0
  168. data/lib/coss/email/types/list_events_email_request.rb +11 -0
  169. data/lib/coss/email/types/list_links_email_request.rb +11 -0
  170. data/lib/coss/email/types/reschedule_email_request.rb +13 -0
  171. data/lib/coss/email/types/send_email_batch_request.rb +13 -0
  172. data/lib/coss/email/types/send_email_body.rb +13 -0
  173. data/lib/coss/environment/client.rb +50 -0
  174. data/lib/coss/environment.rb +7 -0
  175. data/lib/coss/errors/api_error.rb +8 -0
  176. data/lib/coss/errors/client_error.rb +17 -0
  177. data/lib/coss/errors/redirect_error.rb +8 -0
  178. data/lib/coss/errors/response_error.rb +42 -0
  179. data/lib/coss/errors/server_error.rb +11 -0
  180. data/lib/coss/errors/timeout_error.rb +8 -0
  181. data/lib/coss/hooks/applications/client.rb +228 -0
  182. data/lib/coss/hooks/applications/types/create_hook_application_request.rb +17 -0
  183. data/lib/coss/hooks/applications/types/delete_applications_request.rb +13 -0
  184. data/lib/coss/hooks/applications/types/get_applications_request.rb +13 -0
  185. data/lib/coss/hooks/applications/types/list_applications_request.rb +15 -0
  186. data/lib/coss/hooks/applications/types/update_hook_application_request.rb +19 -0
  187. data/lib/coss/hooks/client.rb +44 -0
  188. data/lib/coss/hooks/deliveries/client.rb +143 -0
  189. data/lib/coss/hooks/deliveries/types/get_deliveries_request.rb +15 -0
  190. data/lib/coss/hooks/deliveries/types/list_attempts_deliveries_request.rb +15 -0
  191. data/lib/coss/hooks/deliveries/types/retry_deliveries_request.rb +15 -0
  192. data/lib/coss/hooks/endpoints/client.rb +522 -0
  193. data/lib/coss/hooks/endpoints/types/create_hook_endpoint_request.rb +27 -0
  194. data/lib/coss/hooks/endpoints/types/delete_endpoints_request.rb +15 -0
  195. data/lib/coss/hooks/endpoints/types/get_endpoints_request.rb +15 -0
  196. data/lib/coss/hooks/endpoints/types/get_recovery_endpoints_request.rb +17 -0
  197. data/lib/coss/hooks/endpoints/types/get_secret_endpoints_request.rb +15 -0
  198. data/lib/coss/hooks/endpoints/types/list_deliveries_endpoints_request.rb +21 -0
  199. data/lib/coss/hooks/endpoints/types/list_deliveries_endpoints_request_status.rb +17 -0
  200. data/lib/coss/hooks/endpoints/types/list_endpoints_request.rb +13 -0
  201. data/lib/coss/hooks/endpoints/types/recover_hook_endpoint_request.rb +17 -0
  202. data/lib/coss/hooks/endpoints/types/roll_hook_endpoint_secret_request.rb +17 -0
  203. data/lib/coss/hooks/endpoints/types/send_hook_test_request.rb +19 -0
  204. data/lib/coss/hooks/endpoints/types/update_hook_endpoint_request.rb +27 -0
  205. data/lib/coss/hooks/event_types/client.rb +232 -0
  206. data/lib/coss/hooks/event_types/types/archive_event_types_request.rb +13 -0
  207. data/lib/coss/hooks/event_types/types/create_hook_event_type_request.rb +19 -0
  208. data/lib/coss/hooks/event_types/types/get_event_types_request.rb +13 -0
  209. data/lib/coss/hooks/event_types/types/list_event_types_request.rb +17 -0
  210. data/lib/coss/hooks/event_types/types/list_event_types_request_include_archived.rb +16 -0
  211. data/lib/coss/hooks/event_types/types/update_hook_event_type_request.rb +21 -0
  212. data/lib/coss/hooks/messages/client.rb +205 -0
  213. data/lib/coss/hooks/messages/types/get_messages_request.rb +15 -0
  214. data/lib/coss/hooks/messages/types/list_deliveries_messages_request.rb +15 -0
  215. data/lib/coss/hooks/messages/types/list_messages_request.rb +19 -0
  216. data/lib/coss/hooks/messages/types/send_hook_message_request.rb +19 -0
  217. data/lib/coss/hooks/portal/client.rb +66 -0
  218. data/lib/coss/hooks/portal/types/create_hook_portal_session_request.rb +17 -0
  219. data/lib/coss/internal/errors/constraint_error.rb +10 -0
  220. data/lib/coss/internal/errors/type_error.rb +10 -0
  221. data/lib/coss/internal/http/base_request.rb +53 -0
  222. data/lib/coss/internal/http/raw_client.rb +271 -0
  223. data/lib/coss/internal/idempotency_key.rb +17 -0
  224. data/lib/coss/internal/iterators/cursor_item_iterator.rb +28 -0
  225. data/lib/coss/internal/iterators/cursor_page_iterator.rb +63 -0
  226. data/lib/coss/internal/iterators/item_iterator.rb +65 -0
  227. data/lib/coss/internal/iterators/offset_item_iterator.rb +30 -0
  228. data/lib/coss/internal/iterators/offset_page_iterator.rb +103 -0
  229. data/lib/coss/internal/json/request.rb +42 -0
  230. data/lib/coss/internal/json/serializable.rb +25 -0
  231. data/lib/coss/internal/multipart/multipart_encoder.rb +141 -0
  232. data/lib/coss/internal/multipart/multipart_form_data.rb +83 -0
  233. data/lib/coss/internal/multipart/multipart_form_data_part.rb +51 -0
  234. data/lib/coss/internal/multipart/multipart_request.rb +41 -0
  235. data/lib/coss/internal/types/array.rb +47 -0
  236. data/lib/coss/internal/types/boolean.rb +34 -0
  237. data/lib/coss/internal/types/enum.rb +56 -0
  238. data/lib/coss/internal/types/hash.rb +36 -0
  239. data/lib/coss/internal/types/model/field.rb +38 -0
  240. data/lib/coss/internal/types/model.rb +218 -0
  241. data/lib/coss/internal/types/type.rb +35 -0
  242. data/lib/coss/internal/types/union.rb +161 -0
  243. data/lib/coss/internal/types/unknown.rb +15 -0
  244. data/lib/coss/internal/types/utils.rb +116 -0
  245. data/lib/coss/log_drains/batches/client.rb +105 -0
  246. data/lib/coss/log_drains/batches/types/get_batches_request.rb +15 -0
  247. data/lib/coss/log_drains/batches/types/list_batches_request.rb +19 -0
  248. data/lib/coss/log_drains/batches/types/list_batches_request_status.rb +17 -0
  249. data/lib/coss/log_drains/client.rb +226 -0
  250. data/lib/coss/log_drains/types/create_log_drain_request.rb +15 -0
  251. data/lib/coss/log_drains/types/delete_log_drains_request.rb +11 -0
  252. data/lib/coss/log_drains/types/get_log_drains_request.rb +11 -0
  253. data/lib/coss/log_drains/types/update_log_drain_request.rb +19 -0
  254. data/lib/coss/logs/client.rb +119 -0
  255. data/lib/coss/logs/types/get_logs_request.rb +11 -0
  256. data/lib/coss/logs/types/list_logs_request.rb +37 -0
  257. data/lib/coss/reputation/client.rb +52 -0
  258. data/lib/coss/risk/assessments/client.rb +106 -0
  259. data/lib/coss/risk/assessments/types/get_assessments_request.rb +13 -0
  260. data/lib/coss/risk/assessments/types/list_assessments_request.rb +23 -0
  261. data/lib/coss/risk/assessments/types/list_assessments_request_review_status.rb +16 -0
  262. data/lib/coss/risk/client.rb +371 -0
  263. data/lib/coss/risk/limit_buckets/client.rb +214 -0
  264. data/lib/coss/risk/limit_buckets/types/create_risk_limit_bucket_request.rb +21 -0
  265. data/lib/coss/risk/limit_buckets/types/create_risk_limit_bucket_request_on_failure.rb +16 -0
  266. data/lib/coss/risk/limit_buckets/types/delete_limit_buckets_request.rb +13 -0
  267. data/lib/coss/risk/limit_buckets/types/get_limit_buckets_request.rb +13 -0
  268. data/lib/coss/risk/limit_buckets/types/update_risk_limit_bucket_request.rb +21 -0
  269. data/lib/coss/risk/limit_buckets/types/update_risk_limit_bucket_request_on_failure.rb +16 -0
  270. data/lib/coss/risk/lists/client.rb +181 -0
  271. data/lib/coss/risk/lists/types/create_risk_list_entry_request.rb +21 -0
  272. data/lib/coss/risk/lists/types/get_lists_request.rb +13 -0
  273. data/lib/coss/risk/lists/types/list_lists_request.rb +19 -0
  274. data/lib/coss/risk/lists/types/remove_lists_request.rb +13 -0
  275. data/lib/coss/risk/rules/client.rb +222 -0
  276. data/lib/coss/risk/rules/types/create_risk_rule_request.rb +25 -0
  277. data/lib/coss/risk/rules/types/create_risk_rule_request_match.rb +16 -0
  278. data/lib/coss/risk/rules/types/delete_rules_request.rb +13 -0
  279. data/lib/coss/risk/rules/types/get_rules_request.rb +13 -0
  280. data/lib/coss/risk/rules/types/update_risk_rule_request.rb +27 -0
  281. data/lib/coss/risk/rules/types/update_risk_rule_request_match.rb +16 -0
  282. data/lib/coss/risk/settings/client.rb +99 -0
  283. data/lib/coss/risk/settings/types/update_risk_settings_request.rb +23 -0
  284. data/lib/coss/risk/settings/types/update_risk_settings_request_captcha.rb +17 -0
  285. data/lib/coss/risk/settings/types/update_risk_settings_request_captcha_provider.rb +16 -0
  286. data/lib/coss/risk/settings/types/update_risk_settings_request_content_thresholds.rb +20 -0
  287. data/lib/coss/risk/settings/types/update_risk_settings_request_disabled_reasons_item.rb +57 -0
  288. data/lib/coss/risk/settings/types/update_risk_settings_request_reason_weights.rb +106 -0
  289. data/lib/coss/risk/types/check_risk_limit_request.rb +17 -0
  290. data/lib/coss/risk/types/create_risk_assessment_request.rb +29 -0
  291. data/lib/coss/risk/types/create_risk_assessment_request_captcha.rb +11 -0
  292. data/lib/coss/risk/types/create_risk_assessment_request_content.rb +13 -0
  293. data/lib/coss/risk/types/create_risk_assessment_request_device.rb +13 -0
  294. data/lib/coss/risk/types/create_risk_assessment_request_user.rb +13 -0
  295. data/lib/coss/risk/types/create_risk_feedback_request.rb +15 -0
  296. data/lib/coss/risk/types/risk_content_classify_request.rb +11 -0
  297. data/lib/coss/risk/types/risk_email_check_request.rb +11 -0
  298. data/lib/coss/risk/types/risk_ip_check_request.rb +11 -0
  299. data/lib/coss/risk/users/client.rb +55 -0
  300. data/lib/coss/risk/users/types/forget_users_request.rb +13 -0
  301. data/lib/coss/sms/client.rb +256 -0
  302. data/lib/coss/sms/numbers/client.rb +53 -0
  303. data/lib/coss/sms/received/client.rb +102 -0
  304. data/lib/coss/sms/received/types/get_received_request.rb +13 -0
  305. data/lib/coss/sms/received/types/list_received_request.rb +23 -0
  306. data/lib/coss/sms/suppressions/client.rb +214 -0
  307. data/lib/coss/sms/suppressions/types/check_suppressions_request.rb +13 -0
  308. data/lib/coss/sms/suppressions/types/create_sms_suppression_request.rb +13 -0
  309. data/lib/coss/sms/suppressions/types/get_suppressions_request.rb +13 -0
  310. data/lib/coss/sms/suppressions/types/list_suppressions_request.rb +17 -0
  311. data/lib/coss/sms/suppressions/types/remove_suppressions_request.rb +13 -0
  312. data/lib/coss/sms/types/cancel_sms_request.rb +11 -0
  313. data/lib/coss/sms/types/get_sms_request.rb +11 -0
  314. data/lib/coss/sms/types/list_events_sms_request.rb +11 -0
  315. data/lib/coss/sms/types/list_sms_request.rb +21 -0
  316. data/lib/coss/sms/types/send_sms_request.rb +21 -0
  317. data/lib/coss/sms/types/send_sms_request_tags_item.rb +13 -0
  318. data/lib/coss/types/account_webhook_event.rb +19 -0
  319. data/lib/coss/types/account_webhook_event_data.rb +21 -0
  320. data/lib/coss/types/account_webhook_event_data_previous_status.rb +13 -0
  321. data/lib/coss/types/account_webhook_event_data_status.rb +13 -0
  322. data/lib/coss/types/account_webhook_event_object.rb +11 -0
  323. data/lib/coss/types/account_webhook_event_type.rb +16 -0
  324. data/lib/coss/types/audience.rb +19 -0
  325. data/lib/coss/types/audience_contacts_added.rb +15 -0
  326. data/lib/coss/types/audience_contacts_added_object.rb +11 -0
  327. data/lib/coss/types/audience_list.rb +13 -0
  328. data/lib/coss/types/audience_list_object.rb +11 -0
  329. data/lib/coss/types/audience_object.rb +11 -0
  330. data/lib/coss/types/audit_actor_type.rb +13 -0
  331. data/lib/coss/types/audit_event.rb +37 -0
  332. data/lib/coss/types/audit_event_list.rb +13 -0
  333. data/lib/coss/types/audit_event_list_object.rb +11 -0
  334. data/lib/coss/types/audit_event_object.rb +11 -0
  335. data/lib/coss/types/billing.rb +41 -0
  336. data/lib/coss/types/billing_add_ons_item.rb +17 -0
  337. data/lib/coss/types/billing_add_ons_item_interval.rb +13 -0
  338. data/lib/coss/types/billing_contract.rb +20 -0
  339. data/lib/coss/types/billing_contract_kind.rb +13 -0
  340. data/lib/coss/types/billing_currency.rb +11 -0
  341. data/lib/coss/types/billing_estimate.rb +16 -0
  342. data/lib/coss/types/billing_features.rb +19 -0
  343. data/lib/coss/types/billing_holds_item.rb +11 -0
  344. data/lib/coss/types/billing_holds_item_reason.rb +13 -0
  345. data/lib/coss/types/billing_limits.rb +16 -0
  346. data/lib/coss/types/billing_object.rb +11 -0
  347. data/lib/coss/types/billing_payment_method.rb +13 -0
  348. data/lib/coss/types/billing_period.rb +12 -0
  349. data/lib/coss/types/billing_plan.rb +14 -0
  350. data/lib/coss/types/billing_scheduled_change.rb +12 -0
  351. data/lib/coss/types/billing_scheduled_change_plan.rb +14 -0
  352. data/lib/coss/types/billing_status.rb +13 -0
  353. data/lib/coss/types/billing_usage_item.rb +13 -0
  354. data/lib/coss/types/billing_usage_item_meter.rb +18 -0
  355. data/lib/coss/types/billing_webhook_event.rb +25 -0
  356. data/lib/coss/types/billing_webhook_event_five.rb +19 -0
  357. data/lib/coss/types/billing_webhook_event_five_data.rb +13 -0
  358. data/lib/coss/types/billing_webhook_event_five_object.rb +11 -0
  359. data/lib/coss/types/billing_webhook_event_five_type.rb +11 -0
  360. data/lib/coss/types/billing_webhook_event_four.rb +19 -0
  361. data/lib/coss/types/billing_webhook_event_four_data.rb +13 -0
  362. data/lib/coss/types/billing_webhook_event_four_data_reason.rb +13 -0
  363. data/lib/coss/types/billing_webhook_event_four_object.rb +11 -0
  364. data/lib/coss/types/billing_webhook_event_four_type.rb +12 -0
  365. data/lib/coss/types/billing_webhook_event_one.rb +19 -0
  366. data/lib/coss/types/billing_webhook_event_one_data.rb +15 -0
  367. data/lib/coss/types/billing_webhook_event_one_data_failure.rb +9 -0
  368. data/lib/coss/types/billing_webhook_event_one_object.rb +11 -0
  369. data/lib/coss/types/billing_webhook_event_one_type.rb +11 -0
  370. data/lib/coss/types/billing_webhook_event_seven.rb +19 -0
  371. data/lib/coss/types/billing_webhook_event_seven_data.rb +15 -0
  372. data/lib/coss/types/billing_webhook_event_seven_data_scope.rb +13 -0
  373. data/lib/coss/types/billing_webhook_event_seven_object.rb +11 -0
  374. data/lib/coss/types/billing_webhook_event_seven_type.rb +12 -0
  375. data/lib/coss/types/billing_webhook_event_six.rb +19 -0
  376. data/lib/coss/types/billing_webhook_event_six_data.rb +23 -0
  377. data/lib/coss/types/billing_webhook_event_six_data_period.rb +11 -0
  378. data/lib/coss/types/billing_webhook_event_six_data_scope.rb +13 -0
  379. data/lib/coss/types/billing_webhook_event_six_object.rb +11 -0
  380. data/lib/coss/types/billing_webhook_event_six_type.rb +11 -0
  381. data/lib/coss/types/billing_webhook_event_three.rb +19 -0
  382. data/lib/coss/types/billing_webhook_event_three_data.rb +19 -0
  383. data/lib/coss/types/billing_webhook_event_three_data_meter.rb +18 -0
  384. data/lib/coss/types/billing_webhook_event_three_data_of.rb +12 -0
  385. data/lib/coss/types/billing_webhook_event_three_data_period.rb +11 -0
  386. data/lib/coss/types/billing_webhook_event_three_object.rb +11 -0
  387. data/lib/coss/types/billing_webhook_event_three_type.rb +11 -0
  388. data/lib/coss/types/billing_webhook_event_two.rb +19 -0
  389. data/lib/coss/types/billing_webhook_event_two_data.rb +19 -0
  390. data/lib/coss/types/billing_webhook_event_two_data_change.rb +15 -0
  391. data/lib/coss/types/billing_webhook_event_two_data_plan.rb +14 -0
  392. data/lib/coss/types/billing_webhook_event_two_data_previous_plan.rb +14 -0
  393. data/lib/coss/types/billing_webhook_event_two_object.rb +11 -0
  394. data/lib/coss/types/billing_webhook_event_two_type.rb +11 -0
  395. data/lib/coss/types/billing_webhook_event_zero.rb +19 -0
  396. data/lib/coss/types/billing_webhook_event_zero_data.rb +13 -0
  397. data/lib/coss/types/billing_webhook_event_zero_object.rb +11 -0
  398. data/lib/coss/types/billing_webhook_event_zero_type.rb +13 -0
  399. data/lib/coss/types/broadcast.rb +57 -0
  400. data/lib/coss/types/broadcast_email_list.rb +13 -0
  401. data/lib/coss/types/broadcast_email_list_object.rb +11 -0
  402. data/lib/coss/types/broadcast_error.rb +11 -0
  403. data/lib/coss/types/broadcast_list.rb +13 -0
  404. data/lib/coss/types/broadcast_list_object.rb +11 -0
  405. data/lib/coss/types/broadcast_object.rb +11 -0
  406. data/lib/coss/types/broadcast_stats.rb +25 -0
  407. data/lib/coss/types/broadcast_status.rb +17 -0
  408. data/lib/coss/types/broadcast_test.rb +11 -0
  409. data/lib/coss/types/broadcast_test_object.rb +11 -0
  410. data/lib/coss/types/broadcast_tracking.rb +11 -0
  411. data/lib/coss/types/broadcast_webhook_event.rb +19 -0
  412. data/lib/coss/types/broadcast_webhook_event_data.rb +17 -0
  413. data/lib/coss/types/broadcast_webhook_event_data_broadcast.rb +13 -0
  414. data/lib/coss/types/broadcast_webhook_event_data_broadcast_status.rb +17 -0
  415. data/lib/coss/types/broadcast_webhook_event_data_error.rb +11 -0
  416. data/lib/coss/types/broadcast_webhook_event_object.rb +11 -0
  417. data/lib/coss/types/broadcast_webhook_event_type.rb +15 -0
  418. data/lib/coss/types/contact.rb +33 -0
  419. data/lib/coss/types/contact_confirmation.rb +13 -0
  420. data/lib/coss/types/contact_confirmation_object.rb +11 -0
  421. data/lib/coss/types/contact_confirmation_status.rb +14 -0
  422. data/lib/coss/types/contact_import.rb +17 -0
  423. data/lib/coss/types/contact_import_invalid_item.rb +13 -0
  424. data/lib/coss/types/contact_import_object.rb +11 -0
  425. data/lib/coss/types/contact_list.rb +13 -0
  426. data/lib/coss/types/contact_list_object.rb +11 -0
  427. data/lib/coss/types/contact_object.rb +11 -0
  428. data/lib/coss/types/contact_properties_value.rb +15 -0
  429. data/lib/coss/types/contact_property.rb +21 -0
  430. data/lib/coss/types/contact_property_fallback.rb +16 -0
  431. data/lib/coss/types/contact_property_list.rb +13 -0
  432. data/lib/coss/types/contact_property_list_object.rb +11 -0
  433. data/lib/coss/types/contact_property_object.rb +11 -0
  434. data/lib/coss/types/contact_property_type.rb +14 -0
  435. data/lib/coss/types/contact_source.rb +14 -0
  436. data/lib/coss/types/contact_status.rb +13 -0
  437. data/lib/coss/types/contact_topics.rb +13 -0
  438. data/lib/coss/types/contact_topics_object.rb +11 -0
  439. data/lib/coss/types/contact_topics_topics_item.rb +15 -0
  440. data/lib/coss/types/contact_topics_topics_item_choice.rb +12 -0
  441. data/lib/coss/types/contact_webhook_event.rb +19 -0
  442. data/lib/coss/types/contact_webhook_event_data.rb +15 -0
  443. data/lib/coss/types/contact_webhook_event_data_contact.rb +13 -0
  444. data/lib/coss/types/contact_webhook_event_data_contact_status.rb +13 -0
  445. data/lib/coss/types/contact_webhook_event_data_source.rb +14 -0
  446. data/lib/coss/types/contact_webhook_event_object.rb +11 -0
  447. data/lib/coss/types/contact_webhook_event_type.rb +15 -0
  448. data/lib/coss/types/credit.rb +35 -0
  449. data/lib/coss/types/credit_applies_to.rb +12 -0
  450. data/lib/coss/types/credit_kind.rb +12 -0
  451. data/lib/coss/types/credit_list.rb +13 -0
  452. data/lib/coss/types/credit_list_object.rb +11 -0
  453. data/lib/coss/types/credit_meter.rb +18 -0
  454. data/lib/coss/types/credit_meters_item.rb +18 -0
  455. data/lib/coss/types/credit_object.rb +11 -0
  456. data/lib/coss/types/credit_source.rb +16 -0
  457. data/lib/coss/types/dedicated_ip_pool.rb +22 -0
  458. data/lib/coss/types/dedicated_ip_pool_ips_item.rb +11 -0
  459. data/lib/coss/types/dedicated_ip_pool_object.rb +11 -0
  460. data/lib/coss/types/dedicated_ip_pool_status.rb +16 -0
  461. data/lib/coss/types/deleted_api_key.rb +13 -0
  462. data/lib/coss/types/deleted_api_key_object.rb +11 -0
  463. data/lib/coss/types/deleted_audience.rb +13 -0
  464. data/lib/coss/types/deleted_audience_object.rb +11 -0
  465. data/lib/coss/types/deleted_broadcast.rb +13 -0
  466. data/lib/coss/types/deleted_broadcast_object.rb +11 -0
  467. data/lib/coss/types/deleted_contact.rb +13 -0
  468. data/lib/coss/types/deleted_contact_object.rb +11 -0
  469. data/lib/coss/types/deleted_contact_property.rb +13 -0
  470. data/lib/coss/types/deleted_contact_property_object.rb +11 -0
  471. data/lib/coss/types/deleted_domain.rb +13 -0
  472. data/lib/coss/types/deleted_domain_object.rb +11 -0
  473. data/lib/coss/types/deleted_email_template.rb +13 -0
  474. data/lib/coss/types/deleted_email_template_object.rb +11 -0
  475. data/lib/coss/types/deleted_hook_application.rb +13 -0
  476. data/lib/coss/types/deleted_hook_application_object.rb +11 -0
  477. data/lib/coss/types/deleted_hook_endpoint.rb +13 -0
  478. data/lib/coss/types/deleted_hook_endpoint_object.rb +11 -0
  479. data/lib/coss/types/deleted_log_drain.rb +13 -0
  480. data/lib/coss/types/deleted_log_drain_object.rb +11 -0
  481. data/lib/coss/types/deleted_received_email.rb +13 -0
  482. data/lib/coss/types/deleted_received_email_object.rb +11 -0
  483. data/lib/coss/types/deleted_risk_limit_bucket.rb +13 -0
  484. data/lib/coss/types/deleted_risk_limit_bucket_object.rb +11 -0
  485. data/lib/coss/types/deleted_risk_list_entry.rb +13 -0
  486. data/lib/coss/types/deleted_risk_list_entry_object.rb +11 -0
  487. data/lib/coss/types/deleted_risk_rule.rb +13 -0
  488. data/lib/coss/types/deleted_risk_rule_object.rb +11 -0
  489. data/lib/coss/types/deleted_segment.rb +13 -0
  490. data/lib/coss/types/deleted_segment_object.rb +11 -0
  491. data/lib/coss/types/deleted_sms_suppression.rb +13 -0
  492. data/lib/coss/types/deleted_sms_suppression_object.rb +11 -0
  493. data/lib/coss/types/deleted_suppression.rb +13 -0
  494. data/lib/coss/types/deleted_suppression_object.rb +11 -0
  495. data/lib/coss/types/deleted_topic.rb +13 -0
  496. data/lib/coss/types/deleted_topic_object.rb +11 -0
  497. data/lib/coss/types/deleted_tracking_rule.rb +15 -0
  498. data/lib/coss/types/deleted_tracking_rule_object.rb +11 -0
  499. data/lib/coss/types/deleted_webhook_endpoint.rb +13 -0
  500. data/lib/coss/types/deleted_webhook_endpoint_object.rb +11 -0
  501. data/lib/coss/types/deleted_webhook_listener.rb +13 -0
  502. data/lib/coss/types/deleted_webhook_listener_object.rb +11 -0
  503. data/lib/coss/types/dmarc_published_record.rb +26 -0
  504. data/lib/coss/types/dmarc_published_record_adkim.rb +12 -0
  505. data/lib/coss/types/dmarc_published_record_aspf.rb +12 -0
  506. data/lib/coss/types/dmarc_published_record_np.rb +13 -0
  507. data/lib/coss/types/dmarc_published_record_p.rb +13 -0
  508. data/lib/coss/types/dmarc_published_record_sp.rb +13 -0
  509. data/lib/coss/types/dmarc_published_record_t.rb +12 -0
  510. data/lib/coss/types/dmarc_report.rb +33 -0
  511. data/lib/coss/types/dmarc_report_list.rb +13 -0
  512. data/lib/coss/types/dmarc_report_list_object.rb +11 -0
  513. data/lib/coss/types/dmarc_report_object.rb +11 -0
  514. data/lib/coss/types/dmarc_report_policy_published.rb +24 -0
  515. data/lib/coss/types/dmarc_report_record.rb +29 -0
  516. data/lib/coss/types/dmarc_report_record_auth_results.rb +11 -0
  517. data/lib/coss/types/dmarc_report_record_auth_results_dkim_item.rb +13 -0
  518. data/lib/coss/types/dmarc_report_record_auth_results_spf_item.rb +13 -0
  519. data/lib/coss/types/dmarc_report_record_disposition.rb +13 -0
  520. data/lib/coss/types/dmarc_report_record_dkim.rb +12 -0
  521. data/lib/coss/types/dmarc_report_record_reasons_item.rb +11 -0
  522. data/lib/coss/types/dmarc_report_record_spf.rb +12 -0
  523. data/lib/coss/types/dmarc_report_reporter.rb +11 -0
  524. data/lib/coss/types/dmarc_report_summary.rb +31 -0
  525. data/lib/coss/types/dmarc_report_summary_object.rb +11 -0
  526. data/lib/coss/types/dmarc_report_summary_policy_published.rb +24 -0
  527. data/lib/coss/types/dmarc_report_summary_reporter.rb +11 -0
  528. data/lib/coss/types/dmarc_source.rb +17 -0
  529. data/lib/coss/types/domain.rb +39 -0
  530. data/lib/coss/types/domain_bimi.rb +23 -0
  531. data/lib/coss/types/domain_bimi_dmarc_policy.rb +13 -0
  532. data/lib/coss/types/domain_bimi_issues_item.rb +11 -0
  533. data/lib/coss/types/domain_bimi_issues_item_code.rb +19 -0
  534. data/lib/coss/types/domain_bimi_status.rb +14 -0
  535. data/lib/coss/types/domain_dmarc.rb +37 -0
  536. data/lib/coss/types/domain_dmarc_checks_item.rb +13 -0
  537. data/lib/coss/types/domain_dmarc_checks_item_id.rb +17 -0
  538. data/lib/coss/types/domain_dmarc_next.rb +13 -0
  539. data/lib/coss/types/domain_dmarc_next_kind.rb +14 -0
  540. data/lib/coss/types/domain_dmarc_next_policy.rb +13 -0
  541. data/lib/coss/types/domain_dmarc_object.rb +11 -0
  542. data/lib/coss/types/domain_dmarc_policy.rb +13 -0
  543. data/lib/coss/types/domain_dmarc_report_summary.rb +27 -0
  544. data/lib/coss/types/domain_dmarc_stage.rb +15 -0
  545. data/lib/coss/types/domain_list.rb +13 -0
  546. data/lib/coss/types/domain_list_object.rb +11 -0
  547. data/lib/coss/types/domain_mail_from_status.rb +14 -0
  548. data/lib/coss/types/domain_object.rb +11 -0
  549. data/lib/coss/types/domain_record.rb +23 -0
  550. data/lib/coss/types/domain_record_purpose.rb +14 -0
  551. data/lib/coss/types/domain_record_status.rb +14 -0
  552. data/lib/coss/types/domain_record_type.rb +13 -0
  553. data/lib/coss/types/domain_status.rb +15 -0
  554. data/lib/coss/types/domain_webhook_event.rb +19 -0
  555. data/lib/coss/types/domain_webhook_event_data.rb +27 -0
  556. data/lib/coss/types/domain_webhook_event_object.rb +11 -0
  557. data/lib/coss/types/domain_webhook_event_type.rb +11 -0
  558. data/lib/coss/types/email.rb +61 -0
  559. data/lib/coss/types/email_attachment.rb +17 -0
  560. data/lib/coss/types/email_batch.rb +15 -0
  561. data/lib/coss/types/email_batch_object.rb +11 -0
  562. data/lib/coss/types/email_content_storage.rb +12 -0
  563. data/lib/coss/types/email_content_storage_mode.rb +12 -0
  564. data/lib/coss/types/email_event.rb +21 -0
  565. data/lib/coss/types/email_event_data.rb +27 -0
  566. data/lib/coss/types/email_event_data_bounce.rb +13 -0
  567. data/lib/coss/types/email_event_data_bounce_type.rb +13 -0
  568. data/lib/coss/types/email_event_data_click.rb +14 -0
  569. data/lib/coss/types/email_event_data_complaint.rb +11 -0
  570. data/lib/coss/types/email_event_data_delay.rb +13 -0
  571. data/lib/coss/types/email_event_data_delivery.rb +9 -0
  572. data/lib/coss/types/email_event_data_failure.rb +11 -0
  573. data/lib/coss/types/email_event_data_open.rb +10 -0
  574. data/lib/coss/types/email_event_data_reschedule.rb +12 -0
  575. data/lib/coss/types/email_event_data_suppression.rb +14 -0
  576. data/lib/coss/types/email_event_data_suppression_reason.rb +15 -0
  577. data/lib/coss/types/email_event_data_unsubscribe.rb +13 -0
  578. data/lib/coss/types/email_event_list.rb +13 -0
  579. data/lib/coss/types/email_event_list_object.rb +11 -0
  580. data/lib/coss/types/email_event_object.rb +11 -0
  581. data/lib/coss/types/email_event_type.rb +23 -0
  582. data/lib/coss/types/email_failure.rb +11 -0
  583. data/lib/coss/types/email_link.rb +23 -0
  584. data/lib/coss/types/email_link_list.rb +13 -0
  585. data/lib/coss/types/email_link_list_object.rb +11 -0
  586. data/lib/coss/types/email_link_object.rb +11 -0
  587. data/lib/coss/types/email_object.rb +11 -0
  588. data/lib/coss/types/email_recipient.rb +15 -0
  589. data/lib/coss/types/email_recipient_status.rb +19 -0
  590. data/lib/coss/types/email_recipient_type.rb +13 -0
  591. data/lib/coss/types/email_status.rb +15 -0
  592. data/lib/coss/types/email_stream.rb +12 -0
  593. data/lib/coss/types/email_summary.rb +54 -0
  594. data/lib/coss/types/email_summary_list.rb +13 -0
  595. data/lib/coss/types/email_summary_list_object.rb +11 -0
  596. data/lib/coss/types/email_summary_object.rb +11 -0
  597. data/lib/coss/types/email_summary_status.rb +15 -0
  598. data/lib/coss/types/email_summary_stream.rb +12 -0
  599. data/lib/coss/types/email_summary_tags_item.rb +11 -0
  600. data/lib/coss/types/email_tags_item.rb +11 -0
  601. data/lib/coss/types/email_template.rb +27 -0
  602. data/lib/coss/types/email_template_list.rb +13 -0
  603. data/lib/coss/types/email_template_list_object.rb +11 -0
  604. data/lib/coss/types/email_template_object.rb +11 -0
  605. data/lib/coss/types/email_template_reference.rb +13 -0
  606. data/lib/coss/types/email_template_version.rb +31 -0
  607. data/lib/coss/types/email_template_version_list.rb +13 -0
  608. data/lib/coss/types/email_template_version_list_object.rb +11 -0
  609. data/lib/coss/types/email_template_version_object.rb +11 -0
  610. data/lib/coss/types/email_tracking.rb +27 -0
  611. data/lib/coss/types/email_webhook_event.rb +19 -0
  612. data/lib/coss/types/email_webhook_event_data.rb +45 -0
  613. data/lib/coss/types/email_webhook_event_data_bounce.rb +13 -0
  614. data/lib/coss/types/email_webhook_event_data_bounce_type.rb +13 -0
  615. data/lib/coss/types/email_webhook_event_data_click.rb +14 -0
  616. data/lib/coss/types/email_webhook_event_data_complaint.rb +11 -0
  617. data/lib/coss/types/email_webhook_event_data_delay.rb +13 -0
  618. data/lib/coss/types/email_webhook_event_data_delivery.rb +9 -0
  619. data/lib/coss/types/email_webhook_event_data_failure.rb +11 -0
  620. data/lib/coss/types/email_webhook_event_data_open.rb +10 -0
  621. data/lib/coss/types/email_webhook_event_data_reschedule.rb +12 -0
  622. data/lib/coss/types/email_webhook_event_data_suppression.rb +14 -0
  623. data/lib/coss/types/email_webhook_event_data_suppression_reason.rb +15 -0
  624. data/lib/coss/types/email_webhook_event_data_tags_item.rb +11 -0
  625. data/lib/coss/types/email_webhook_event_data_unsubscribe.rb +13 -0
  626. data/lib/coss/types/email_webhook_event_object.rb +11 -0
  627. data/lib/coss/types/email_webhook_event_type.rb +23 -0
  628. data/lib/coss/types/environment.rb +24 -0
  629. data/lib/coss/types/environment_api_key.rb +18 -0
  630. data/lib/coss/types/environment_api_key_access.rb +12 -0
  631. data/lib/coss/types/environment_mode.rb +12 -0
  632. data/lib/coss/types/environment_object.rb +11 -0
  633. data/lib/coss/types/environment_organization.rb +15 -0
  634. data/lib/coss/types/environment_project.rb +13 -0
  635. data/lib/coss/types/error.rb +9 -0
  636. data/lib/coss/types/error_body.rb +19 -0
  637. data/lib/coss/types/error_body_issues_item.rb +11 -0
  638. data/lib/coss/types/error_body_type.rb +18 -0
  639. data/lib/coss/types/export_suppressions_request_scope.rb +16 -0
  640. data/lib/coss/types/export_suppressions_request_scope_one.rb +11 -0
  641. data/lib/coss/types/export_suppressions_request_scope_zero.rb +11 -0
  642. data/lib/coss/types/forgotten_risk_user.rb +13 -0
  643. data/lib/coss/types/forgotten_risk_user_object.rb +11 -0
  644. data/lib/coss/types/hook_application.rb +21 -0
  645. data/lib/coss/types/hook_application_list.rb +13 -0
  646. data/lib/coss/types/hook_application_list_object.rb +11 -0
  647. data/lib/coss/types/hook_application_object.rb +11 -0
  648. data/lib/coss/types/hook_attempt.rb +25 -0
  649. data/lib/coss/types/hook_attempt_list.rb +13 -0
  650. data/lib/coss/types/hook_attempt_list_object.rb +11 -0
  651. data/lib/coss/types/hook_attempt_object.rb +11 -0
  652. data/lib/coss/types/hook_delivery.rb +31 -0
  653. data/lib/coss/types/hook_delivery_list.rb +13 -0
  654. data/lib/coss/types/hook_delivery_list_object.rb +11 -0
  655. data/lib/coss/types/hook_delivery_object.rb +11 -0
  656. data/lib/coss/types/hook_delivery_status.rb +13 -0
  657. data/lib/coss/types/hook_endpoint.rb +37 -0
  658. data/lib/coss/types/hook_endpoint_disabled_reason.rb +12 -0
  659. data/lib/coss/types/hook_endpoint_list.rb +13 -0
  660. data/lib/coss/types/hook_endpoint_list_object.rb +11 -0
  661. data/lib/coss/types/hook_endpoint_object.rb +11 -0
  662. data/lib/coss/types/hook_endpoint_recovery.rb +25 -0
  663. data/lib/coss/types/hook_endpoint_recovery_object.rb +11 -0
  664. data/lib/coss/types/hook_endpoint_recovery_status.rb +12 -0
  665. data/lib/coss/types/hook_endpoint_secret.rb +11 -0
  666. data/lib/coss/types/hook_endpoint_secret_object.rb +11 -0
  667. data/lib/coss/types/hook_endpoint_webhook_event.rb +19 -0
  668. data/lib/coss/types/hook_endpoint_webhook_event_data.rb +19 -0
  669. data/lib/coss/types/hook_endpoint_webhook_event_object.rb +11 -0
  670. data/lib/coss/types/hook_endpoint_webhook_event_type.rb +11 -0
  671. data/lib/coss/types/hook_endpoint_with_secret.rb +39 -0
  672. data/lib/coss/types/hook_endpoint_with_secret_disabled_reason.rb +12 -0
  673. data/lib/coss/types/hook_endpoint_with_secret_object.rb +11 -0
  674. data/lib/coss/types/hook_event_type.rb +23 -0
  675. data/lib/coss/types/hook_event_type_list.rb +13 -0
  676. data/lib/coss/types/hook_event_type_list_object.rb +11 -0
  677. data/lib/coss/types/hook_event_type_object.rb +11 -0
  678. data/lib/coss/types/hook_message.rb +19 -0
  679. data/lib/coss/types/hook_message_list.rb +13 -0
  680. data/lib/coss/types/hook_message_list_object.rb +11 -0
  681. data/lib/coss/types/hook_message_object.rb +11 -0
  682. data/lib/coss/types/hook_portal_session.rb +21 -0
  683. data/lib/coss/types/hook_portal_session_object.rb +11 -0
  684. data/lib/coss/types/inbound_address.rb +13 -0
  685. data/lib/coss/types/inbound_address_object.rb +11 -0
  686. data/lib/coss/types/invoice.rb +51 -0
  687. data/lib/coss/types/invoice_collection_method.rb +12 -0
  688. data/lib/coss/types/invoice_currency.rb +11 -0
  689. data/lib/coss/types/invoice_kind.rb +14 -0
  690. data/lib/coss/types/invoice_line.rb +29 -0
  691. data/lib/coss/types/invoice_line_kind.rb +20 -0
  692. data/lib/coss/types/invoice_line_meter.rb +18 -0
  693. data/lib/coss/types/invoice_line_object.rb +11 -0
  694. data/lib/coss/types/invoice_line_period.rb +11 -0
  695. data/lib/coss/types/invoice_list.rb +13 -0
  696. data/lib/coss/types/invoice_list_object.rb +11 -0
  697. data/lib/coss/types/invoice_object.rb +11 -0
  698. data/lib/coss/types/invoice_period.rb +11 -0
  699. data/lib/coss/types/invoice_status.rb +14 -0
  700. data/lib/coss/types/invoice_summary.rb +49 -0
  701. data/lib/coss/types/invoice_summary_collection_method.rb +12 -0
  702. data/lib/coss/types/invoice_summary_currency.rb +11 -0
  703. data/lib/coss/types/invoice_summary_kind.rb +14 -0
  704. data/lib/coss/types/invoice_summary_object.rb +11 -0
  705. data/lib/coss/types/invoice_summary_period.rb +11 -0
  706. data/lib/coss/types/invoice_summary_status.rb +14 -0
  707. data/lib/coss/types/list_suppressions_request_scope.rb +16 -0
  708. data/lib/coss/types/list_suppressions_request_scope_one.rb +11 -0
  709. data/lib/coss/types/list_suppressions_request_scope_zero.rb +11 -0
  710. data/lib/coss/types/log.rb +49 -0
  711. data/lib/coss/types/log_drain.rb +27 -0
  712. data/lib/coss/types/log_drain_attempt.rb +21 -0
  713. data/lib/coss/types/log_drain_attempt_object.rb +11 -0
  714. data/lib/coss/types/log_drain_batch.rb +33 -0
  715. data/lib/coss/types/log_drain_batch_list.rb +13 -0
  716. data/lib/coss/types/log_drain_batch_list_object.rb +11 -0
  717. data/lib/coss/types/log_drain_batch_object.rb +11 -0
  718. data/lib/coss/types/log_drain_batch_status.rb +13 -0
  719. data/lib/coss/types/log_drain_disabled_reason.rb +12 -0
  720. data/lib/coss/types/log_drain_list.rb +13 -0
  721. data/lib/coss/types/log_drain_list_object.rb +11 -0
  722. data/lib/coss/types/log_drain_object.rb +11 -0
  723. data/lib/coss/types/log_drain_source.rb +17 -0
  724. data/lib/coss/types/log_drain_with_secret.rb +29 -0
  725. data/lib/coss/types/log_drain_with_secret_disabled_reason.rb +12 -0
  726. data/lib/coss/types/log_drain_with_secret_object.rb +11 -0
  727. data/lib/coss/types/log_level.rb +13 -0
  728. data/lib/coss/types/log_list.rb +13 -0
  729. data/lib/coss/types/log_list_object.rb +11 -0
  730. data/lib/coss/types/log_object.rb +11 -0
  731. data/lib/coss/types/log_source.rb +16 -0
  732. data/lib/coss/types/marketing_settings.rb +25 -0
  733. data/lib/coss/types/marketing_settings_object.rb +11 -0
  734. data/lib/coss/types/marketing_standing.rb +13 -0
  735. data/lib/coss/types/marketing_standing_status.rb +12 -0
  736. data/lib/coss/types/preference_links.rb +15 -0
  737. data/lib/coss/types/preference_links_object.rb +11 -0
  738. data/lib/coss/types/received_email.rb +57 -0
  739. data/lib/coss/types/received_email_attachment.rb +19 -0
  740. data/lib/coss/types/received_email_attachment_disposition.rb +12 -0
  741. data/lib/coss/types/received_email_blocked_reason.rb +11 -0
  742. data/lib/coss/types/received_email_headers_item.rb +11 -0
  743. data/lib/coss/types/received_email_list.rb +13 -0
  744. data/lib/coss/types/received_email_list_object.rb +11 -0
  745. data/lib/coss/types/received_email_object.rb +11 -0
  746. data/lib/coss/types/received_email_status.rb +12 -0
  747. data/lib/coss/types/received_email_summary.rb +41 -0
  748. data/lib/coss/types/received_email_summary_blocked_reason.rb +11 -0
  749. data/lib/coss/types/received_email_summary_object.rb +11 -0
  750. data/lib/coss/types/received_email_summary_status.rb +12 -0
  751. data/lib/coss/types/received_email_verdicts.rb +21 -0
  752. data/lib/coss/types/received_email_verdicts_dkim.rb +14 -0
  753. data/lib/coss/types/received_email_verdicts_dmarc.rb +14 -0
  754. data/lib/coss/types/received_email_verdicts_spam.rb +14 -0
  755. data/lib/coss/types/received_email_verdicts_spf.rb +14 -0
  756. data/lib/coss/types/received_email_verdicts_virus.rb +14 -0
  757. data/lib/coss/types/received_email_webhook_event.rb +19 -0
  758. data/lib/coss/types/received_email_webhook_event_data.rb +31 -0
  759. data/lib/coss/types/received_email_webhook_event_object.rb +11 -0
  760. data/lib/coss/types/received_email_webhook_event_type.rb +11 -0
  761. data/lib/coss/types/received_sms.rb +25 -0
  762. data/lib/coss/types/received_sms_keyword.rb +13 -0
  763. data/lib/coss/types/received_sms_list.rb +13 -0
  764. data/lib/coss/types/received_sms_list_object.rb +11 -0
  765. data/lib/coss/types/received_sms_object.rb +11 -0
  766. data/lib/coss/types/received_sms_webhook_event.rb +19 -0
  767. data/lib/coss/types/received_sms_webhook_event_data.rb +19 -0
  768. data/lib/coss/types/received_sms_webhook_event_data_keyword.rb +13 -0
  769. data/lib/coss/types/received_sms_webhook_event_object.rb +11 -0
  770. data/lib/coss/types/received_sms_webhook_event_type.rb +13 -0
  771. data/lib/coss/types/receiving_domain.rb +18 -0
  772. data/lib/coss/types/receiving_domain_record.rb +21 -0
  773. data/lib/coss/types/receiving_domain_record_status.rb +14 -0
  774. data/lib/coss/types/receiving_domain_record_type.rb +11 -0
  775. data/lib/coss/types/rendered_email_template.rb +21 -0
  776. data/lib/coss/types/rendered_email_template_object.rb +11 -0
  777. data/lib/coss/types/reputation.rb +23 -0
  778. data/lib/coss/types/reputation_check.rb +25 -0
  779. data/lib/coss/types/reputation_check_severity.rb +13 -0
  780. data/lib/coss/types/reputation_object.rb +11 -0
  781. data/lib/coss/types/reputation_status.rb +13 -0
  782. data/lib/coss/types/reputation_window.rb +12 -0
  783. data/lib/coss/types/risk_assessment.rb +35 -0
  784. data/lib/coss/types/risk_assessment_degraded_item.rb +17 -0
  785. data/lib/coss/types/risk_assessment_list.rb +13 -0
  786. data/lib/coss/types/risk_assessment_list_object.rb +11 -0
  787. data/lib/coss/types/risk_assessment_object.rb +11 -0
  788. data/lib/coss/types/risk_assessment_review_status.rb +12 -0
  789. data/lib/coss/types/risk_assessment_signals.rb +23 -0
  790. data/lib/coss/types/risk_assessment_user.rb +11 -0
  791. data/lib/coss/types/risk_calibration.rb +21 -0
  792. data/lib/coss/types/risk_calibration_object.rb +11 -0
  793. data/lib/coss/types/risk_calibration_reason.rb +23 -0
  794. data/lib/coss/types/risk_calibration_reason_code.rb +57 -0
  795. data/lib/coss/types/risk_calibration_rule.rb +19 -0
  796. data/lib/coss/types/risk_captcha_signals.rb +11 -0
  797. data/lib/coss/types/risk_checkout_request.rb +18 -0
  798. data/lib/coss/types/risk_checkout_request_card.rb +14 -0
  799. data/lib/coss/types/risk_checkout_request_card_funding.rb +14 -0
  800. data/lib/coss/types/risk_checkout_signals.rb +20 -0
  801. data/lib/coss/types/risk_checkout_signals_card_funding.rb +14 -0
  802. data/lib/coss/types/risk_content_classification.rb +14 -0
  803. data/lib/coss/types/risk_content_classification_object.rb +11 -0
  804. data/lib/coss/types/risk_content_signals.rb +17 -0
  805. data/lib/coss/types/risk_decision.rb +13 -0
  806. data/lib/coss/types/risk_device_signals.rb +22 -0
  807. data/lib/coss/types/risk_email_check.rb +31 -0
  808. data/lib/coss/types/risk_email_check_degraded_item.rb +12 -0
  809. data/lib/coss/types/risk_email_check_deliverability.rb +13 -0
  810. data/lib/coss/types/risk_email_check_object.rb +11 -0
  811. data/lib/coss/types/risk_email_signals.rb +23 -0
  812. data/lib/coss/types/risk_email_signals_deliverability.rb +13 -0
  813. data/lib/coss/types/risk_event.rb +15 -0
  814. data/lib/coss/types/risk_ip_check.rb +33 -0
  815. data/lib/coss/types/risk_ip_check_degraded_item.rb +12 -0
  816. data/lib/coss/types/risk_ip_check_hosting_kind.rb +13 -0
  817. data/lib/coss/types/risk_ip_check_object.rb +11 -0
  818. data/lib/coss/types/risk_ip_privacy.rb +15 -0
  819. data/lib/coss/types/risk_ip_signals.rb +27 -0
  820. data/lib/coss/types/risk_ip_signals_hosting_kind.rb +13 -0
  821. data/lib/coss/types/risk_limit.rb +23 -0
  822. data/lib/coss/types/risk_limit_bucket.rb +25 -0
  823. data/lib/coss/types/risk_limit_bucket_list.rb +14 -0
  824. data/lib/coss/types/risk_limit_bucket_list_object.rb +11 -0
  825. data/lib/coss/types/risk_limit_bucket_object.rb +11 -0
  826. data/lib/coss/types/risk_limit_bucket_on_failure.rb +12 -0
  827. data/lib/coss/types/risk_limit_object.rb +11 -0
  828. data/lib/coss/types/risk_list.rb +12 -0
  829. data/lib/coss/types/risk_list_entry.rb +23 -0
  830. data/lib/coss/types/risk_list_entry_list.rb +13 -0
  831. data/lib/coss/types/risk_list_entry_list_object.rb +11 -0
  832. data/lib/coss/types/risk_list_entry_object.rb +11 -0
  833. data/lib/coss/types/risk_list_entry_type.rb +16 -0
  834. data/lib/coss/types/risk_login_signals.rb +12 -0
  835. data/lib/coss/types/risk_outcome.rb +13 -0
  836. data/lib/coss/types/risk_reason.rb +33 -0
  837. data/lib/coss/types/risk_reason_code.rb +60 -0
  838. data/lib/coss/types/risk_reason_type.rb +16 -0
  839. data/lib/coss/types/risk_reason_window.rb +12 -0
  840. data/lib/coss/types/risk_rule.rb +29 -0
  841. data/lib/coss/types/risk_rule_condition.rb +14 -0
  842. data/lib/coss/types/risk_rule_condition_field.rb +62 -0
  843. data/lib/coss/types/risk_rule_condition_operator.rb +19 -0
  844. data/lib/coss/types/risk_rule_condition_value.rb +17 -0
  845. data/lib/coss/types/risk_rule_list.rb +14 -0
  846. data/lib/coss/types/risk_rule_list_object.rb +11 -0
  847. data/lib/coss/types/risk_rule_match.rb +12 -0
  848. data/lib/coss/types/risk_rule_object.rb +11 -0
  849. data/lib/coss/types/risk_settings.rb +23 -0
  850. data/lib/coss/types/risk_settings_captcha.rb +11 -0
  851. data/lib/coss/types/risk_settings_captcha_provider.rb +12 -0
  852. data/lib/coss/types/risk_settings_content_thresholds.rb +17 -0
  853. data/lib/coss/types/risk_settings_disabled_reasons_item.rb +53 -0
  854. data/lib/coss/types/risk_settings_object.rb +11 -0
  855. data/lib/coss/types/risk_settings_reason_weights.rb +103 -0
  856. data/lib/coss/types/risk_velocity_signals.rb +23 -0
  857. data/lib/coss/types/risk_webhook_event.rb +19 -0
  858. data/lib/coss/types/risk_webhook_event_data.rb +25 -0
  859. data/lib/coss/types/risk_webhook_event_object.rb +11 -0
  860. data/lib/coss/types/risk_webhook_event_type.rb +12 -0
  861. data/lib/coss/types/segment.rb +19 -0
  862. data/lib/coss/types/segment_filter.rb +15 -0
  863. data/lib/coss/types/segment_filter_conditions_item.rb +21 -0
  864. data/lib/coss/types/segment_filter_conditions_item_audience_id.rb +13 -0
  865. data/lib/coss/types/segment_filter_conditions_item_audience_id_field.rb +11 -0
  866. data/lib/coss/types/segment_filter_conditions_item_audience_id_op.rb +12 -0
  867. data/lib/coss/types/segment_filter_conditions_item_conditions.rb +11 -0
  868. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item.rb +21 -0
  869. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_audience.rb +11 -0
  870. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_audience_op.rb +12 -0
  871. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_created_at.rb +11 -0
  872. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_created_at_op.rb +13 -0
  873. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_created_at_value.rb +14 -0
  874. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_email.rb +11 -0
  875. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_email_op.rb +13 -0
  876. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_property.rb +13 -0
  877. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_property_op.rb +22 -0
  878. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_property_value.rb +18 -0
  879. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_property_value_three_item.rb +15 -0
  880. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_topic.rb +11 -0
  881. data/lib/coss/types/segment_filter_conditions_item_conditions_conditions_item_topic_op.rb +12 -0
  882. data/lib/coss/types/segment_filter_conditions_item_conditions_match.rb +12 -0
  883. data/lib/coss/types/segment_filter_conditions_item_field.rb +13 -0
  884. data/lib/coss/types/segment_filter_conditions_item_field_field.rb +11 -0
  885. data/lib/coss/types/segment_filter_conditions_item_field_op.rb +13 -0
  886. data/lib/coss/types/segment_filter_conditions_item_field_value.rb +14 -0
  887. data/lib/coss/types/segment_filter_conditions_item_key.rb +15 -0
  888. data/lib/coss/types/segment_filter_conditions_item_key_field.rb +11 -0
  889. data/lib/coss/types/segment_filter_conditions_item_key_op.rb +22 -0
  890. data/lib/coss/types/segment_filter_conditions_item_key_value.rb +18 -0
  891. data/lib/coss/types/segment_filter_conditions_item_key_value_three_item.rb +15 -0
  892. data/lib/coss/types/segment_filter_conditions_item_one.rb +13 -0
  893. data/lib/coss/types/segment_filter_conditions_item_one_field.rb +11 -0
  894. data/lib/coss/types/segment_filter_conditions_item_one_op.rb +13 -0
  895. data/lib/coss/types/segment_filter_conditions_item_topic.rb +13 -0
  896. data/lib/coss/types/segment_filter_conditions_item_topic_field.rb +11 -0
  897. data/lib/coss/types/segment_filter_conditions_item_topic_op.rb +12 -0
  898. data/lib/coss/types/segment_filter_match.rb +12 -0
  899. data/lib/coss/types/segment_list.rb +13 -0
  900. data/lib/coss/types/segment_list_object.rb +11 -0
  901. data/lib/coss/types/segment_object.rb +11 -0
  902. data/lib/coss/types/send_email_attachment.rb +15 -0
  903. data/lib/coss/types/send_email_request.rb +45 -0
  904. data/lib/coss/types/send_email_request_bcc.rb +13 -0
  905. data/lib/coss/types/send_email_request_cc.rb +13 -0
  906. data/lib/coss/types/send_email_request_reply_to.rb +13 -0
  907. data/lib/coss/types/send_email_request_stream.rb +12 -0
  908. data/lib/coss/types/send_email_request_tags_item.rb +11 -0
  909. data/lib/coss/types/send_email_request_to.rb +13 -0
  910. data/lib/coss/types/sms.rb +39 -0
  911. data/lib/coss/types/sms_encoding.rb +12 -0
  912. data/lib/coss/types/sms_event.rb +19 -0
  913. data/lib/coss/types/sms_event_data.rb +13 -0
  914. data/lib/coss/types/sms_event_data_failure.rb +12 -0
  915. data/lib/coss/types/sms_event_data_suppression.rb +12 -0
  916. data/lib/coss/types/sms_event_data_suppression_reason.rb +13 -0
  917. data/lib/coss/types/sms_event_list.rb +13 -0
  918. data/lib/coss/types/sms_event_list_object.rb +11 -0
  919. data/lib/coss/types/sms_event_object.rb +11 -0
  920. data/lib/coss/types/sms_event_type.rb +17 -0
  921. data/lib/coss/types/sms_failure.rb +12 -0
  922. data/lib/coss/types/sms_list.rb +13 -0
  923. data/lib/coss/types/sms_list_object.rb +11 -0
  924. data/lib/coss/types/sms_number.rb +27 -0
  925. data/lib/coss/types/sms_number_kind.rb +12 -0
  926. data/lib/coss/types/sms_number_list.rb +13 -0
  927. data/lib/coss/types/sms_number_list_object.rb +11 -0
  928. data/lib/coss/types/sms_number_object.rb +11 -0
  929. data/lib/coss/types/sms_number_registration_status.rb +16 -0
  930. data/lib/coss/types/sms_number_status.rb +13 -0
  931. data/lib/coss/types/sms_object.rb +11 -0
  932. data/lib/coss/types/sms_status.rb +17 -0
  933. data/lib/coss/types/sms_suppression.rb +19 -0
  934. data/lib/coss/types/sms_suppression_check.rb +15 -0
  935. data/lib/coss/types/sms_suppression_check_object.rb +11 -0
  936. data/lib/coss/types/sms_suppression_check_suppression.rb +19 -0
  937. data/lib/coss/types/sms_suppression_check_suppression_object.rb +11 -0
  938. data/lib/coss/types/sms_suppression_check_suppression_reason.rb +13 -0
  939. data/lib/coss/types/sms_suppression_list.rb +13 -0
  940. data/lib/coss/types/sms_suppression_list_object.rb +11 -0
  941. data/lib/coss/types/sms_suppression_object.rb +11 -0
  942. data/lib/coss/types/sms_suppression_reason.rb +13 -0
  943. data/lib/coss/types/sms_tags_item.rb +11 -0
  944. data/lib/coss/types/sms_webhook_event.rb +19 -0
  945. data/lib/coss/types/sms_webhook_event_data.rb +29 -0
  946. data/lib/coss/types/sms_webhook_event_data_failure.rb +12 -0
  947. data/lib/coss/types/sms_webhook_event_data_suppression.rb +12 -0
  948. data/lib/coss/types/sms_webhook_event_data_suppression_reason.rb +13 -0
  949. data/lib/coss/types/sms_webhook_event_data_tags_item.rb +11 -0
  950. data/lib/coss/types/sms_webhook_event_object.rb +11 -0
  951. data/lib/coss/types/sms_webhook_event_type.rb +17 -0
  952. data/lib/coss/types/storage_settings.rb +15 -0
  953. data/lib/coss/types/storage_settings_content_storage.rb +12 -0
  954. data/lib/coss/types/storage_settings_object.rb +11 -0
  955. data/lib/coss/types/suppression.rb +21 -0
  956. data/lib/coss/types/suppression_check.rb +15 -0
  957. data/lib/coss/types/suppression_check_object.rb +11 -0
  958. data/lib/coss/types/suppression_import.rb +15 -0
  959. data/lib/coss/types/suppression_import_invalid_item.rb +13 -0
  960. data/lib/coss/types/suppression_import_object.rb +11 -0
  961. data/lib/coss/types/suppression_list.rb +13 -0
  962. data/lib/coss/types/suppression_list_object.rb +11 -0
  963. data/lib/coss/types/suppression_object.rb +11 -0
  964. data/lib/coss/types/suppression_reason.rb +15 -0
  965. data/lib/coss/types/template_content.rb +15 -0
  966. data/lib/coss/types/template_content_input.rb +15 -0
  967. data/lib/coss/types/template_problem.rb +17 -0
  968. data/lib/coss/types/template_problem_field.rb +13 -0
  969. data/lib/coss/types/template_variable.rb +19 -0
  970. data/lib/coss/types/template_variable_default.rb +15 -0
  971. data/lib/coss/types/template_variable_fields_item.rb +13 -0
  972. data/lib/coss/types/template_variable_fields_item_type.rb +13 -0
  973. data/lib/coss/types/template_variable_input.rb +19 -0
  974. data/lib/coss/types/template_variable_input_default.rb +16 -0
  975. data/lib/coss/types/template_variable_input_fields_item.rb +13 -0
  976. data/lib/coss/types/template_variable_input_fields_item_type.rb +13 -0
  977. data/lib/coss/types/template_variable_input_type.rb +14 -0
  978. data/lib/coss/types/template_variable_type.rb +14 -0
  979. data/lib/coss/types/topic.rb +27 -0
  980. data/lib/coss/types/topic_default_subscription.rb +12 -0
  981. data/lib/coss/types/topic_list.rb +13 -0
  982. data/lib/coss/types/topic_list_object.rb +11 -0
  983. data/lib/coss/types/topic_object.rb +11 -0
  984. data/lib/coss/types/topic_visibility.rb +12 -0
  985. data/lib/coss/types/tracking_domain.rb +25 -0
  986. data/lib/coss/types/tracking_domain_record.rb +18 -0
  987. data/lib/coss/types/tracking_domain_record_status.rb +14 -0
  988. data/lib/coss/types/tracking_domain_record_type.rb +11 -0
  989. data/lib/coss/types/tracking_domain_status.rb +15 -0
  990. data/lib/coss/types/tracking_options.rb +15 -0
  991. data/lib/coss/types/tracking_rule.rb +25 -0
  992. data/lib/coss/types/tracking_rule_object.rb +11 -0
  993. data/lib/coss/types/tracking_settings.rb +16 -0
  994. data/lib/coss/types/tracking_settings_object.rb +11 -0
  995. data/lib/coss/types/update_tracking_rule_request.rb +15 -0
  996. data/lib/coss/types/usage.rb +27 -0
  997. data/lib/coss/types/usage_list.rb +13 -0
  998. data/lib/coss/types/usage_list_object.rb +11 -0
  999. data/lib/coss/types/usage_meter.rb +18 -0
  1000. data/lib/coss/types/usage_object.rb +11 -0
  1001. data/lib/coss/types/webhook_attempt.rb +21 -0
  1002. data/lib/coss/types/webhook_attempt_object.rb +11 -0
  1003. data/lib/coss/types/webhook_delivery.rb +35 -0
  1004. data/lib/coss/types/webhook_delivery_list.rb +13 -0
  1005. data/lib/coss/types/webhook_delivery_list_object.rb +11 -0
  1006. data/lib/coss/types/webhook_delivery_object.rb +11 -0
  1007. data/lib/coss/types/webhook_delivery_status.rb +13 -0
  1008. data/lib/coss/types/webhook_endpoint.rb +33 -0
  1009. data/lib/coss/types/webhook_endpoint_disabled_reason.rb +12 -0
  1010. data/lib/coss/types/webhook_endpoint_list.rb +13 -0
  1011. data/lib/coss/types/webhook_endpoint_list_object.rb +11 -0
  1012. data/lib/coss/types/webhook_endpoint_object.rb +11 -0
  1013. data/lib/coss/types/webhook_endpoint_recovery.rb +15 -0
  1014. data/lib/coss/types/webhook_endpoint_recovery_object.rb +11 -0
  1015. data/lib/coss/types/webhook_endpoint_with_secret.rb +35 -0
  1016. data/lib/coss/types/webhook_endpoint_with_secret_disabled_reason.rb +12 -0
  1017. data/lib/coss/types/webhook_endpoint_with_secret_object.rb +11 -0
  1018. data/lib/coss/types/webhook_listener.rb +21 -0
  1019. data/lib/coss/types/webhook_listener_ack.rb +17 -0
  1020. data/lib/coss/types/webhook_listener_delivery.rb +23 -0
  1021. data/lib/coss/types/webhook_listener_delivery_object.rb +11 -0
  1022. data/lib/coss/types/webhook_listener_object.rb +11 -0
  1023. data/lib/coss/types/webhook_listener_poll.rb +15 -0
  1024. data/lib/coss/types/webhook_listener_poll_object.rb +11 -0
  1025. data/lib/coss/types/webhook_test_event.rb +15 -0
  1026. data/lib/coss/types/webhook_test_event_event.rb +26 -0
  1027. data/lib/coss/types/webhook_test_event_object.rb +11 -0
  1028. data/lib/coss/version.rb +5 -0
  1029. data/lib/coss/webhook_endpoints/client.rb +325 -0
  1030. data/lib/coss/webhook_endpoints/deliveries/client.rb +153 -0
  1031. data/lib/coss/webhook_endpoints/deliveries/types/get_deliveries_request.rb +15 -0
  1032. data/lib/coss/webhook_endpoints/deliveries/types/list_deliveries_request.rb +21 -0
  1033. data/lib/coss/webhook_endpoints/deliveries/types/list_deliveries_request_status.rb +17 -0
  1034. data/lib/coss/webhook_endpoints/deliveries/types/retry_deliveries_request.rb +15 -0
  1035. data/lib/coss/webhook_endpoints/types/create_webhook_endpoint_request.rb +17 -0
  1036. data/lib/coss/webhook_endpoints/types/create_webhook_endpoint_request_api_version.rb +13 -0
  1037. data/lib/coss/webhook_endpoints/types/create_webhook_endpoint_request_event_types_item.rb +68 -0
  1038. data/lib/coss/webhook_endpoints/types/delete_webhook_endpoints_request.rb +11 -0
  1039. data/lib/coss/webhook_endpoints/types/get_webhook_endpoints_request.rb +11 -0
  1040. data/lib/coss/webhook_endpoints/types/recover_webhook_endpoint_request.rb +13 -0
  1041. data/lib/coss/webhook_endpoints/types/roll_webhook_endpoint_secret_request.rb +13 -0
  1042. data/lib/coss/webhook_endpoints/types/update_webhook_endpoint_request.rb +21 -0
  1043. data/lib/coss/webhook_endpoints/types/update_webhook_endpoint_request_api_version.rb +13 -0
  1044. data/lib/coss/webhook_endpoints/types/update_webhook_endpoint_request_event_types_item.rb +68 -0
  1045. data/lib/coss/webhook_events/client.rb +63 -0
  1046. data/lib/coss/webhook_events/types/create_test_webhook_event_request.rb +13 -0
  1047. data/lib/coss/webhook_events/types/create_test_webhook_event_request_type.rb +68 -0
  1048. data/lib/coss/webhook_listeners/client.rb +157 -0
  1049. data/lib/coss/webhook_listeners/types/create_webhook_listener_request.rb +15 -0
  1050. data/lib/coss/webhook_listeners/types/create_webhook_listener_request_api_version.rb +13 -0
  1051. data/lib/coss/webhook_listeners/types/create_webhook_listener_request_event_types_item.rb +68 -0
  1052. data/lib/coss/webhook_listeners/types/delete_webhook_listeners_request.rb +11 -0
  1053. data/lib/coss/webhook_listeners/types/poll_webhook_listener_request.rb +17 -0
  1054. data/lib/coss/webhooks.rb +98 -0
  1055. data/lib/coss.rb +1050 -0
  1056. data/reference.md +15152 -0
  1057. metadata +1097 -0
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Hooks
5
+ module Messages
6
+ module Types
7
+ class SendHookMessageRequest < Internal::Types::Model
8
+ field :application, -> { String }, optional: false, nullable: false
9
+
10
+ field :idempotency_key, -> { String }, optional: true, nullable: false, api_name: "Idempotency-Key"
11
+
12
+ field :event_type, -> { String }, optional: false, nullable: false
13
+
14
+ field :payload, -> { Internal::Types::Hash[String, Object] }, optional: false, nullable: false
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Hooks
5
+ module Portal
6
+ class Client
7
+ # @param client [Coss::Internal::Http::RawClient]
8
+ #
9
+ # @return [void]
10
+ def initialize(client:)
11
+ @client = client
12
+ end
13
+
14
+ # Signs the application's user in to the portal, where they add endpoints, pick event types, see deliveries and
15
+ # retry them, without you building any UI. Create one each time the user opens it (from your backend: never
16
+ # expose the API key) and open or embed the returned `url`; embedding needs the site's origin in the
17
+ # environment's portal settings.
18
+ #
19
+ # @param request_options [Hash]
20
+ # @param params [Coss::Hooks::Portal::Types::CreateHookPortalSessionRequest]
21
+ # @option request_options [String] :base_url
22
+ # @option request_options [Hash{String => Object}] :additional_headers
23
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
24
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
25
+ # @option request_options [Integer] :timeout_in_seconds
26
+ # @option params [String] :application
27
+ #
28
+ # @example
29
+ # client.hooks.portal.create_session(
30
+ # application: "customer_8812",
31
+ # expires_in: 3600
32
+ # )
33
+ #
34
+ # @return [Coss::Types::HookPortalSession]
35
+ def create_session(request_options: {}, **params)
36
+ params = Coss::Internal::Types::Utils.normalize_keys(params)
37
+ request_data = Coss::Hooks::Portal::Types::CreateHookPortalSessionRequest.new(params).to_h
38
+ non_body_param_names = %w[application]
39
+ body = request_data.except(*non_body_param_names)
40
+
41
+ headers = { "Idempotency-Key" => Coss::Internal::IdempotencyKey.generate }
42
+ request = Coss::Internal::JSON::Request.new(
43
+ base_url: request_options[:base_url],
44
+ method: "POST",
45
+ path: "v1/hooks/applications/#{URI.encode_uri_component(params[:application].to_s)}/portal_sessions",
46
+ headers: headers,
47
+ body: body,
48
+ request_options: request_options
49
+ )
50
+ begin
51
+ response = @client.send(request)
52
+ rescue Net::HTTPRequestTimeout
53
+ raise Coss::Errors::TimeoutError
54
+ end
55
+ code = response.code.to_i
56
+ if code.between?(200, 299)
57
+ (response.body.to_s.empty? ? nil : Coss::Types::HookPortalSession.load(response.body))
58
+ else
59
+ error_class = Coss::Errors::ResponseError.subclass_for_code(code)
60
+ raise error_class.new(response.body, code: code)
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Hooks
5
+ module Portal
6
+ module Types
7
+ class CreateHookPortalSessionRequest < Internal::Types::Model
8
+ field :application, -> { String }, optional: false, nullable: false
9
+
10
+ field :expires_in, -> { Integer }, optional: true, nullable: false
11
+
12
+ field :read_only, -> { Internal::Types::Boolean }, optional: true, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Internal
5
+ module Errors
6
+ class ConstraintError < StandardError
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Internal
5
+ module Errors
6
+ class TypeError < StandardError
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Internal
5
+ module Http
6
+ # @api private
7
+ class BaseRequest
8
+ attr_reader :base_url, :path, :method, :headers, :query, :request_options, :max_retries
9
+
10
+ # @param base_url [String] The base URL for the request
11
+ # @param path [String] The path for the request
12
+ # @param method [String] The HTTP method for the request (:get, :post, etc.)
13
+ # @param headers [Hash] Additional headers for the request (optional)
14
+ # @param query [Hash] Query parameters for the request (optional)
15
+ # @param request_options [Coss::RequestOptions, Hash{Symbol=>Object}, nil]
16
+ # @param max_retries [Integer, nil] Overrides the client's retry count for this request
17
+ def initialize(base_url:, path:, method:, headers: {}, query: {}, request_options: {}, max_retries: nil)
18
+ @base_url = base_url
19
+ @path = path
20
+ @method = method
21
+ @headers = headers
22
+ @query = query
23
+ @request_options = request_options
24
+ @max_retries = max_retries
25
+ end
26
+
27
+ # @return [Hash] The query parameters merged with additional query parameters from request options.
28
+ def encode_query
29
+ additional_query = @request_options&.dig(:additional_query_parameters) || @request_options&.dig("additional_query_parameters") || {}
30
+ @query.merge(additional_query)
31
+ end
32
+
33
+ # Child classes should implement:
34
+ # - encode_headers: Returns the encoded HTTP request headers.
35
+ # - encode_body: Returns the encoded HTTP request body.
36
+
37
+ private
38
+
39
+ # Merges additional_headers from request_options into sdk_headers, filtering out
40
+ # any keys that collide with SDK-set or client-protected headers (case-insensitive).
41
+ # @param sdk_headers [Hash] Headers set by the SDK for this request type.
42
+ # @param protected_keys [Array<String>] Additional header keys that must not be overridden.
43
+ # @return [Hash] The merged headers.
44
+ def merge_additional_headers(sdk_headers, protected_keys: [])
45
+ additional_headers = @request_options&.dig(:additional_headers) || @request_options&.dig("additional_headers") || {}
46
+ all_protected = (sdk_headers.keys + protected_keys).to_set { |k| k.to_s.downcase }
47
+ filtered = additional_headers.reject { |key, _| all_protected.include?(key.to_s.downcase) }
48
+ sdk_headers.merge(filtered)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,271 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Internal
5
+ module Http
6
+ # @api private
7
+ class RawClient
8
+ # Default HTTP status codes that trigger a retry
9
+ RETRYABLE_STATUSES = [408, 409, 429, 500, 502, 503, 504, 521, 522, 524].freeze
10
+ # Initial delay between retries in seconds
11
+ INITIAL_RETRY_DELAY = 0.5
12
+ # Maximum delay between retries in seconds
13
+ MAX_RETRY_DELAY = 60.0
14
+ # Jitter factor for randomizing retry delays (20%)
15
+ JITTER_FACTOR = 0.2
16
+
17
+ # @return [String] The base URL for requests
18
+ attr_reader :base_url
19
+
20
+ # @param base_url [String] The base url for the request.
21
+ # @param max_retries [Integer] The number of times to retry a failed request, defaults to 2.
22
+ # @param timeout [Float] The timeout for the request, defaults to 60.0 seconds.
23
+ # @param headers [Hash] The headers for the request.
24
+ # @param overridable_headers [Array<String>] The names of the client-level headers a request
25
+ # may replace via `additional_headers`. Holds the API's global headers; SDK metadata and
26
+ # auth headers are absent from it and so stay protected.
27
+ # @param auth_provider [Object, nil] An optional auth provider responding to
28
+ # `auth_headers`. When present its headers are resolved on every request so
29
+ # token-based schemes (e.g. OAuth) can refresh an expired token mid-session.
30
+ def initialize(base_url:, max_retries: 2, timeout: 60.0, headers: {}, overridable_headers: [], auth_provider: nil)
31
+ @base_url = base_url
32
+ @max_retries = max_retries
33
+ @timeout = timeout
34
+ @auth_provider = auth_provider
35
+ @default_headers = {
36
+ "X-Fern-Language": "Ruby",
37
+ "X-Fern-SDK-Name": "coss",
38
+ "X-Fern-SDK-Version": "0.0.1"
39
+ }.merge(headers)
40
+ @overridable_headers = overridable_headers.to_set { |name| name.to_s.downcase }
41
+ end
42
+
43
+ # @param request [Coss::Internal::Http::BaseRequest] The HTTP request.
44
+ # @return [HTTP::Response] The HTTP response.
45
+ def send(request)
46
+ url = build_url(request)
47
+ # Resolve auth headers once per request (not per retry) so token-based
48
+ # providers refresh at most once here; static providers are cheap.
49
+ auth_headers = resolve_auth_headers
50
+ idempotency_headers = request.method.to_s.upcase == "POST" ? { "Idempotency-Key" => Coss::Internal::IdempotencyKey.generate } : {}
51
+ options = request.request_options || {}
52
+ timeout = options[:timeout_in_seconds] || options["timeout_in_seconds"] || @timeout
53
+ max_retries = request.max_retries || options[:max_retries] || options["max_retries"]
54
+ attempt = 0
55
+ response = nil
56
+
57
+ loop do
58
+ http_request = build_http_request(
59
+ url:,
60
+ method: request.method,
61
+ headers: idempotency_headers.merge(request.encode_headers(protected_keys: protected_header_keys + auth_headers.keys)),
62
+ body: request.encode_body,
63
+ auth_headers: auth_headers
64
+ )
65
+
66
+ conn = connect(url)
67
+ conn.open_timeout = timeout
68
+ conn.read_timeout = timeout
69
+ conn.write_timeout = timeout
70
+ conn.continue_timeout = timeout
71
+
72
+ response = conn.request(http_request)
73
+
74
+ break unless should_retry?(response, attempt, max_retries: max_retries)
75
+
76
+ delay = retry_delay(response, attempt)
77
+ sleep(delay)
78
+ attempt += 1
79
+ end
80
+
81
+ response
82
+ end
83
+
84
+ # The client-level header names that `additional_headers` must not replace: every default
85
+ # header except the API's global headers, which are overridable per request.
86
+ # @return [Array<Symbol, String>] The protected header names.
87
+ def protected_header_keys
88
+ return @default_headers.keys if @overridable_headers.empty?
89
+
90
+ @default_headers.keys.reject { |name| @overridable_headers.include?(name.to_s.downcase) }
91
+ end
92
+
93
+ # Determines if a request should be retried based on the response status code.
94
+ # @param response [Net::HTTPResponse] The HTTP response.
95
+ # @param attempt [Integer] The current retry attempt (0-indexed).
96
+ # @param max_retries [Integer, nil] The request-level retry count, when the endpoint
97
+ # overrides the client-level setting.
98
+ # @return [Boolean] Whether the request should be retried.
99
+ def should_retry?(response, attempt, max_retries: nil)
100
+ return false if attempt >= (max_retries || @max_retries)
101
+
102
+ status = response.code.to_i
103
+ RETRYABLE_STATUSES.include?(status)
104
+ end
105
+
106
+ # Calculates the delay before the next retry attempt using exponential backoff with jitter.
107
+ # Respects Retry-After header if present.
108
+ # @param response [Net::HTTPResponse] The HTTP response.
109
+ # @param attempt [Integer] The current retry attempt (0-indexed).
110
+ # @return [Float] The delay in seconds before the next retry.
111
+ def retry_delay(response, attempt)
112
+ # Check for Retry-After header (can be seconds or HTTP date)
113
+ retry_after = response["Retry-After"]
114
+ if retry_after
115
+ delay = parse_retry_after(retry_after)
116
+ return [delay, MAX_RETRY_DELAY].min if delay&.positive?
117
+ end
118
+
119
+ # Exponential backoff with jitter: base_delay * 2^attempt
120
+ base_delay = INITIAL_RETRY_DELAY * (2**attempt)
121
+ add_jitter([base_delay, MAX_RETRY_DELAY].min)
122
+ end
123
+
124
+ # Parses the Retry-After header value.
125
+ # @param value [String] The Retry-After header value (seconds or HTTP date).
126
+ # @return [Float, nil] The delay in seconds, or nil if parsing fails.
127
+ def parse_retry_after(value)
128
+ # Try parsing as integer (seconds)
129
+ seconds = Integer(value, exception: false)
130
+ return seconds.to_f if seconds
131
+
132
+ # Try parsing as HTTP date
133
+ begin
134
+ retry_time = Time.httpdate(value)
135
+ delay = retry_time - Time.now
136
+ delay.positive? ? delay : nil
137
+ rescue ArgumentError
138
+ nil
139
+ end
140
+ end
141
+
142
+ # Adds random jitter to a delay value.
143
+ # @param delay [Float] The base delay in seconds.
144
+ # @return [Float] The delay with jitter applied.
145
+ def add_jitter(delay)
146
+ jitter = delay * JITTER_FACTOR * (rand - 0.5) * 2
147
+ [delay + jitter, 0].max
148
+ end
149
+
150
+ LOCALHOST_HOSTS = %w[localhost 127.0.0.1 [::1]].freeze
151
+
152
+ # @param request [Coss::Internal::Http::BaseRequest] The HTTP request.
153
+ # @return [URI::Generic] The URL.
154
+ def build_url(request)
155
+ encoded_query = request.encode_query
156
+
157
+ # If the path is already an absolute URL, use it directly
158
+ if request.path.start_with?("http://", "https://")
159
+ url = request.path
160
+ url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
161
+ parsed = URI.parse(url)
162
+ validate_https!(parsed)
163
+ return parsed
164
+ end
165
+
166
+ path = request.path.start_with?("/") ? request.path[1..] : request.path
167
+ base = request.base_url || @base_url
168
+ url = "#{base.chomp("/")}/#{path}"
169
+ url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
170
+ parsed = URI.parse(url)
171
+ validate_https!(parsed)
172
+ parsed
173
+ end
174
+
175
+ # Raises if the URL uses http:// for a non-localhost host, which would
176
+ # send authentication credentials in plaintext.
177
+ # @param url [URI::Generic] The parsed URL.
178
+ def validate_https!(url)
179
+ return if url.scheme != "http"
180
+ return if LOCALHOST_HOSTS.include?(url.host)
181
+
182
+ raise ArgumentError,
183
+ "Refusing to send request to non-HTTPS URL: #{url}. " \
184
+ "HTTP is only allowed for localhost. Use HTTPS or pass a localhost URL."
185
+ end
186
+
187
+ # Resolves the auth headers to send with the next request. Delegates to the
188
+ # configured auth provider (if any) on every call so that token-based
189
+ # providers (e.g. OAuth client-credentials) can refresh an expired token
190
+ # before the request is sent. Returns an empty hash when no provider is set,
191
+ # which keeps the api-key / basic / bearer / no-auth paths unchanged.
192
+ # @return [Hash] The auth headers for the current request.
193
+ def resolve_auth_headers
194
+ return {} if @auth_provider.nil?
195
+
196
+ @auth_provider.auth_headers
197
+ end
198
+
199
+ # @param url [URI::Generic] The url to the resource.
200
+ # @param method [String] The HTTP method to use.
201
+ # @param headers [Hash] The headers for the request.
202
+ # @param body [String, nil] The body for the request.
203
+ # @param auth_headers [Hash] The auth headers resolved for this request. These
204
+ # take precedence over the static default headers but not over per-request
205
+ # headers, mirroring the previous baked-header precedence.
206
+ # @return [HTTP::Request] The HTTP request.
207
+ def build_http_request(url:, method:, headers: {}, body: nil, auth_headers: {})
208
+ request = Net::HTTPGenericRequest.new(
209
+ method,
210
+ !body.nil?,
211
+ method != "HEAD",
212
+ url
213
+ )
214
+
215
+ request_headers = @default_headers.merge(auth_headers).merge(headers)
216
+ request_headers.each { |name, value| request[name] = value }
217
+ request.body = body if body
218
+
219
+ # Net::HTTP disables its transparent gzip/deflate decoding as soon as an
220
+ # Accept-Encoding header is set explicitly on the request. Re-enable it so
221
+ # that compressed response bodies are still inflated.
222
+ request.extend(DecodeContent) if request_headers.keys.any? { |name| name.to_s.casecmp("accept-encoding").zero? }
223
+
224
+ request
225
+ end
226
+
227
+ # Keeps Net::HTTP's transparent gzip/deflate response decoding enabled
228
+ # even when an Accept-Encoding header is set explicitly on the request.
229
+ # @api private
230
+ module DecodeContent
231
+ def decode_content # rubocop:disable Naming/PredicateMethod
232
+ true
233
+ end
234
+ end
235
+
236
+ # @param query [Hash] The query for the request.
237
+ # @return [String, nil] The encoded query.
238
+ def encode_query(query)
239
+ query.to_h.empty? ? nil : URI.encode_www_form(query)
240
+ end
241
+
242
+ # @param url [URI::Generic] The url to connect to.
243
+ # @return [Net::HTTP] The HTTP connection.
244
+ def connect(url)
245
+ is_https = (url.scheme == "https")
246
+
247
+ port = if url.port
248
+ url.port
249
+ elsif is_https
250
+ Net::HTTP.https_default_port
251
+ else
252
+ Net::HTTP.http_default_port
253
+ end
254
+
255
+ http = Net::HTTP.new(url.host, port)
256
+ http.use_ssl = is_https
257
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER if is_https
258
+ # NOTE: We handle retries at the application level with HTTP status code awareness,
259
+ # so we set max_retries to 0 to disable Net::HTTP's built-in network-level retries.
260
+ http.max_retries = 0
261
+ http
262
+ end
263
+
264
+ # @return [String]
265
+ def inspect
266
+ "#<#{self.class.name}:0x#{object_id.to_s(16)} @base_url=#{@base_url.inspect}>"
267
+ end
268
+ end
269
+ end
270
+ end
271
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Internal
5
+ # @api private
6
+ #
7
+ # Owns generation of the auto-generated idempotency key so the key-generation
8
+ # logic and the underlying source of randomness live in a single place instead
9
+ # of being repeated at every endpoint call site.
10
+ class IdempotencyKey
11
+ # @return [String] A freshly generated idempotency key.
12
+ def self.generate
13
+ SecureRandom.uuid
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Internal
5
+ class CursorItemIterator < ItemIterator
6
+ # Instantiates a CursorItemIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields individual items from it.
7
+ #
8
+ # @param initial_cursor [String] The initial cursor to use when iterating, if any.
9
+ # @param cursor_field [Symbol] The field in API responses to extract the next cursor from.
10
+ # @param item_field [Symbol] The field in API responses to extract the items to iterate over.
11
+ # @param block [Proc] A block which is responsible for receiving a cursor to use and returning the given page from the API.
12
+ # @return [Coss::Internal::CursorItemIterator]
13
+ def initialize(initial_cursor:, cursor_field:, item_field:, &)
14
+ super()
15
+ @item_field = item_field
16
+ @page_iterator = CursorPageIterator.new(initial_cursor:, cursor_field:, &)
17
+ @page = nil
18
+ end
19
+
20
+ # Returns the CursorPageIterator mediating access to the underlying API.
21
+ #
22
+ # @return [Coss::Internal::CursorPageIterator]
23
+ def pages
24
+ @page_iterator
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Internal
5
+ class CursorPageIterator
6
+ include Enumerable
7
+
8
+ # The raw HTTP response from the most recent page response.
9
+ # @return [Net::HTTPResponse, nil]
10
+ attr_reader :http_response
11
+
12
+ # Instantiates a CursorPageIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields pages of items.
13
+ #
14
+ # @param initial_cursor [String] The initial cursor to use when iterating, if any.
15
+ # @param cursor_field [Symbol] The name of the field in API responses to extract the next cursor from.
16
+ # @param block [Proc] A block which is responsible for receiving a cursor to use and returning the given page from the API.
17
+ # The block should return a two-element array: [parsed_page, raw_http_response].
18
+ # @return [Coss::Internal::CursorPageIterator]
19
+ def initialize(initial_cursor:, cursor_field:, &block)
20
+ @need_initial_load = initial_cursor.nil?
21
+ @cursor = initial_cursor
22
+ @cursor_field = cursor_field
23
+ @get_next_page = block
24
+ @http_response = nil
25
+ end
26
+
27
+ # Iterates over each page returned by the API.
28
+ #
29
+ # @param block [Proc] The block which each retrieved page is yielded to.
30
+ # @return [NilClass]
31
+ def each(&block)
32
+ while (page = next_page)
33
+ block.call(page)
34
+ end
35
+ end
36
+
37
+ # Whether another page will be available from the API.
38
+ #
39
+ # @return [Boolean]
40
+ def next?
41
+ @need_initial_load || !@cursor.nil?
42
+ end
43
+
44
+ # Retrieves the next page from the API.
45
+ #
46
+ # @return [Object, nil]
47
+ def next_page
48
+ return if !@need_initial_load && @cursor.nil?
49
+
50
+ @need_initial_load = false
51
+ result = @get_next_page.call(@cursor)
52
+ if result.is_a?(Array)
53
+ fetched_page, raw_response = result
54
+ @http_response = raw_response
55
+ else
56
+ fetched_page = result
57
+ end
58
+ @cursor = fetched_page.send(@cursor_field)
59
+ fetched_page
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Internal
5
+ class ItemIterator
6
+ include Enumerable
7
+
8
+ # The raw HTTP response from the most recent page response.
9
+ # @return [Net::HTTPResponse, nil]
10
+ def http_response
11
+ @page_iterator&.http_response
12
+ end
13
+
14
+ # Iterates over each item returned by the API.
15
+ #
16
+ # @param block [Proc] The block which each retrieved item is yielded to.
17
+ # @return [NilClass]
18
+ def each(&block)
19
+ while (item = next_element)
20
+ block.call(item)
21
+ end
22
+ end
23
+
24
+ # Whether another item will be available from the API.
25
+ #
26
+ # @return [Boolean]
27
+ def next?
28
+ load_next_page if @page.nil?
29
+ return false if @page.nil?
30
+
31
+ return true if any_items_in_cached_page?
32
+
33
+ load_next_page
34
+ any_items_in_cached_page?
35
+ end
36
+
37
+ # Retrieves the next item from the API.
38
+ def next_element
39
+ item = next_item_from_cached_page
40
+ return item if item
41
+
42
+ load_next_page
43
+ next_item_from_cached_page
44
+ end
45
+
46
+ private
47
+
48
+ def next_item_from_cached_page
49
+ return unless @page
50
+
51
+ @page.send(@item_field).shift
52
+ end
53
+
54
+ def any_items_in_cached_page?
55
+ return false unless @page
56
+
57
+ !@page.send(@item_field).empty?
58
+ end
59
+
60
+ def load_next_page
61
+ @page = @page_iterator.next_page
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Coss
4
+ module Internal
5
+ class OffsetItemIterator < ItemIterator
6
+ # Instantiates an OffsetItemIterator, an Enumerable class which wraps calls to an offset-based paginated API and yields the individual items from it.
7
+ #
8
+ # @param initial_page [Integer] The initial page or offset to start from when iterating.
9
+ # @param item_field [Symbol] The name of the field in API responses to extract the items to iterate over.
10
+ # @param has_next_field [Symbol] The name of the field in API responses containing a boolean of whether another page exists.
11
+ # @param step [Boolean] If true, treats the page number as a true offset (i.e. increments the page number by the number of items returned from each call rather than just 1)
12
+ # @param block [Proc] A block which is responsible for receiving a page number to use and returning the given page from the API.
13
+ #
14
+ # @return [Coss::Internal::OffsetItemIterator]
15
+ def initialize(initial_page:, item_field:, has_next_field:, step:, &)
16
+ super()
17
+ @item_field = item_field
18
+ @page_iterator = OffsetPageIterator.new(initial_page:, item_field:, has_next_field:, step:, &)
19
+ @page = nil
20
+ end
21
+
22
+ # Returns the OffsetPageIterator that is mediating access to the underlying API.
23
+ #
24
+ # @return [Coss::Internal::OffsetPageIterator]
25
+ def pages
26
+ @page_iterator
27
+ end
28
+ end
29
+ end
30
+ end