pangea-cloudflare 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 (445) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.rspec_status +504 -0
  4. data/Gemfile +5 -0
  5. data/Gemfile.lock +88 -0
  6. data/LICENSE +201 -0
  7. data/Rakefile +8 -0
  8. data/flake.lock +835 -0
  9. data/flake.nix +60 -0
  10. data/gemset.nix +272 -0
  11. data/lib/pangea/resources/cloudflare.rb +213 -0
  12. data/lib/pangea/resources/cloudflare_access_rule/resource.rb +71 -0
  13. data/lib/pangea/resources/cloudflare_access_rule/types.rb +93 -0
  14. data/lib/pangea/resources/cloudflare_account/resource.rb +28 -0
  15. data/lib/pangea/resources/cloudflare_account/types.rb +12 -0
  16. data/lib/pangea/resources/cloudflare_account_dns_settings/resource.rb +27 -0
  17. data/lib/pangea/resources/cloudflare_account_dns_settings/types.rb +11 -0
  18. data/lib/pangea/resources/cloudflare_account_dns_settings_internal_view/resource.rb +27 -0
  19. data/lib/pangea/resources/cloudflare_account_dns_settings_internal_view/types.rb +11 -0
  20. data/lib/pangea/resources/cloudflare_account_member/resource.rb +29 -0
  21. data/lib/pangea/resources/cloudflare_account_member/types.rb +13 -0
  22. data/lib/pangea/resources/cloudflare_account_subscription/resource.rb +27 -0
  23. data/lib/pangea/resources/cloudflare_account_subscription/types.rb +11 -0
  24. data/lib/pangea/resources/cloudflare_account_token/resource.rb +27 -0
  25. data/lib/pangea/resources/cloudflare_account_token/types.rb +11 -0
  26. data/lib/pangea/resources/cloudflare_address_map/resource.rb +26 -0
  27. data/lib/pangea/resources/cloudflare_address_map/types.rb +10 -0
  28. data/lib/pangea/resources/cloudflare_api_shield/resource.rb +27 -0
  29. data/lib/pangea/resources/cloudflare_api_shield/types.rb +11 -0
  30. data/lib/pangea/resources/cloudflare_api_shield_discovery_operation/resource.rb +27 -0
  31. data/lib/pangea/resources/cloudflare_api_shield_discovery_operation/types.rb +11 -0
  32. data/lib/pangea/resources/cloudflare_api_shield_operation/resource.rb +30 -0
  33. data/lib/pangea/resources/cloudflare_api_shield_operation/types.rb +13 -0
  34. data/lib/pangea/resources/cloudflare_api_shield_operation_schema_validation_settings/resource.rb +27 -0
  35. data/lib/pangea/resources/cloudflare_api_shield_operation_schema_validation_settings/types.rb +11 -0
  36. data/lib/pangea/resources/cloudflare_api_shield_schema/resource.rb +30 -0
  37. data/lib/pangea/resources/cloudflare_api_shield_schema/types.rb +14 -0
  38. data/lib/pangea/resources/cloudflare_api_shield_schema_validation_settings/resource.rb +27 -0
  39. data/lib/pangea/resources/cloudflare_api_shield_schema_validation_settings/types.rb +11 -0
  40. data/lib/pangea/resources/cloudflare_api_token/resource.rb +33 -0
  41. data/lib/pangea/resources/cloudflare_api_token/types.rb +14 -0
  42. data/lib/pangea/resources/cloudflare_argo/resource.rb +91 -0
  43. data/lib/pangea/resources/cloudflare_argo/types.rb +92 -0
  44. data/lib/pangea/resources/cloudflare_authenticated_origin_pulls/resource.rb +29 -0
  45. data/lib/pangea/resources/cloudflare_authenticated_origin_pulls/types.rb +13 -0
  46. data/lib/pangea/resources/cloudflare_authenticated_origin_pulls_certificate/resource.rb +33 -0
  47. data/lib/pangea/resources/cloudflare_authenticated_origin_pulls_certificate/types.rb +13 -0
  48. data/lib/pangea/resources/cloudflare_authenticated_origin_pulls_settings/resource.rb +26 -0
  49. data/lib/pangea/resources/cloudflare_authenticated_origin_pulls_settings/types.rb +10 -0
  50. data/lib/pangea/resources/cloudflare_bot_management/resource.rb +31 -0
  51. data/lib/pangea/resources/cloudflare_bot_management/types.rb +15 -0
  52. data/lib/pangea/resources/cloudflare_byo_ip_prefix/resource.rb +27 -0
  53. data/lib/pangea/resources/cloudflare_byo_ip_prefix/types.rb +11 -0
  54. data/lib/pangea/resources/cloudflare_calls_sfu_app/resource.rb +27 -0
  55. data/lib/pangea/resources/cloudflare_calls_sfu_app/types.rb +11 -0
  56. data/lib/pangea/resources/cloudflare_calls_turn_app/resource.rb +27 -0
  57. data/lib/pangea/resources/cloudflare_calls_turn_app/types.rb +11 -0
  58. data/lib/pangea/resources/cloudflare_certificate_pack/resource.rb +26 -0
  59. data/lib/pangea/resources/cloudflare_certificate_pack/types.rb +10 -0
  60. data/lib/pangea/resources/cloudflare_cloud_connector_rules/resource.rb +27 -0
  61. data/lib/pangea/resources/cloudflare_cloud_connector_rules/types.rb +11 -0
  62. data/lib/pangea/resources/cloudflare_cloudforce_one_request/resource.rb +27 -0
  63. data/lib/pangea/resources/cloudflare_cloudforce_one_request/types.rb +11 -0
  64. data/lib/pangea/resources/cloudflare_cloudforce_one_request_asset/resource.rb +27 -0
  65. data/lib/pangea/resources/cloudflare_cloudforce_one_request_asset/types.rb +11 -0
  66. data/lib/pangea/resources/cloudflare_cloudforce_one_request_message/resource.rb +27 -0
  67. data/lib/pangea/resources/cloudflare_cloudforce_one_request_message/types.rb +11 -0
  68. data/lib/pangea/resources/cloudflare_cloudforce_one_request_priority/resource.rb +27 -0
  69. data/lib/pangea/resources/cloudflare_cloudforce_one_request_priority/types.rb +11 -0
  70. data/lib/pangea/resources/cloudflare_content_scanning/resource.rb +27 -0
  71. data/lib/pangea/resources/cloudflare_content_scanning/types.rb +11 -0
  72. data/lib/pangea/resources/cloudflare_content_scanning_expression/resource.rb +27 -0
  73. data/lib/pangea/resources/cloudflare_content_scanning_expression/types.rb +11 -0
  74. data/lib/pangea/resources/cloudflare_custom_hostname/resource.rb +158 -0
  75. data/lib/pangea/resources/cloudflare_custom_hostname/types/ssl_types.rb +145 -0
  76. data/lib/pangea/resources/cloudflare_custom_hostname/types.rb +107 -0
  77. data/lib/pangea/resources/cloudflare_custom_hostname_fallback_origin/resource.rb +27 -0
  78. data/lib/pangea/resources/cloudflare_custom_hostname_fallback_origin/types.rb +11 -0
  79. data/lib/pangea/resources/cloudflare_custom_pages/resource.rb +27 -0
  80. data/lib/pangea/resources/cloudflare_custom_pages/types.rb +11 -0
  81. data/lib/pangea/resources/cloudflare_custom_ssl/resource.rb +36 -0
  82. data/lib/pangea/resources/cloudflare_custom_ssl/types.rb +16 -0
  83. data/lib/pangea/resources/cloudflare_d1_database/resource.rb +92 -0
  84. data/lib/pangea/resources/cloudflare_d1_database/types.rb +110 -0
  85. data/lib/pangea/resources/cloudflare_dns_firewall/resource.rb +27 -0
  86. data/lib/pangea/resources/cloudflare_dns_firewall/types.rb +11 -0
  87. data/lib/pangea/resources/cloudflare_dns_zone_transfers_acl/resource.rb +27 -0
  88. data/lib/pangea/resources/cloudflare_dns_zone_transfers_acl/types.rb +11 -0
  89. data/lib/pangea/resources/cloudflare_dns_zone_transfers_incoming/resource.rb +27 -0
  90. data/lib/pangea/resources/cloudflare_dns_zone_transfers_incoming/types.rb +11 -0
  91. data/lib/pangea/resources/cloudflare_dns_zone_transfers_outgoing/resource.rb +26 -0
  92. data/lib/pangea/resources/cloudflare_dns_zone_transfers_outgoing/types.rb +10 -0
  93. data/lib/pangea/resources/cloudflare_dns_zone_transfers_peer/resource.rb +26 -0
  94. data/lib/pangea/resources/cloudflare_dns_zone_transfers_peer/types.rb +10 -0
  95. data/lib/pangea/resources/cloudflare_dns_zone_transfers_tsig/resource.rb +26 -0
  96. data/lib/pangea/resources/cloudflare_dns_zone_transfers_tsig/types.rb +10 -0
  97. data/lib/pangea/resources/cloudflare_email_routing_address/resource.rb +26 -0
  98. data/lib/pangea/resources/cloudflare_email_routing_address/types.rb +10 -0
  99. data/lib/pangea/resources/cloudflare_email_routing_catch_all/resource.rb +26 -0
  100. data/lib/pangea/resources/cloudflare_email_routing_catch_all/types.rb +10 -0
  101. data/lib/pangea/resources/cloudflare_email_routing_dns/resource.rb +27 -0
  102. data/lib/pangea/resources/cloudflare_email_routing_dns/types.rb +11 -0
  103. data/lib/pangea/resources/cloudflare_email_routing_rule/resource.rb +26 -0
  104. data/lib/pangea/resources/cloudflare_email_routing_rule/types.rb +10 -0
  105. data/lib/pangea/resources/cloudflare_email_routing_settings/resource.rb +26 -0
  106. data/lib/pangea/resources/cloudflare_email_routing_settings/types.rb +10 -0
  107. data/lib/pangea/resources/cloudflare_email_security_block_sender/resource.rb +27 -0
  108. data/lib/pangea/resources/cloudflare_email_security_block_sender/types.rb +11 -0
  109. data/lib/pangea/resources/cloudflare_email_security_impersonation_registry/resource.rb +27 -0
  110. data/lib/pangea/resources/cloudflare_email_security_impersonation_registry/types.rb +11 -0
  111. data/lib/pangea/resources/cloudflare_email_security_trusted_domains/resource.rb +27 -0
  112. data/lib/pangea/resources/cloudflare_email_security_trusted_domains/types.rb +11 -0
  113. data/lib/pangea/resources/cloudflare_filter/resource.rb +64 -0
  114. data/lib/pangea/resources/cloudflare_filter/types.rb +54 -0
  115. data/lib/pangea/resources/cloudflare_firewall_rule/resource.rb +70 -0
  116. data/lib/pangea/resources/cloudflare_firewall_rule/types.rb +64 -0
  117. data/lib/pangea/resources/cloudflare_healthcheck/resource.rb +139 -0
  118. data/lib/pangea/resources/cloudflare_healthcheck/types.rb +192 -0
  119. data/lib/pangea/resources/cloudflare_hostname_tls_setting/resource.rb +26 -0
  120. data/lib/pangea/resources/cloudflare_hostname_tls_setting/types.rb +10 -0
  121. data/lib/pangea/resources/cloudflare_hyperdrive_config/resource.rb +176 -0
  122. data/lib/pangea/resources/cloudflare_hyperdrive_config/types/attributes.rb +125 -0
  123. data/lib/pangea/resources/cloudflare_hyperdrive_config/types/caching.rb +52 -0
  124. data/lib/pangea/resources/cloudflare_hyperdrive_config/types/enums.rb +37 -0
  125. data/lib/pangea/resources/cloudflare_hyperdrive_config/types/mtls.rb +52 -0
  126. data/lib/pangea/resources/cloudflare_hyperdrive_config/types/origin.rb +89 -0
  127. data/lib/pangea/resources/cloudflare_hyperdrive_config/types.rb +23 -0
  128. data/lib/pangea/resources/cloudflare_image/resource.rb +27 -0
  129. data/lib/pangea/resources/cloudflare_image/types.rb +11 -0
  130. data/lib/pangea/resources/cloudflare_image_variant/resource.rb +26 -0
  131. data/lib/pangea/resources/cloudflare_image_variant/types.rb +10 -0
  132. data/lib/pangea/resources/cloudflare_keyless_certificate/resource.rb +26 -0
  133. data/lib/pangea/resources/cloudflare_keyless_certificate/types.rb +10 -0
  134. data/lib/pangea/resources/cloudflare_leaked_credential_check/resource.rb +27 -0
  135. data/lib/pangea/resources/cloudflare_leaked_credential_check/types.rb +11 -0
  136. data/lib/pangea/resources/cloudflare_leaked_credential_check_rule/resource.rb +27 -0
  137. data/lib/pangea/resources/cloudflare_leaked_credential_check_rule/types.rb +11 -0
  138. data/lib/pangea/resources/cloudflare_list/resource.rb +57 -0
  139. data/lib/pangea/resources/cloudflare_list/types.rb +49 -0
  140. data/lib/pangea/resources/cloudflare_list_item/resource.rb +130 -0
  141. data/lib/pangea/resources/cloudflare_list_item/types.rb +183 -0
  142. data/lib/pangea/resources/cloudflare_load_balancer/resource.rb +97 -0
  143. data/lib/pangea/resources/cloudflare_load_balancer/types.rb +75 -0
  144. data/lib/pangea/resources/cloudflare_load_balancer_monitor/resource.rb +78 -0
  145. data/lib/pangea/resources/cloudflare_load_balancer_monitor/types.rb +62 -0
  146. data/lib/pangea/resources/cloudflare_load_balancer_pool/resource.rb +78 -0
  147. data/lib/pangea/resources/cloudflare_load_balancer_pool/types.rb +81 -0
  148. data/lib/pangea/resources/cloudflare_logpull_retention/resource.rb +27 -0
  149. data/lib/pangea/resources/cloudflare_logpull_retention/types.rb +11 -0
  150. data/lib/pangea/resources/cloudflare_logpush_job/resource.rb +40 -0
  151. data/lib/pangea/resources/cloudflare_logpush_job/types.rb +24 -0
  152. data/lib/pangea/resources/cloudflare_logpush_ownership_challenge/resource.rb +27 -0
  153. data/lib/pangea/resources/cloudflare_logpush_ownership_challenge/types.rb +11 -0
  154. data/lib/pangea/resources/cloudflare_magic_network_monitoring_configuration/resource.rb +27 -0
  155. data/lib/pangea/resources/cloudflare_magic_network_monitoring_configuration/types.rb +11 -0
  156. data/lib/pangea/resources/cloudflare_magic_network_monitoring_rule/resource.rb +27 -0
  157. data/lib/pangea/resources/cloudflare_magic_network_monitoring_rule/types.rb +11 -0
  158. data/lib/pangea/resources/cloudflare_magic_transit_connector/resource.rb +27 -0
  159. data/lib/pangea/resources/cloudflare_magic_transit_connector/types.rb +11 -0
  160. data/lib/pangea/resources/cloudflare_magic_transit_site/resource.rb +27 -0
  161. data/lib/pangea/resources/cloudflare_magic_transit_site/types.rb +11 -0
  162. data/lib/pangea/resources/cloudflare_magic_transit_site_acl/resource.rb +27 -0
  163. data/lib/pangea/resources/cloudflare_magic_transit_site_acl/types.rb +11 -0
  164. data/lib/pangea/resources/cloudflare_magic_transit_site_lan/resource.rb +27 -0
  165. data/lib/pangea/resources/cloudflare_magic_transit_site_lan/types.rb +11 -0
  166. data/lib/pangea/resources/cloudflare_magic_transit_site_wan/resource.rb +27 -0
  167. data/lib/pangea/resources/cloudflare_magic_transit_site_wan/types.rb +11 -0
  168. data/lib/pangea/resources/cloudflare_magic_wan_gre_tunnel/resource.rb +27 -0
  169. data/lib/pangea/resources/cloudflare_magic_wan_gre_tunnel/types.rb +11 -0
  170. data/lib/pangea/resources/cloudflare_magic_wan_ipsec_tunnel/resource.rb +27 -0
  171. data/lib/pangea/resources/cloudflare_magic_wan_ipsec_tunnel/types.rb +11 -0
  172. data/lib/pangea/resources/cloudflare_magic_wan_static_route/resource.rb +27 -0
  173. data/lib/pangea/resources/cloudflare_magic_wan_static_route/types.rb +11 -0
  174. data/lib/pangea/resources/cloudflare_managed_transforms/resource.rb +36 -0
  175. data/lib/pangea/resources/cloudflare_managed_transforms/types.rb +12 -0
  176. data/lib/pangea/resources/cloudflare_mtls_certificate/resource.rb +34 -0
  177. data/lib/pangea/resources/cloudflare_mtls_certificate/types.rb +14 -0
  178. data/lib/pangea/resources/cloudflare_notification_policy/resource.rb +34 -0
  179. data/lib/pangea/resources/cloudflare_notification_policy/types.rb +18 -0
  180. data/lib/pangea/resources/cloudflare_notification_policy_webhooks/resource.rb +27 -0
  181. data/lib/pangea/resources/cloudflare_notification_policy_webhooks/types.rb +11 -0
  182. data/lib/pangea/resources/cloudflare_observatory_scheduled_test/resource.rb +27 -0
  183. data/lib/pangea/resources/cloudflare_observatory_scheduled_test/types.rb +11 -0
  184. data/lib/pangea/resources/cloudflare_organization/resource.rb +27 -0
  185. data/lib/pangea/resources/cloudflare_organization/types.rb +11 -0
  186. data/lib/pangea/resources/cloudflare_organization_profile/resource.rb +27 -0
  187. data/lib/pangea/resources/cloudflare_organization_profile/types.rb +11 -0
  188. data/lib/pangea/resources/cloudflare_origin_ca_certificate/resource.rb +97 -0
  189. data/lib/pangea/resources/cloudflare_origin_ca_certificate/types.rb +125 -0
  190. data/lib/pangea/resources/cloudflare_page_rule/resource.rb +78 -0
  191. data/lib/pangea/resources/cloudflare_page_rule/types.rb +71 -0
  192. data/lib/pangea/resources/cloudflare_page_shield_policy/resource.rb +27 -0
  193. data/lib/pangea/resources/cloudflare_page_shield_policy/types.rb +11 -0
  194. data/lib/pangea/resources/cloudflare_pages_domain/resource.rb +28 -0
  195. data/lib/pangea/resources/cloudflare_pages_domain/types.rb +12 -0
  196. data/lib/pangea/resources/cloudflare_pages_project/resource/deployment_config.rb +80 -0
  197. data/lib/pangea/resources/cloudflare_pages_project/resource/main.rb +75 -0
  198. data/lib/pangea/resources/cloudflare_pages_project/resource.rb +19 -0
  199. data/lib/pangea/resources/cloudflare_pages_project/types/attributes.rb +51 -0
  200. data/lib/pangea/resources/cloudflare_pages_project/types/bindings.rb +38 -0
  201. data/lib/pangea/resources/cloudflare_pages_project/types/build_config.rb +55 -0
  202. data/lib/pangea/resources/cloudflare_pages_project/types/deployment_config.rb +83 -0
  203. data/lib/pangea/resources/cloudflare_pages_project/types.rb +27 -0
  204. data/lib/pangea/resources/cloudflare_queue/resource.rb +108 -0
  205. data/lib/pangea/resources/cloudflare_queue/types.rb +132 -0
  206. data/lib/pangea/resources/cloudflare_queue_consumer/resource.rb +31 -0
  207. data/lib/pangea/resources/cloudflare_queue_consumer/types.rb +15 -0
  208. data/lib/pangea/resources/cloudflare_r2_bucket/resource.rb +91 -0
  209. data/lib/pangea/resources/cloudflare_r2_bucket/types.rb +101 -0
  210. data/lib/pangea/resources/cloudflare_r2_bucket_cors/resource.rb +130 -0
  211. data/lib/pangea/resources/cloudflare_r2_bucket_cors/types/attributes.rb +105 -0
  212. data/lib/pangea/resources/cloudflare_r2_bucket_cors/types/cors_allowed.rb +59 -0
  213. data/lib/pangea/resources/cloudflare_r2_bucket_cors/types/cors_method.rb +34 -0
  214. data/lib/pangea/resources/cloudflare_r2_bucket_cors/types/cors_rule.rb +74 -0
  215. data/lib/pangea/resources/cloudflare_r2_bucket_cors/types.rb +22 -0
  216. data/lib/pangea/resources/cloudflare_r2_bucket_event_notification/resource.rb +31 -0
  217. data/lib/pangea/resources/cloudflare_r2_bucket_event_notification/types.rb +15 -0
  218. data/lib/pangea/resources/cloudflare_r2_bucket_lifecycle/resource.rb +31 -0
  219. data/lib/pangea/resources/cloudflare_r2_bucket_lifecycle/types.rb +26 -0
  220. data/lib/pangea/resources/cloudflare_r2_bucket_lock/resource.rb +29 -0
  221. data/lib/pangea/resources/cloudflare_r2_bucket_lock/types.rb +13 -0
  222. data/lib/pangea/resources/cloudflare_r2_bucket_sippy/resource.rb +26 -0
  223. data/lib/pangea/resources/cloudflare_r2_bucket_sippy/types.rb +10 -0
  224. data/lib/pangea/resources/cloudflare_r2_custom_domain/resource.rb +28 -0
  225. data/lib/pangea/resources/cloudflare_r2_custom_domain/types.rb +12 -0
  226. data/lib/pangea/resources/cloudflare_r2_managed_domain/resource.rb +26 -0
  227. data/lib/pangea/resources/cloudflare_r2_managed_domain/types.rb +10 -0
  228. data/lib/pangea/resources/cloudflare_rate_limit/resource.rb +129 -0
  229. data/lib/pangea/resources/cloudflare_rate_limit/types.rb +143 -0
  230. data/lib/pangea/resources/cloudflare_record/resource.rb +91 -0
  231. data/lib/pangea/resources/cloudflare_record/types.rb +114 -0
  232. data/lib/pangea/resources/cloudflare_regional_hostname/resource.rb +27 -0
  233. data/lib/pangea/resources/cloudflare_regional_hostname/types.rb +11 -0
  234. data/lib/pangea/resources/cloudflare_regional_tiered_cache/resource.rb +82 -0
  235. data/lib/pangea/resources/cloudflare_regional_tiered_cache/types.rb +73 -0
  236. data/lib/pangea/resources/cloudflare_registrar_domain/resource.rb +27 -0
  237. data/lib/pangea/resources/cloudflare_registrar_domain/types.rb +11 -0
  238. data/lib/pangea/resources/cloudflare_ruleset/resource.rb +113 -0
  239. data/lib/pangea/resources/cloudflare_ruleset/types/ruleset_rule.rb +84 -0
  240. data/lib/pangea/resources/cloudflare_ruleset/types.rb +155 -0
  241. data/lib/pangea/resources/cloudflare_schema_validation_operation_settings/resource.rb +27 -0
  242. data/lib/pangea/resources/cloudflare_schema_validation_operation_settings/types.rb +11 -0
  243. data/lib/pangea/resources/cloudflare_schema_validation_schemas/resource.rb +27 -0
  244. data/lib/pangea/resources/cloudflare_schema_validation_schemas/types.rb +11 -0
  245. data/lib/pangea/resources/cloudflare_schema_validation_settings/resource.rb +27 -0
  246. data/lib/pangea/resources/cloudflare_schema_validation_settings/types.rb +11 -0
  247. data/lib/pangea/resources/cloudflare_snippet/resource.rb +27 -0
  248. data/lib/pangea/resources/cloudflare_snippet/types.rb +11 -0
  249. data/lib/pangea/resources/cloudflare_snippet_rules/resource.rb +27 -0
  250. data/lib/pangea/resources/cloudflare_snippet_rules/types.rb +11 -0
  251. data/lib/pangea/resources/cloudflare_spectrum_application/resource.rb +122 -0
  252. data/lib/pangea/resources/cloudflare_spectrum_application/types.rb +147 -0
  253. data/lib/pangea/resources/cloudflare_static_route/resource.rb +119 -0
  254. data/lib/pangea/resources/cloudflare_static_route/types.rb +131 -0
  255. data/lib/pangea/resources/cloudflare_stream/resource.rb +35 -0
  256. data/lib/pangea/resources/cloudflare_stream/types.rb +15 -0
  257. data/lib/pangea/resources/cloudflare_stream_audio_track/resource.rb +27 -0
  258. data/lib/pangea/resources/cloudflare_stream_audio_track/types.rb +11 -0
  259. data/lib/pangea/resources/cloudflare_stream_caption_language/resource.rb +27 -0
  260. data/lib/pangea/resources/cloudflare_stream_caption_language/types.rb +11 -0
  261. data/lib/pangea/resources/cloudflare_stream_download/resource.rb +27 -0
  262. data/lib/pangea/resources/cloudflare_stream_download/types.rb +11 -0
  263. data/lib/pangea/resources/cloudflare_stream_key/resource.rb +27 -0
  264. data/lib/pangea/resources/cloudflare_stream_key/types.rb +11 -0
  265. data/lib/pangea/resources/cloudflare_stream_live_input/resource.rb +27 -0
  266. data/lib/pangea/resources/cloudflare_stream_live_input/types.rb +11 -0
  267. data/lib/pangea/resources/cloudflare_stream_watermark/resource.rb +27 -0
  268. data/lib/pangea/resources/cloudflare_stream_watermark/types.rb +11 -0
  269. data/lib/pangea/resources/cloudflare_stream_webhook/resource.rb +27 -0
  270. data/lib/pangea/resources/cloudflare_stream_webhook/types.rb +11 -0
  271. data/lib/pangea/resources/cloudflare_tiered_cache/resource.rb +83 -0
  272. data/lib/pangea/resources/cloudflare_tiered_cache/types.rb +74 -0
  273. data/lib/pangea/resources/cloudflare_total_tls/resource.rb +26 -0
  274. data/lib/pangea/resources/cloudflare_total_tls/types.rb +10 -0
  275. data/lib/pangea/resources/cloudflare_turnstile_widget/resource.rb +34 -0
  276. data/lib/pangea/resources/cloudflare_turnstile_widget/types.rb +15 -0
  277. data/lib/pangea/resources/cloudflare_url_normalization_settings/resource.rb +27 -0
  278. data/lib/pangea/resources/cloudflare_url_normalization_settings/types.rb +11 -0
  279. data/lib/pangea/resources/cloudflare_user/resource.rb +27 -0
  280. data/lib/pangea/resources/cloudflare_user/types.rb +11 -0
  281. data/lib/pangea/resources/cloudflare_user_agent_blocking_rule/resource.rb +27 -0
  282. data/lib/pangea/resources/cloudflare_user_agent_blocking_rule/types.rb +11 -0
  283. data/lib/pangea/resources/cloudflare_waiting_room/resource.rb +122 -0
  284. data/lib/pangea/resources/cloudflare_waiting_room/types.rb +171 -0
  285. data/lib/pangea/resources/cloudflare_waiting_room_event/resource.rb +118 -0
  286. data/lib/pangea/resources/cloudflare_waiting_room_event/types.rb +153 -0
  287. data/lib/pangea/resources/cloudflare_waiting_room_rules/resource.rb +40 -0
  288. data/lib/pangea/resources/cloudflare_waiting_room_rules/types.rb +32 -0
  289. data/lib/pangea/resources/cloudflare_waiting_room_settings/resource.rb +27 -0
  290. data/lib/pangea/resources/cloudflare_waiting_room_settings/types.rb +11 -0
  291. data/lib/pangea/resources/cloudflare_web3_hostname/resource.rb +27 -0
  292. data/lib/pangea/resources/cloudflare_web3_hostname/types.rb +11 -0
  293. data/lib/pangea/resources/cloudflare_web_analytics_rule/resource.rb +27 -0
  294. data/lib/pangea/resources/cloudflare_web_analytics_rule/types.rb +11 -0
  295. data/lib/pangea/resources/cloudflare_web_analytics_site/resource.rb +33 -0
  296. data/lib/pangea/resources/cloudflare_web_analytics_site/types.rb +13 -0
  297. data/lib/pangea/resources/cloudflare_worker/resource.rb +27 -0
  298. data/lib/pangea/resources/cloudflare_worker/types.rb +11 -0
  299. data/lib/pangea/resources/cloudflare_worker_route/resource.rb +62 -0
  300. data/lib/pangea/resources/cloudflare_worker_route/types.rb +50 -0
  301. data/lib/pangea/resources/cloudflare_worker_script/resource.rb +90 -0
  302. data/lib/pangea/resources/cloudflare_worker_script/types.rb +109 -0
  303. data/lib/pangea/resources/cloudflare_worker_version/resource.rb +27 -0
  304. data/lib/pangea/resources/cloudflare_worker_version/types.rb +11 -0
  305. data/lib/pangea/resources/cloudflare_workers_cron_trigger/resource.rb +94 -0
  306. data/lib/pangea/resources/cloudflare_workers_cron_trigger/types.rb +102 -0
  307. data/lib/pangea/resources/cloudflare_workers_custom_domain/resource.rb +93 -0
  308. data/lib/pangea/resources/cloudflare_workers_custom_domain/types.rb +93 -0
  309. data/lib/pangea/resources/cloudflare_workers_deployment/resource.rb +28 -0
  310. data/lib/pangea/resources/cloudflare_workers_deployment/types.rb +12 -0
  311. data/lib/pangea/resources/cloudflare_workers_for_platforms_dispatch_namespace/resource.rb +27 -0
  312. data/lib/pangea/resources/cloudflare_workers_for_platforms_dispatch_namespace/types.rb +11 -0
  313. data/lib/pangea/resources/cloudflare_workers_kv/resource.rb +98 -0
  314. data/lib/pangea/resources/cloudflare_workers_kv/types.rb +103 -0
  315. data/lib/pangea/resources/cloudflare_workers_kv_namespace/resource.rb +84 -0
  316. data/lib/pangea/resources/cloudflare_workers_kv_namespace/types.rb +74 -0
  317. data/lib/pangea/resources/cloudflare_workers_script_subdomain/resource.rb +27 -0
  318. data/lib/pangea/resources/cloudflare_workers_script_subdomain/types.rb +11 -0
  319. data/lib/pangea/resources/cloudflare_workflow/resource.rb +27 -0
  320. data/lib/pangea/resources/cloudflare_workflow/types.rb +11 -0
  321. data/lib/pangea/resources/cloudflare_zero_trust_access_application/block_builders.rb +116 -0
  322. data/lib/pangea/resources/cloudflare_zero_trust_access_application/resource.rb +161 -0
  323. data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/attributes.rb +102 -0
  324. data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/cors_headers.rb +37 -0
  325. data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/destination.rb +37 -0
  326. data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/enums.rb +31 -0
  327. data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/footer_link.rb +31 -0
  328. data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/landing_page_design.rb +34 -0
  329. data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/saas_app.rb +44 -0
  330. data/lib/pangea/resources/cloudflare_zero_trust_access_application/types/scim_config.rb +35 -0
  331. data/lib/pangea/resources/cloudflare_zero_trust_access_application/types.rb +26 -0
  332. data/lib/pangea/resources/cloudflare_zero_trust_access_custom_page/resource.rb +26 -0
  333. data/lib/pangea/resources/cloudflare_zero_trust_access_custom_page/types.rb +10 -0
  334. data/lib/pangea/resources/cloudflare_zero_trust_access_group/resource.rb +31 -0
  335. data/lib/pangea/resources/cloudflare_zero_trust_access_group/types.rb +15 -0
  336. data/lib/pangea/resources/cloudflare_zero_trust_access_identity_provider/resource.rb +31 -0
  337. data/lib/pangea/resources/cloudflare_zero_trust_access_identity_provider/types.rb +15 -0
  338. data/lib/pangea/resources/cloudflare_zero_trust_access_infrastructure_target/resource.rb +26 -0
  339. data/lib/pangea/resources/cloudflare_zero_trust_access_infrastructure_target/types.rb +10 -0
  340. data/lib/pangea/resources/cloudflare_zero_trust_access_key_configuration/resource.rb +26 -0
  341. data/lib/pangea/resources/cloudflare_zero_trust_access_key_configuration/types.rb +10 -0
  342. data/lib/pangea/resources/cloudflare_zero_trust_access_mtls_certificate/resource.rb +26 -0
  343. data/lib/pangea/resources/cloudflare_zero_trust_access_mtls_certificate/types.rb +10 -0
  344. data/lib/pangea/resources/cloudflare_zero_trust_access_mtls_hostname_settings/resource.rb +26 -0
  345. data/lib/pangea/resources/cloudflare_zero_trust_access_mtls_hostname_settings/types.rb +10 -0
  346. data/lib/pangea/resources/cloudflare_zero_trust_access_policy/resource.rb +39 -0
  347. data/lib/pangea/resources/cloudflare_zero_trust_access_policy/types.rb +23 -0
  348. data/lib/pangea/resources/cloudflare_zero_trust_access_service_token/resource.rb +26 -0
  349. data/lib/pangea/resources/cloudflare_zero_trust_access_service_token/types.rb +10 -0
  350. data/lib/pangea/resources/cloudflare_zero_trust_access_short_lived_certificate/resource.rb +26 -0
  351. data/lib/pangea/resources/cloudflare_zero_trust_access_short_lived_certificate/types.rb +10 -0
  352. data/lib/pangea/resources/cloudflare_zero_trust_access_tag/resource.rb +26 -0
  353. data/lib/pangea/resources/cloudflare_zero_trust_access_tag/types.rb +10 -0
  354. data/lib/pangea/resources/cloudflare_zero_trust_device_custom_profile/resource.rb +26 -0
  355. data/lib/pangea/resources/cloudflare_zero_trust_device_custom_profile/types.rb +10 -0
  356. data/lib/pangea/resources/cloudflare_zero_trust_device_custom_profile_local_domain_fallback/resource.rb +26 -0
  357. data/lib/pangea/resources/cloudflare_zero_trust_device_custom_profile_local_domain_fallback/types.rb +10 -0
  358. data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile/resource.rb +26 -0
  359. data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile/types.rb +10 -0
  360. data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile_certificates/resource.rb +26 -0
  361. data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile_certificates/types.rb +10 -0
  362. data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile_local_domain_fallback/resource.rb +26 -0
  363. data/lib/pangea/resources/cloudflare_zero_trust_device_default_profile_local_domain_fallback/types.rb +10 -0
  364. data/lib/pangea/resources/cloudflare_zero_trust_device_managed_networks/resource.rb +26 -0
  365. data/lib/pangea/resources/cloudflare_zero_trust_device_managed_networks/types.rb +10 -0
  366. data/lib/pangea/resources/cloudflare_zero_trust_device_posture_integration/resource.rb +26 -0
  367. data/lib/pangea/resources/cloudflare_zero_trust_device_posture_integration/types.rb +10 -0
  368. data/lib/pangea/resources/cloudflare_zero_trust_device_posture_rule/resource.rb +26 -0
  369. data/lib/pangea/resources/cloudflare_zero_trust_device_posture_rule/types.rb +10 -0
  370. data/lib/pangea/resources/cloudflare_zero_trust_device_settings/resource.rb +26 -0
  371. data/lib/pangea/resources/cloudflare_zero_trust_device_settings/types.rb +10 -0
  372. data/lib/pangea/resources/cloudflare_zero_trust_dex_test/resource.rb +26 -0
  373. data/lib/pangea/resources/cloudflare_zero_trust_dex_test/types.rb +10 -0
  374. data/lib/pangea/resources/cloudflare_zero_trust_dlp_custom_entry/resource.rb +26 -0
  375. data/lib/pangea/resources/cloudflare_zero_trust_dlp_custom_entry/types.rb +10 -0
  376. data/lib/pangea/resources/cloudflare_zero_trust_dlp_custom_profile/resource.rb +26 -0
  377. data/lib/pangea/resources/cloudflare_zero_trust_dlp_custom_profile/types.rb +10 -0
  378. data/lib/pangea/resources/cloudflare_zero_trust_dlp_dataset/resource.rb +26 -0
  379. data/lib/pangea/resources/cloudflare_zero_trust_dlp_dataset/types.rb +10 -0
  380. data/lib/pangea/resources/cloudflare_zero_trust_dlp_entry/resource.rb +26 -0
  381. data/lib/pangea/resources/cloudflare_zero_trust_dlp_entry/types.rb +10 -0
  382. data/lib/pangea/resources/cloudflare_zero_trust_dlp_integration_entry/resource.rb +26 -0
  383. data/lib/pangea/resources/cloudflare_zero_trust_dlp_integration_entry/types.rb +10 -0
  384. data/lib/pangea/resources/cloudflare_zero_trust_dlp_predefined_entry/resource.rb +26 -0
  385. data/lib/pangea/resources/cloudflare_zero_trust_dlp_predefined_entry/types.rb +10 -0
  386. data/lib/pangea/resources/cloudflare_zero_trust_dlp_predefined_profile/resource.rb +26 -0
  387. data/lib/pangea/resources/cloudflare_zero_trust_dlp_predefined_profile/types.rb +10 -0
  388. data/lib/pangea/resources/cloudflare_zero_trust_dns_location/resource.rb +26 -0
  389. data/lib/pangea/resources/cloudflare_zero_trust_dns_location/types.rb +10 -0
  390. data/lib/pangea/resources/cloudflare_zero_trust_gateway_certificate/resource.rb +26 -0
  391. data/lib/pangea/resources/cloudflare_zero_trust_gateway_certificate/types.rb +10 -0
  392. data/lib/pangea/resources/cloudflare_zero_trust_gateway_logging/resource.rb +26 -0
  393. data/lib/pangea/resources/cloudflare_zero_trust_gateway_logging/types.rb +10 -0
  394. data/lib/pangea/resources/cloudflare_zero_trust_gateway_policy/resource.rb +34 -0
  395. data/lib/pangea/resources/cloudflare_zero_trust_gateway_policy/types.rb +18 -0
  396. data/lib/pangea/resources/cloudflare_zero_trust_gateway_proxy_endpoint/resource.rb +26 -0
  397. data/lib/pangea/resources/cloudflare_zero_trust_gateway_proxy_endpoint/types.rb +10 -0
  398. data/lib/pangea/resources/cloudflare_zero_trust_gateway_settings/resource.rb +26 -0
  399. data/lib/pangea/resources/cloudflare_zero_trust_gateway_settings/types.rb +10 -0
  400. data/lib/pangea/resources/cloudflare_zero_trust_list/resource.rb +26 -0
  401. data/lib/pangea/resources/cloudflare_zero_trust_list/types.rb +10 -0
  402. data/lib/pangea/resources/cloudflare_zero_trust_network_hostname_route/resource.rb +26 -0
  403. data/lib/pangea/resources/cloudflare_zero_trust_network_hostname_route/types.rb +10 -0
  404. data/lib/pangea/resources/cloudflare_zero_trust_organization/resource.rb +26 -0
  405. data/lib/pangea/resources/cloudflare_zero_trust_organization/types.rb +10 -0
  406. data/lib/pangea/resources/cloudflare_zero_trust_risk_behavior/resource.rb +26 -0
  407. data/lib/pangea/resources/cloudflare_zero_trust_risk_behavior/types.rb +10 -0
  408. data/lib/pangea/resources/cloudflare_zero_trust_risk_scoring_integration/resource.rb +26 -0
  409. data/lib/pangea/resources/cloudflare_zero_trust_risk_scoring_integration/types.rb +10 -0
  410. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared/resource.rb +33 -0
  411. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared/types.rb +13 -0
  412. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_config/resource.rb +28 -0
  413. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_config/types.rb +12 -0
  414. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_route/resource.rb +30 -0
  415. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_route/types.rb +14 -0
  416. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_virtual_network/resource.rb +26 -0
  417. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_cloudflared_virtual_network/types.rb +10 -0
  418. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_warp_connector/resource.rb +26 -0
  419. data/lib/pangea/resources/cloudflare_zero_trust_tunnel_warp_connector/types.rb +10 -0
  420. data/lib/pangea/resources/cloudflare_zone/resource.rb +71 -0
  421. data/lib/pangea/resources/cloudflare_zone/types.rb +62 -0
  422. data/lib/pangea/resources/cloudflare_zone_cache_reserve/resource.rb +27 -0
  423. data/lib/pangea/resources/cloudflare_zone_cache_reserve/types.rb +11 -0
  424. data/lib/pangea/resources/cloudflare_zone_cache_variants/resource.rb +27 -0
  425. data/lib/pangea/resources/cloudflare_zone_cache_variants/types.rb +11 -0
  426. data/lib/pangea/resources/cloudflare_zone_dns_settings/resource.rb +27 -0
  427. data/lib/pangea/resources/cloudflare_zone_dns_settings/types.rb +11 -0
  428. data/lib/pangea/resources/cloudflare_zone_dnssec/resource.rb +96 -0
  429. data/lib/pangea/resources/cloudflare_zone_dnssec/types.rb +81 -0
  430. data/lib/pangea/resources/cloudflare_zone_hold/resource.rb +26 -0
  431. data/lib/pangea/resources/cloudflare_zone_hold/types.rb +10 -0
  432. data/lib/pangea/resources/cloudflare_zone_lockdown/resource.rb +27 -0
  433. data/lib/pangea/resources/cloudflare_zone_lockdown/types.rb +11 -0
  434. data/lib/pangea/resources/cloudflare_zone_settings_override/resource.rb +80 -0
  435. data/lib/pangea/resources/cloudflare_zone_settings_override/types.rb +64 -0
  436. data/lib/pangea/resources/cloudflare_zone_subscription/resource.rb +26 -0
  437. data/lib/pangea/resources/cloudflare_zone_subscription/types.rb +10 -0
  438. data/lib/pangea/resources/types/cloudflare/core.rb +130 -0
  439. data/lib/pangea/resources/types/cloudflare/load_balancing.rb +104 -0
  440. data/lib/pangea/resources/types/cloudflare/security.rb +107 -0
  441. data/lib/pangea/resources/types/cloudflare/workers.rb +60 -0
  442. data/lib/pangea-cloudflare/version.rb +5 -0
  443. data/lib/pangea-cloudflare.rb +215 -0
  444. data/pangea-cloudflare.gemspec +33 -0
  445. metadata +586 -0
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_api_token/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareApiToken
9
+ def cloudflare_api_token(name, attributes = {})
10
+ attrs = Cloudflare::Types::ApiTokenAttributes.new(attributes)
11
+ resource(:cloudflare_api_token, name) do
12
+ name attrs.name
13
+ policy attrs.policy
14
+ condition attrs.condition if attrs.condition
15
+ expires_on attrs.expires_on if attrs.expires_on
16
+ not_before attrs.not_before if attrs.not_before
17
+ end
18
+ ResourceReference.new(
19
+ type: 'cloudflare_api_token',
20
+ name: name,
21
+ resource_attributes: attrs.to_h,
22
+ outputs: {
23
+ id: "${cloudflare_api_token.#{name}.id}",
24
+ value: "${cloudflare_api_token.#{name}.value}"
25
+ }
26
+ )
27
+ end
28
+ end
29
+ module Cloudflare
30
+ include CloudflareApiToken
31
+ end
32
+ end
33
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class ApiTokenAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :name, Dry::Types['strict.string']
9
+ attribute :policy, Dry::Types['strict.array']
10
+ attribute :condition, Dry::Types['strict.hash'].optional.default(nil)
11
+ attribute :expires_on, Dry::Types['strict.string'].optional.default(nil)
12
+ attribute :not_before, Dry::Types['strict.string'].optional.default(nil)
13
+ end
14
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+ # Copyright 2025 The Pangea Authors
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+
17
+ require 'pangea/resources/base'
18
+ require 'pangea/resources/reference'
19
+ require 'pangea/resources/cloudflare_argo/types'
20
+ require 'pangea/resource_registry'
21
+
22
+ module Pangea
23
+ module Resources
24
+ # Cloudflare Argo resource module that self-registers
25
+ module CloudflareArgo
26
+ # Configure Cloudflare Argo features for a zone
27
+ #
28
+ # Enables Argo Smart Routing (optimized traffic routing) and
29
+ # Argo Tiered Caching (improved cache efficiency).
30
+ #
31
+ # NOTE: tiered_caching is deprecated. Use cloudflare_tiered_cache resource instead.
32
+ #
33
+ # @param name [Symbol] The resource name
34
+ # @param attributes [Hash] Argo configuration attributes
35
+ # @option attributes [String] :zone_id Zone ID (required)
36
+ # @option attributes [String] :smart_routing Enable Smart Routing ("on" or "off")
37
+ # @option attributes [String] :tiered_caching Enable Tiered Caching ("on" or "off", deprecated)
38
+ #
39
+ # @return [ResourceReference] Reference object with outputs
40
+ #
41
+ # @example Enable Smart Routing only
42
+ # cloudflare_argo(:smart_routing, {
43
+ # zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
44
+ # smart_routing: "on"
45
+ # })
46
+ #
47
+ # @example Enable both features
48
+ # cloudflare_argo(:argo_all, {
49
+ # zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
50
+ # smart_routing: "on",
51
+ # tiered_caching: "on"
52
+ # })
53
+ #
54
+ # @example Disable all Argo features
55
+ # cloudflare_argo(:argo_disabled, {
56
+ # zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
57
+ # smart_routing: "off",
58
+ # tiered_caching: "off"
59
+ # })
60
+ def cloudflare_argo(name, attributes = {})
61
+ # Validate attributes using dry-struct
62
+ argo_attrs = Cloudflare::Types::ArgoAttributes.new(attributes)
63
+
64
+ # Generate terraform resource block via terraform-synthesizer
65
+ resource(:cloudflare_argo, name) do
66
+ zone_id argo_attrs.zone_id
67
+ smart_routing argo_attrs.smart_routing if argo_attrs.smart_routing
68
+ tiered_caching argo_attrs.tiered_caching if argo_attrs.tiered_caching
69
+ end
70
+
71
+ # Return resource reference with available outputs
72
+ ResourceReference.new(
73
+ type: 'cloudflare_argo',
74
+ name: name,
75
+ resource_attributes: argo_attrs.to_h,
76
+ outputs: {
77
+ id: "${cloudflare_argo.#{name}.id}"
78
+ }
79
+ )
80
+ end
81
+ end
82
+
83
+ # Maintain backward compatibility by extending Cloudflare module
84
+ module Cloudflare
85
+ include CloudflareArgo
86
+ end
87
+ end
88
+ end
89
+
90
+ # Auto-register this module when it's loaded
91
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+ # Copyright 2025 The Pangea Authors
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+
17
+ require 'dry-struct'
18
+ require 'pangea/resources/types'
19
+
20
+ module Pangea
21
+ module Resources
22
+ module Cloudflare
23
+ module Types
24
+ # Argo feature toggle enum
25
+ CloudflareArgoToggle = Dry::Types['strict.string'].enum(
26
+ 'on',
27
+ 'off'
28
+ )
29
+
30
+ # Type-safe attributes for Cloudflare Argo
31
+ #
32
+ # Enables Argo Smart Routing and Tiered Caching for a zone.
33
+ # Smart Routing optimizes traffic routing, Tiered Caching improves cache efficiency.
34
+ #
35
+ # NOTE: tiered_caching is deprecated in favor of cloudflare_tiered_cache resource.
36
+ #
37
+ # @example Enable Smart Routing
38
+ # ArgoAttributes.new(
39
+ # zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
40
+ # smart_routing: "on"
41
+ # )
42
+ #
43
+ # @example Enable both features
44
+ # ArgoAttributes.new(
45
+ # zone_id: "023e105f4ecef8ad9ca31a8372d0c353",
46
+ # smart_routing: "on",
47
+ # tiered_caching: "on"
48
+ # )
49
+ class ArgoAttributes < Dry::Struct
50
+ transform_keys(&:to_sym)
51
+
52
+ # @!attribute zone_id
53
+ # @return [String] The zone ID
54
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
55
+
56
+ # @!attribute smart_routing
57
+ # @return [String, nil] Enable Argo Smart Routing ("on" or "off")
58
+ attribute :smart_routing, CloudflareArgoToggle.optional.default(nil)
59
+
60
+ # @!attribute tiered_caching
61
+ # @return [String, nil] Enable Argo Tiered Caching ("on" or "off")
62
+ # @deprecated Use cloudflare_tiered_cache resource instead
63
+ attribute :tiered_caching, CloudflareArgoToggle.optional.default(nil)
64
+
65
+ # Check if Smart Routing is enabled
66
+ # @return [Boolean] true if enabled
67
+ def smart_routing_enabled?
68
+ smart_routing == 'on'
69
+ end
70
+
71
+ # Check if Tiered Caching is enabled
72
+ # @return [Boolean] true if enabled
73
+ def tiered_caching_enabled?
74
+ tiered_caching == 'on'
75
+ end
76
+
77
+ # Check if any Argo feature is enabled
78
+ # @return [Boolean] true if any feature enabled
79
+ def any_enabled?
80
+ smart_routing_enabled? || tiered_caching_enabled?
81
+ end
82
+
83
+ # Check if all Argo features are enabled
84
+ # @return [Boolean] true if all features enabled
85
+ def all_enabled?
86
+ smart_routing_enabled? && tiered_caching_enabled?
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_authenticated_origin_pulls/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareAuthenticatedOriginPulls
9
+ def cloudflare_authenticated_origin_pulls(name, attributes = {})
10
+ attrs = Cloudflare::Types::AuthenticatedOriginPullsAttributes.new(attributes)
11
+ resource(:cloudflare_authenticated_origin_pulls, name) do
12
+ zone_id attrs.zone_id
13
+ enabled attrs.enabled
14
+ authenticated_origin_pulls_certificate attrs.authenticated_origin_pulls_certificate if attrs.authenticated_origin_pulls_certificate
15
+ hostname attrs.hostname if attrs.hostname
16
+ end
17
+ ResourceReference.new(
18
+ type: 'cloudflare_authenticated_origin_pulls',
19
+ name: name,
20
+ resource_attributes: attrs.to_h,
21
+ outputs: { id: "${cloudflare_authenticated_origin_pulls.#{name}.id}" }
22
+ )
23
+ end
24
+ end
25
+ module Cloudflare
26
+ include CloudflareAuthenticatedOriginPulls
27
+ end
28
+ end
29
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class AuthenticatedOriginPullsAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
9
+ attribute :enabled, Dry::Types['strict.bool']
10
+ attribute :authenticated_origin_pulls_certificate, Dry::Types['strict.string'].optional.default(nil)
11
+ attribute :hostname, Dry::Types['strict.string'].optional.default(nil)
12
+ end
13
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_authenticated_origin_pulls_certificate/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareAuthenticatedOriginPullsCertificate
9
+ def cloudflare_authenticated_origin_pulls_certificate(name, attributes = {})
10
+ attrs = Cloudflare::Types::AuthenticatedOriginPullsCertificateAttributes.new(attributes)
11
+ resource(:cloudflare_authenticated_origin_pulls_certificate, name) do
12
+ zone_id attrs.zone_id
13
+ certificate attrs.certificate
14
+ private_key attrs.private_key
15
+ type attrs.type if attrs.type
16
+ end
17
+ ResourceReference.new(
18
+ type: 'cloudflare_authenticated_origin_pulls_certificate',
19
+ name: name,
20
+ resource_attributes: attrs.to_h,
21
+ outputs: {
22
+ id: "${cloudflare_authenticated_origin_pulls_certificate.#{name}.id}",
23
+ status: "${cloudflare_authenticated_origin_pulls_certificate.#{name}.status}",
24
+ expires_on: "${cloudflare_authenticated_origin_pulls_certificate.#{name}.expires_on}"
25
+ }
26
+ )
27
+ end
28
+ end
29
+ module Cloudflare
30
+ include CloudflareAuthenticatedOriginPullsCertificate
31
+ end
32
+ end
33
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class AuthenticatedOriginPullsCertificateAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
9
+ attribute :certificate, Dry::Types['strict.string']
10
+ attribute :private_key, Dry::Types['strict.string']
11
+ attribute :type, Dry::Types['strict.string'].enum('per-zone', 'per-hostname').optional.default(nil)
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_authenticated_origin_pulls_settings/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareAuthenticatedOriginPullsSettings
9
+ def cloudflare_authenticated_origin_pulls_settings(name, attributes = {})
10
+ attrs = Cloudflare::Types::AuthenticatedOriginPullsSettingsAttributes.new(attributes)
11
+ resource(:cloudflare_authenticated_origin_pulls_settings, name) do
12
+ zone_id attrs.zone_id
13
+ end
14
+ ResourceReference.new(
15
+ type: 'cloudflare_authenticated_origin_pulls_settings',
16
+ name: name,
17
+ resource_attributes: attrs.to_h,
18
+ outputs: { id: "${cloudflare_authenticated_origin_pulls_settings.\#{name}.id}" }
19
+ )
20
+ end
21
+ end
22
+ module Cloudflare
23
+ include CloudflareAuthenticatedOriginPullsSettings
24
+ end
25
+ end
26
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class AuthenticatedOriginPullsSettingsAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
9
+ end
10
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_bot_management/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareBotManagement
9
+ def cloudflare_bot_management(name, attributes = {})
10
+ attrs = Cloudflare::Types::BotManagementAttributes.new(attributes)
11
+ resource(:cloudflare_bot_management, name) do
12
+ zone_id attrs.zone_id
13
+ enable_js attrs.enable_js if !attrs.enable_js.nil?
14
+ fight_mode attrs.fight_mode if !attrs.fight_mode.nil?
15
+ suppress_session_score attrs.suppress_session_score if !attrs.suppress_session_score.nil?
16
+ auto_update_model attrs.auto_update_model if !attrs.auto_update_model.nil?
17
+ optimize_wordpress attrs.optimize_wordpress if !attrs.optimize_wordpress.nil?
18
+ end
19
+ ResourceReference.new(
20
+ type: 'cloudflare_bot_management',
21
+ name: name,
22
+ resource_attributes: attrs.to_h,
23
+ outputs: { id: "${cloudflare_bot_management.#{name}.id}" }
24
+ )
25
+ end
26
+ end
27
+ module Cloudflare
28
+ include CloudflareBotManagement
29
+ end
30
+ end
31
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class BotManagementAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
9
+ attribute :enable_js, Dry::Types['strict.bool'].optional.default(nil)
10
+ attribute :fight_mode, Dry::Types['strict.bool'].optional.default(nil)
11
+ attribute :suppress_session_score, Dry::Types['strict.bool'].optional.default(nil)
12
+ attribute :auto_update_model, Dry::Types['strict.bool'].optional.default(nil)
13
+ attribute :optimize_wordpress, Dry::Types['strict.bool'].optional.default(nil)
14
+ end
15
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_byo_ip_prefix/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareByoIpPrefix
9
+ def cloudflare_byo_ip_prefix(name, attributes = {})
10
+ attrs = Cloudflare::Types::ByoIpPrefixAttributes.new(attributes)
11
+ resource(:cloudflare_byo_ip_prefix, name) do
12
+ zone_id attrs.zone_id if attrs.zone_id
13
+ account_id attrs.account_id if attrs.account_id
14
+ end
15
+ ResourceReference.new(
16
+ type: 'cloudflare_byo_ip_prefix',
17
+ name: name,
18
+ resource_attributes: attrs.to_h,
19
+ outputs: { id: "${cloudflare_byo_ip_prefix.\#{name}.id}" }
20
+ )
21
+ end
22
+ end
23
+ module Cloudflare
24
+ include CloudflareByoIpPrefix
25
+ end
26
+ end
27
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class ByoIpPrefixAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
9
+ attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_calls_sfu_app/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareCallsSfuApp
9
+ def cloudflare_calls_sfu_app(name, attributes = {})
10
+ attrs = Cloudflare::Types::CallsSfuAppAttributes.new(attributes)
11
+ resource(:cloudflare_calls_sfu_app, name) do
12
+ account_id attrs.account_id if attrs.account_id
13
+ zone_id attrs.zone_id if attrs.zone_id
14
+ end
15
+ ResourceReference.new(
16
+ type: 'cloudflare_calls_sfu_app',
17
+ name: name,
18
+ resource_attributes: attrs.to_h,
19
+ outputs: { id: "${cloudflare_calls_sfu_app.\#{name}.id}" }
20
+ )
21
+ end
22
+ end
23
+ module Cloudflare
24
+ include CloudflareCallsSfuApp
25
+ end
26
+ end
27
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class CallsSfuAppAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
9
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_calls_turn_app/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareCallsTurnApp
9
+ def cloudflare_calls_turn_app(name, attributes = {})
10
+ attrs = Cloudflare::Types::CallsTurnAppAttributes.new(attributes)
11
+ resource(:cloudflare_calls_turn_app, name) do
12
+ account_id attrs.account_id if attrs.account_id
13
+ zone_id attrs.zone_id if attrs.zone_id
14
+ end
15
+ ResourceReference.new(
16
+ type: 'cloudflare_calls_turn_app',
17
+ name: name,
18
+ resource_attributes: attrs.to_h,
19
+ outputs: { id: "${cloudflare_calls_turn_app.\#{name}.id}" }
20
+ )
21
+ end
22
+ end
23
+ module Cloudflare
24
+ include CloudflareCallsTurnApp
25
+ end
26
+ end
27
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class CallsTurnAppAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
9
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_certificate_pack/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareCertificatePack
9
+ def cloudflare_certificate_pack(name, attributes = {})
10
+ attrs = Cloudflare::Types::CertificatePackAttributes.new(attributes)
11
+ resource(:cloudflare_certificate_pack, name) do
12
+ zone_id attrs.zone_id
13
+ end
14
+ ResourceReference.new(
15
+ type: 'cloudflare_certificate_pack',
16
+ name: name,
17
+ resource_attributes: attrs.to_h,
18
+ outputs: { id: "${cloudflare_certificate_pack.\#{name}.id}" }
19
+ )
20
+ end
21
+ end
22
+ module Cloudflare
23
+ include CloudflareCertificatePack
24
+ end
25
+ end
26
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class CertificatePackAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId
9
+ end
10
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_cloud_connector_rules/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareCloudConnectorRules
9
+ def cloudflare_cloud_connector_rules(name, attributes = {})
10
+ attrs = Cloudflare::Types::CloudConnectorRulesAttributes.new(attributes)
11
+ resource(:cloudflare_cloud_connector_rules, name) do
12
+ zone_id attrs.zone_id if attrs.zone_id
13
+ account_id attrs.account_id if attrs.account_id
14
+ end
15
+ ResourceReference.new(
16
+ type: 'cloudflare_cloud_connector_rules',
17
+ name: name,
18
+ resource_attributes: attrs.to_h,
19
+ outputs: { id: "${cloudflare_cloud_connector_rules.\#{name}.id}" }
20
+ )
21
+ end
22
+ end
23
+ module Cloudflare
24
+ include CloudflareCloudConnectorRules
25
+ end
26
+ end
27
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class CloudConnectorRulesAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
9
+ attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ require 'pangea/resources/base'
3
+ require 'pangea/resources/reference'
4
+ require 'pangea/resources/cloudflare_cloudforce_one_request/types'
5
+ require 'pangea/resource_registry'
6
+
7
+ module Pangea::Resources
8
+ module CloudflareCloudforceOneRequest
9
+ def cloudflare_cloudforce_one_request(name, attributes = {})
10
+ attrs = Cloudflare::Types::CloudforceOneRequestAttributes.new(attributes)
11
+ resource(:cloudflare_cloudforce_one_request, name) do
12
+ account_id attrs.account_id if attrs.account_id
13
+ zone_id attrs.zone_id if attrs.zone_id
14
+ end
15
+ ResourceReference.new(
16
+ type: 'cloudflare_cloudforce_one_request',
17
+ name: name,
18
+ resource_attributes: attrs.to_h,
19
+ outputs: { id: "${cloudflare_cloudforce_one_request.\#{name}.id}" }
20
+ )
21
+ end
22
+ end
23
+ module Cloudflare
24
+ include CloudflareCloudforceOneRequest
25
+ end
26
+ end
27
+ Pangea::ResourceRegistry.register_module(Pangea::Resources::Cloudflare)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ require 'dry-struct'
3
+ require 'pangea/resources/types'
4
+
5
+ module Pangea::Resources::Cloudflare::Types
6
+ class CloudforceOneRequestAttributes < Dry::Struct
7
+ transform_keys(&:to_sym)
8
+ attribute :account_id, ::Pangea::Resources::Types::CloudflareAccountId.optional.default(nil)
9
+ attribute :zone_id, ::Pangea::Resources::Types::CloudflareZoneId.optional.default(nil)
10
+ end
11
+ end