cf 0.2.0 → 0.3.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 (262) hide show
  1. package/dist/_meta/agent-context.json +63 -62
  2. package/dist/_meta/commands.json +12365 -9690
  3. package/dist/_meta/schemas.json +19206 -15404
  4. package/dist/abuse-reports-dMIfUJ8v.mjs +8 -0
  5. package/dist/accounts-Kx1epdA1.mjs +22 -0
  6. package/dist/acm-Utu252kC.mjs +3 -0
  7. package/dist/addressing-CBq7Z7Vq.mjs +12 -0
  8. package/dist/{agent-context-D26woB9J.mjs → agent-context-BGTU299M.mjs} +1 -1
  9. package/dist/ai-DOOKLPkG.mjs +2 -0
  10. package/dist/ai-gateway-Cj1T3avF.mjs +8 -0
  11. package/dist/ai-search-CQF_Sn7d.mjs +7 -0
  12. package/dist/ai_gateway-C3fH22C0.mjs +4 -0
  13. package/dist/alerting-CqmEIaKn.mjs +6 -0
  14. package/dist/analytics-Dv-X8x7D.mjs +20 -0
  15. package/dist/analytics_engine-DdXVR8z2.mjs +2 -0
  16. package/dist/api-gateway-CNv0IHTU.mjs +33 -0
  17. package/dist/argo-CX_A4kcn.mjs +2 -0
  18. package/dist/audit-logs-BfBf3oo-.mjs +2 -0
  19. package/dist/auth-SyWhMmPu.mjs +6 -0
  20. package/dist/auth-ffdf9yR0.mjs +135 -0
  21. package/dist/autorag-BuGhGTeZ.mjs +2 -0
  22. package/dist/billing-PoG81XaQ.mjs +2 -0
  23. package/dist/body-parser-DKa8Ipg1.mjs +2 -0
  24. package/dist/bot-management-CFvtVx62.mjs +5 -0
  25. package/dist/botnet-feed-B-M4Yu0W.mjs +3 -0
  26. package/dist/brand-protection-D05Eg-_6.mjs +3 -0
  27. package/dist/browser-rendering-xu8F_Rrv.mjs +4 -0
  28. package/dist/{build-5jmmOZhm.mjs → build-DYkGW4dh.mjs} +1 -1
  29. package/dist/cache-DsoW6Xwv.mjs +5 -0
  30. package/dist/calls-CZbO7TyR.mjs +4 -0
  31. package/dist/certificate-authorities-D2yr7_3t.mjs +2 -0
  32. package/dist/cli-types-CRIDdDw3.mjs +2 -0
  33. package/dist/client-certificates-MJcDsTId.mjs +3 -0
  34. package/dist/cloud-connector-DWOrN2eM.mjs +2 -0
  35. package/dist/cloudforce-one-2Bhz8YdW.mjs +21 -0
  36. package/dist/{completions-BKrxcfhN.mjs → completions-BwRpZQVn.mjs} +1 -1
  37. package/dist/connectivity-BX8C7tvK.mjs +3 -0
  38. package/dist/content-scanning-r6uzMO1r.mjs +4 -0
  39. package/dist/context-DGlHRGWM.mjs +2 -0
  40. package/dist/custom-certificates-aAiEguR7.mjs +5 -0
  41. package/dist/custom-hostnames-AG5yBHIi.mjs +5 -0
  42. package/dist/custom-nameservers-D1DtlRue.mjs +3 -0
  43. package/dist/custom-pages-DQCi2plU.mjs +4 -0
  44. package/dist/d1-DbnYhw45.mjs +4 -0
  45. package/dist/data-security-D_EtYBfo.mjs +6 -0
  46. package/dist/dcv-delegation-CHspSzTI.mjs +2 -0
  47. package/dist/{deploy-DbkiIzUr.mjs → deploy-CQial3kN.mjs} +1 -1
  48. package/dist/{dev-C6iSuQZm.mjs → dev-B38LfCTl.mjs} +1 -1
  49. package/dist/diagnostics-BJQGjVJn.mjs +3 -0
  50. package/dist/dispatch-namespaces-DmHvoBOg.mjs +7 -0
  51. package/dist/{dist-CnSubA1Z.mjs → dist-AIcZFk0U.mjs} +7 -7
  52. package/dist/dns-VMhQSr5n.mjs +29 -0
  53. package/dist/dns-firewall-B4DVXFBQ.mjs +57 -0
  54. package/dist/durable-objects-CTboySEo.mjs +2 -0
  55. package/dist/email-routing-tIR2SFu-.mjs +10 -0
  56. package/dist/email-security-Ca1id3rZ.mjs +8 -0
  57. package/dist/email-sending-DwWKc5jC.mjs +3 -0
  58. package/dist/filters-A4dg_a68.mjs +4 -0
  59. package/dist/firewall-DWPQgYd9.mjs +11 -0
  60. package/dist/fraud-BMkSsJGU.mjs +20 -0
  61. package/dist/google-tag-gateway-BGD49nRC.mjs +2 -0
  62. package/dist/healthchecks-CtIfrFql.mjs +4 -0
  63. package/dist/hostnames-BiomxukN.mjs +3 -0
  64. package/dist/hyperdrive-Da104VaQ.mjs +18 -0
  65. package/dist/iam-BIGKo0WW.mjs +6 -0
  66. package/dist/images-BO8FbDAa.mjs +5 -0
  67. package/dist/index.mjs +1 -1
  68. package/dist/intel-CY6_79v8.mjs +3 -0
  69. package/dist/{ips-B8fwxKZD.mjs → ips-K4bzaGqd.mjs} +1 -1
  70. package/dist/keyless-certificates-CZC-L8gM.mjs +3 -0
  71. package/dist/kv-8o27w_pY.mjs +5 -0
  72. package/dist/leaked-credential-checks-qLzRyu85.mjs +3 -0
  73. package/dist/load-balancers-DtG8nj25.mjs +6 -0
  74. package/dist/logpush-4L0njy1d.mjs +4 -0
  75. package/dist/logs-B_Yp95hv.mjs +3 -0
  76. package/dist/magic-cloud-networking-CSOM3EM-.mjs +5 -0
  77. package/dist/magic-network-monitoring-BnwvM4-I.mjs +4 -0
  78. package/dist/magic-transit-CXDyvhxq.mjs +90 -0
  79. package/dist/managed-transforms-D15yVbZx.mjs +3 -0
  80. package/dist/mtls-certificates-D8k0AXWK.mjs +3 -0
  81. package/dist/network-interconnects-rrr7red3.mjs +36 -0
  82. package/dist/observability-DWvpqnQJ.mjs +4 -0
  83. package/dist/organizations-T77D50Sq.mjs +41 -0
  84. package/dist/origin-ca-certificates-DXIvD8H5.mjs +3 -0
  85. package/dist/origin-post-quantum-encryption-C8oOczyV.mjs +2 -0
  86. package/dist/origin-tls-client-auth-CaVW1Ztp.mjs +4 -0
  87. package/dist/output-BJFNwj7b.mjs +2 -0
  88. package/dist/page-rules-CjZPTMQX.mjs +18 -0
  89. package/dist/page-shield-D5RRNJCY.mjs +37 -0
  90. package/dist/pages-CWJtJnL0.mjs +11 -0
  91. package/dist/pipelines-B0L_7j9e.mjs +6 -0
  92. package/dist/{progress-CjcQ6ato.mjs → progress-CrCGTq7N.mjs} +1 -1
  93. package/dist/queues-CN6DPhRR.mjs +6 -0
  94. package/dist/r2-DQIcyRtA.mjs +21 -0
  95. package/dist/r2-data-catalog-Bbo93TJx.mjs +14 -0
  96. package/dist/radar-Bxb0WX8V.mjs +2 -0
  97. package/dist/rate-limits-DcrQV6Ar.mjs +5 -0
  98. package/dist/raw-fetch-Dlccg0Tr.mjs +2 -0
  99. package/dist/realtime-kit-CaquuVOE.mjs +18 -0
  100. package/dist/registrar-Ko-xZemf.mjs +46 -0
  101. package/dist/request-tracers-DOW_reTJ.mjs +2 -0
  102. package/dist/{resolve-BuJRWSk0.mjs → resolve-4-OSeHlK.mjs} +1 -1
  103. package/dist/resource-sharing-D7TX0JV0.mjs +5 -0
  104. package/dist/resource-tagging-C3qtLzCz.mjs +16 -0
  105. package/dist/rules-BXRADHL5.mjs +4 -0
  106. package/dist/rulesets-CBgpeSvJ.mjs +8 -0
  107. package/dist/rum-BjPptTUP.mjs +4 -0
  108. package/dist/{schema-CHBfkARI.mjs → schema-D16TgWBg.mjs} +1 -1
  109. package/dist/schema-validation-Dgv_opM3.mjs +24 -0
  110. package/dist/scim-DdSEr4kZ.mjs +3 -0
  111. package/dist/secrets-store-7BfyvJLb.mjs +25 -0
  112. package/dist/security-center-DAy6AKtT.mjs +2 -0
  113. package/dist/security-txt-xAMb7K6Y.mjs +3 -0
  114. package/dist/session-COHHdS7A.mjs +5 -0
  115. package/dist/{shared-DEzmTsEC.mjs → shared-AGtpXwwL.mjs} +1 -1
  116. package/dist/smart-shield-TeWZFnH2.mjs +3 -0
  117. package/dist/snippets-CCSsCXVs.mjs +4 -0
  118. package/dist/{spawn-13QQ0IwO.mjs → spawn-DcppKGI5.mjs} +1 -1
  119. package/dist/spectrum-CTTZID8u.mjs +63 -0
  120. package/dist/speed-CuzTE0AL.mjs +4 -0
  121. package/dist/{src-B9cKsgsg.mjs → src-BW6vfAwE.mjs} +10 -10
  122. package/dist/ssl-BWA2LdwC.mjs +15 -0
  123. package/dist/stream-GFsIZ-pP.mjs +14 -0
  124. package/dist/tenants-Bd7NGQ_m.mjs +2 -0
  125. package/dist/token-validation-DAgtFOvs.mjs +10 -0
  126. package/dist/{tools-B7QiNu-d.mjs → tools-DXQmfFuE.mjs} +1 -1
  127. package/dist/turnstile-cfdaO4ca.mjs +23 -0
  128. package/dist/{ui-BXjU1dX1.mjs → ui-D4KtlMh9.mjs} +1 -1
  129. package/dist/url-normalization-B5RN4nLD.mjs +3 -0
  130. package/dist/url-scanner-BrZ1L9OC.mjs +2 -0
  131. package/dist/user-CAo-yCJA.mjs +10 -0
  132. package/dist/vectorize-C7_oQlaI.mjs +4 -0
  133. package/dist/{versions-DzyrlUAi.mjs → versions-CUwWJWmy.mjs} +1 -1
  134. package/dist/waiting-rooms-Dln5ICg5.mjs +11 -0
  135. package/dist/web3-HQJRm38W.mjs +4 -0
  136. package/dist/workers-Dg7ddG2Q.mjs +18 -0
  137. package/dist/workers-builds-AVfx8IyL.mjs +7 -0
  138. package/dist/workflows-VquuSh2J.mjs +4 -0
  139. package/dist/zaraz-xYSWIV4P.mjs +2 -0
  140. package/dist/zero-trust-CP96wnSh.mjs +118 -0
  141. package/dist/zones-BSgmZ9WC.mjs +21 -0
  142. package/package.json +4 -3
  143. package/dist/abuse-reports-KtfZhi6j.mjs +0 -8
  144. package/dist/accounts-BopMfODC.mjs +0 -21
  145. package/dist/acm-BT4vlnEJ.mjs +0 -3
  146. package/dist/addressing-B3uFxHst.mjs +0 -13
  147. package/dist/ai-DWHqwMap.mjs +0 -2
  148. package/dist/ai-gateway-CbKEO-3o.mjs +0 -8
  149. package/dist/ai-search-VnOQ5n--.mjs +0 -7
  150. package/dist/alerting-BmmgIlIO.mjs +0 -6
  151. package/dist/analytics-isY03taL.mjs +0 -20
  152. package/dist/api-gateway-DXurEbA-.mjs +0 -33
  153. package/dist/argo-B02BL_hp.mjs +0 -2
  154. package/dist/audit-logs-DcgR9xUc.mjs +0 -2
  155. package/dist/auth-CQcAgnOy.mjs +0 -135
  156. package/dist/auth-DenWm_X0.mjs +0 -6
  157. package/dist/autorag-CmrwnGVj.mjs +0 -2
  158. package/dist/billing-CaW1ZAB1.mjs +0 -2
  159. package/dist/body-parser-Br-BoYk-.mjs +0 -2
  160. package/dist/bot-management-CeBsFx68.mjs +0 -5
  161. package/dist/botnet-feed-B396vQeQ.mjs +0 -3
  162. package/dist/brand-protection-D4V1v5Kl.mjs +0 -3
  163. package/dist/browser-rendering-GF7rNtKI.mjs +0 -4
  164. package/dist/builds-C_ySULja.mjs +0 -2
  165. package/dist/cache-DmXizSMi.mjs +0 -5
  166. package/dist/calls-x4KQpTB4.mjs +0 -4
  167. package/dist/certificate-authorities-hC0SG-Ga.mjs +0 -2
  168. package/dist/client-certificates-BGVsDyeJ.mjs +0 -3
  169. package/dist/cloud-connector-BClQpEzI.mjs +0 -2
  170. package/dist/cloudforce-one-BfhFrO6M.mjs +0 -21
  171. package/dist/connectivity-G0NP6LtW.mjs +0 -3
  172. package/dist/content-scanning-DEtPJ7aF.mjs +0 -4
  173. package/dist/context-CC0Rhkhy.mjs +0 -2
  174. package/dist/custom-certificates-rJXFpUWu.mjs +0 -5
  175. package/dist/custom-hostnames-Be5mgLeF.mjs +0 -5
  176. package/dist/custom-nameservers-CoFdy6hD.mjs +0 -3
  177. package/dist/custom-pages-D-oErw57.mjs +0 -4
  178. package/dist/d1-C95ckPKI.mjs +0 -3
  179. package/dist/dcv-delegation-CWSkbGuc.mjs +0 -2
  180. package/dist/diagnostics-DEEhPnXj.mjs +0 -3
  181. package/dist/dispatch-namespaces-BzXeV7PH.mjs +0 -7
  182. package/dist/dns-firewall-BQXD_NxG.mjs +0 -57
  183. package/dist/dns-qW-3TZOT.mjs +0 -29
  184. package/dist/durable-objects-CgWFYEJJ.mjs +0 -2
  185. package/dist/email-routing-tdNJaCpJ.mjs +0 -10
  186. package/dist/email-security-DTVHNr2h.mjs +0 -60
  187. package/dist/email-sending-DsFTvE31.mjs +0 -3
  188. package/dist/filters-DO1Is_tI.mjs +0 -4
  189. package/dist/firewall-DbUhVTCg.mjs +0 -11
  190. package/dist/fraud-Bzr4njYb.mjs +0 -8
  191. package/dist/google-tag-gateway-BQxkA90M.mjs +0 -2
  192. package/dist/healthchecks-BBAs-lS_.mjs +0 -4
  193. package/dist/hostnames-Dz9PEUKS.mjs +0 -3
  194. package/dist/hyperdrive-B1iUJddG.mjs +0 -18
  195. package/dist/iam-CJM8gHpG.mjs +0 -6
  196. package/dist/images-DEoBmtFS.mjs +0 -5
  197. package/dist/intel-BM6xkZ0C.mjs +0 -3
  198. package/dist/keyless-certificates-DffYnd4b.mjs +0 -3
  199. package/dist/kv-BTceLtWZ.mjs +0 -5
  200. package/dist/leaked-credential-checks-CALfvoCo.mjs +0 -3
  201. package/dist/load-balancers-C1Ho1gCF.mjs +0 -6
  202. package/dist/logpush-CSYhgevA.mjs +0 -4
  203. package/dist/logs-DlIwmMpt.mjs +0 -3
  204. package/dist/magic-cloud-networking-Czu0pZ0a.mjs +0 -5
  205. package/dist/magic-network-monitoring-d7GJE5Yt.mjs +0 -4
  206. package/dist/magic-transit-qQmA-981.mjs +0 -89
  207. package/dist/managed-transforms-Dd6AnbWE.mjs +0 -3
  208. package/dist/mtls-certificates-C0rlCRGs.mjs +0 -3
  209. package/dist/network-interconnects-CxG2deY0.mjs +0 -36
  210. package/dist/organizations-DyEAiGiR.mjs +0 -41
  211. package/dist/origin-ca-certificates-S8RcoMF6.mjs +0 -3
  212. package/dist/origin-post-quantum-encryption-B8ZcpLu5.mjs +0 -2
  213. package/dist/origin-tls-client-auth-BlxMmQrE.mjs +0 -5
  214. package/dist/output-D7_yAFVR.mjs +0 -2
  215. package/dist/page-rules-DP-w6TAm.mjs +0 -18
  216. package/dist/page-shield-Bf7kFp8c.mjs +0 -37
  217. package/dist/pages-D0Y_XRqW.mjs +0 -10
  218. package/dist/pipelines-C-SPESAk.mjs +0 -6
  219. package/dist/queues-wv6CZsi8.mjs +0 -6
  220. package/dist/r2-DuXjp9n5.mjs +0 -21
  221. package/dist/r2-data-catalog-DQCMrmNO.mjs +0 -14
  222. package/dist/radar-BW_ZHP8X.mjs +0 -2
  223. package/dist/rate-limits-DLTkIvwr.mjs +0 -5
  224. package/dist/raw-fetch-hRv-6P3D.mjs +0 -2
  225. package/dist/realtime-kit-Ch7Vg3vj.mjs +0 -6
  226. package/dist/registrar-DIIv6fWd.mjs +0 -46
  227. package/dist/request-tracers-DMej0Drs.mjs +0 -2
  228. package/dist/resource-sharing-CYJ7cMWq.mjs +0 -5
  229. package/dist/resource-tagging-Dnz65MgH.mjs +0 -16
  230. package/dist/rules-DLJpOYbC.mjs +0 -4
  231. package/dist/rulesets-D9nqEJT5.mjs +0 -8
  232. package/dist/rum-DBVmdPkp.mjs +0 -4
  233. package/dist/schema-validation-MCd3xdtX.mjs +0 -4
  234. package/dist/scim-DZA3VXog.mjs +0 -3
  235. package/dist/scm-CilfPOue.mjs +0 -2
  236. package/dist/secrets-store-BrvcZSOM.mjs +0 -21
  237. package/dist/security-center-BU6f3Cm1.mjs +0 -2
  238. package/dist/security-txt-BPIbP3dG.mjs +0 -3
  239. package/dist/session-H7IV2BrM.mjs +0 -2
  240. package/dist/smart-shield-e8XFBkiF.mjs +0 -3
  241. package/dist/snippets-B4M3MMb8.mjs +0 -4
  242. package/dist/spectrum-B0adfSRI.mjs +0 -59
  243. package/dist/speed-BVcUtkAz.mjs +0 -4
  244. package/dist/ssl-BAa91gsc.mjs +0 -15
  245. package/dist/stream-D53sxKb3.mjs +0 -14
  246. package/dist/tenants-bH5pt3dJ.mjs +0 -2
  247. package/dist/token-validation-M61Vx_Tw.mjs +0 -4
  248. package/dist/turnstile-wAU0Gc2Z.mjs +0 -23
  249. package/dist/url-normalization-DZrWDgB5.mjs +0 -3
  250. package/dist/url-scanner-Zo49edNp.mjs +0 -2
  251. package/dist/user-DbXlVReB.mjs +0 -10
  252. package/dist/vectorize-CUnTM0DT.mjs +0 -4
  253. package/dist/vuln-scanner-Br_2lQp1.mjs +0 -2
  254. package/dist/waiting-rooms-BZW0X69-.mjs +0 -11
  255. package/dist/web3-DueyOQtx.mjs +0 -4
  256. package/dist/workers-builds-BM_aoeUR.mjs +0 -7
  257. package/dist/workers-nV_vBCfV.mjs +0 -16
  258. package/dist/workflows-CQITmo-s.mjs +0 -4
  259. package/dist/zaraz-DIbpF5Op.mjs +0 -2
  260. package/dist/zero-trust-CKp8j512.mjs +0 -119
  261. package/dist/zones-BZ5tZDbH.mjs +0 -28
  262. /package/dist/{metadata-DGdCpUxn.mjs → metadata-5VwHPW6C.mjs} +0 -0
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import{h as e,t,x as n}from"./auth-CQcAgnOy.mjs";import{n as r,t as i}from"./body-parser-Br-BoYk-.mjs";import{t as a}from"./output-D7_yAFVR.mjs";import{n as o,t as s}from"./progress-CjcQ6ato.mjs";import{n as c,t as l}from"./input-validation-zEO81MWN.mjs";import{t as u}from"./local-VJaJ3BZ1.mjs";import{n as d,t as ee}from"./raw-fetch-hRv-6P3D.mjs";function te(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the agent readiness data dimension by which to group the results.`,demandOption:!0}).option(`date`,{type:`string`,description:`Filters results by the specified date.`}).option(`domain-category`,{type:`string`,description:`Filters results by domain category.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const f={command:`summary <dimension>`,describe:`Returns a summary of AI agent readiness scores across scanned domains, grouped by the specified dimension. Data is sourced from weekly bulk scans. All values are raw domain counts.`,builder:te,handler:async e=>{let n={date:e.date,domainCategory:e[`domain-category`],name:e.name,format:e.format};if(e.dryRun){o({command:`cf radar agent-readiness summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/agent_readiness/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.agentReadiness.summary(e.dimension,n)),{successLabel:`Loaded`})}},p={command:`agent-readiness`,describe:`Agent readiness summary statistics across the Cloudflare network`,builder:e=>e.command(f).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function m(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`crawl-purpose`,{type:`string`,description:`Filters results by bot crawl purpose.`}).option(`user-agent`,{type:`string`,description:`Filters results by user agent.`}).option(`vertical`,{type:`string`,description:`Filters results by vertical.`}).option(`industry`,{type:`string`,description:`Filters results by industry.`}).option(`content-type`,{type:`string`,description:`Filters results by content type category.`}).option(`response-status`,{type:`string`,description:`Filters results by HTTP response status code (e.g. 200, 403, 404). Only [IANA-registered codes](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) are accepted.`}).option(`response-status-category`,{type:`string`,description:`Filters results by HTTP response status code category.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const h={command:`summary-v2 <dimension>`,describe:`Retrieves an aggregated summary of AI bots HTTP requests grouped by the specified dimension.`,builder:m,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,crawlPurpose:e[`crawl-purpose`],userAgent:e[`user-agent`],vertical:e.vertical,industry:e.industry,contentType:e[`content-type`],responseStatus:e[`response-status`],responseStatusCategory:e[`response-status-category`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai bots summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.bots.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function g(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const _={command:`user-agent`,describe:`Retrieves the distribution of traffic by AI user agent.`,builder:g,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai bots summary user-agent`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/summary/user_agent`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.bots.summary.userAgent(n)),{successLabel:`Loaded`})}},v={command:`summary`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(_).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function y(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`crawl-purpose`,{type:`string`,description:`Filters results by bot crawl purpose.`}).option(`user-agent`,{type:`string`,description:`Filters results by user agent.`}).option(`industry`,{type:`string`,description:`Filters results by industry.`}).option(`vertical`,{type:`string`,description:`Filters results by vertical.`}).option(`content-type`,{type:`string`,description:`Filters results by content type category.`}).option(`response-status`,{type:`string`,description:`Filters results by HTTP response status code (e.g. 200, 403, 404). Only [IANA-registered codes](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) are accepted.`}).option(`response-status-category`,{type:`string`,description:`Filters results by HTTP response status code category.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const b={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of HTTP requests from AI bots, grouped by the specified dimension over time.`,builder:y,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,crawlPurpose:e[`crawl-purpose`],userAgent:e[`user-agent`],industry:e.industry,vertical:e.vertical,contentType:e[`content-type`],responseStatus:e[`response-status`],responseStatusCategory:e[`response-status-category`],limitPerGroup:e[`limit-per-group`],normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar ai bots timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.bots.timeseriesGroups(e.dimension,n)),{successLabel:`Loaded`})}};function x(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`crawl-purpose`,{type:`string`,description:`Filters results by bot crawl purpose.`}).option(`user-agent`,{type:`string`,description:`Filters results by user agent.`}).option(`industry`,{type:`string`,description:`Filters results by industry.`}).option(`vertical`,{type:`string`,description:`Filters results by vertical.`}).option(`content-type`,{type:`string`,description:`Filters results by content type category.`}).option(`response-status`,{type:`string`,description:`Filters results by HTTP response status code (e.g. 200, 403, 404). Only [IANA-registered codes](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) are accepted.`}).option(`response-status-category`,{type:`string`,description:`Filters results by HTTP response status code category.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const S={command:`timeseries`,describe:`Retrieves AI bots HTTP request volume over time.`,builder:x,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,crawlPurpose:e[`crawl-purpose`],userAgent:e[`user-agent`],industry:e.industry,vertical:e.vertical,contentType:e[`content-type`],responseStatus:e[`response-status`],responseStatusCategory:e[`response-status-category`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai bots timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.bots.timeseries(n)),{successLabel:`Loaded`})}},C={command:`bots`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(h).command(S).command(b).command(v).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function w(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const T={command:`summary-v2 <dimension>`,describe:`Retrieves an aggregated summary of unique accounts using Workers AI inference grouped by the specified dimension.`,builder:w,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai inference summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/inference/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.inference.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function E(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const D={command:`model`,describe:`Retrieves the distribution of unique accounts by model.`,builder:E,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai inference summary model`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/inference/summary/model`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.inference.summary.model(n)),{successLabel:`Loaded`})}};function O(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const k={command:`task`,describe:`Retrieves the distribution of unique accounts by task.`,builder:O,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai inference summary task`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/inference/summary/task`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.inference.summary.task(n)),{successLabel:`Loaded`})}},A={command:`summary`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(D).command(k).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function j(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const M={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of unique accounts using Workers AI inference, grouped by the specified dimension over time.`,builder:j,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,limitPerGroup:e[`limit-per-group`],normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar ai inference timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/inference/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.inference.timeseriesGroupsV2(e.dimension,n)),{successLabel:`Loaded`})}};function N(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const P={command:`model`,describe:`Retrieves the distribution of unique accounts by model over time.`,builder:N,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai inference timeseries-groups summary model`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/inference/timeseries_groups/model`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.inference.timeseriesGroups.summary.model(n)),{successLabel:`Loaded`})}};function F(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const I={command:`task`,describe:`Retrieves the distribution of unique accounts by task over time.`,builder:F,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai inference timeseries-groups summary task`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/inference/timeseries_groups/task`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.inference.timeseriesGroups.summary.task(n)),{successLabel:`Loaded`})}},L={command:`summary`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(P).command(I).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},R={command:`timeseries-groups`,describe:`Operations for ai.inference.timeseries-groups`,builder:e=>e.command(L).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},z={command:`inference`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(T).command(M).command(A).command(R).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function B(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const V={command:`summary`,describe:`Retrieves the overall median HTML-to-markdown reduction ratio for AI agent requests over the given date range.`,builder:B,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],format:e.format};if(e.dryRun){o({command:`cf radar ai markdown-for-agents summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/markdown_for_agents/summary`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.markdownForAgents.summary(n)),{successLabel:`Loaded`})}};function H(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const U={command:`timeseries`,describe:`Retrieves the median HTML-to-markdown reduction ratio over time for AI agent requests.`,builder:H,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],format:e.format};if(e.dryRun){o({command:`cf radar ai markdown-for-agents timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/markdown_for_agents/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.markdownForAgents.timeseries(n)),{successLabel:`Loaded`})}},W={command:`markdown-for-agents`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(V).command(U).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function G(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`crawl-purpose`,{type:`string`,description:`Filters results by bot crawl purpose.`}).option(`user-agent`,{type:`string`,description:`Filters results by user agent.`}).option(`vertical`,{type:`string`,description:`Filters results by vertical.`}).option(`industry`,{type:`string`,description:`Filters results by industry.`}).option(`content-type`,{type:`string`,description:`Filters results by content type category.`}).option(`response-status`,{type:`string`,description:`Filters results by HTTP response status code (e.g. 200, 403, 404). Only [IANA-registered codes](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) are accepted.`}).option(`response-status-category`,{type:`string`,description:`Filters results by HTTP response status code category.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const K={command:`summary <dimension>`,describe:`Retrieves an aggregated summary of AI bots HTTP requests grouped by the specified dimension.`,builder:G,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,crawlPurpose:e[`crawl-purpose`],userAgent:e[`user-agent`],vertical:e.vertical,industry:e.industry,contentType:e[`content-type`],responseStatus:e[`response-status`],responseStatusCategory:e[`response-status-category`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai timeseries-groups summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.timeseriesGroups.summary(e.dimension,n)),{successLabel:`Loaded`})}};function q(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`crawl-purpose`,{type:`string`,description:`Filters results by bot crawl purpose.`}).option(`user-agent`,{type:`string`,description:`Filters results by user agent.`}).option(`industry`,{type:`string`,description:`Filters results by industry.`}).option(`vertical`,{type:`string`,description:`Filters results by vertical.`}).option(`content-type`,{type:`string`,description:`Filters results by content type category.`}).option(`response-status`,{type:`string`,description:`Filters results by HTTP response status code (e.g. 200, 403, 404). Only [IANA-registered codes](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) are accepted.`}).option(`response-status-category`,{type:`string`,description:`Filters results by HTTP response status code category.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const J={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of HTTP requests from AI bots, grouped by the specified dimension over time.`,builder:q,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,crawlPurpose:e[`crawl-purpose`],userAgent:e[`user-agent`],industry:e.industry,vertical:e.vertical,contentType:e[`content-type`],responseStatus:e[`response-status`],responseStatusCategory:e[`response-status-category`],limitPerGroup:e[`limit-per-group`],normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar ai timeseries-groups timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.timeseriesGroups.timeseriesGroups(e.dimension,n)),{successLabel:`Loaded`})}};function Y(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`crawl-purpose`,{type:`string`,description:`Filters results by bot crawl purpose.`}).option(`user-agent`,{type:`string`,description:`Filters results by user agent.`}).option(`industry`,{type:`string`,description:`Filters results by industry.`}).option(`vertical`,{type:`string`,description:`Filters results by vertical.`}).option(`content-type`,{type:`string`,description:`Filters results by content type category.`}).option(`response-status`,{type:`string`,description:`Filters results by HTTP response status code (e.g. 200, 403, 404). Only [IANA-registered codes](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) are accepted.`}).option(`response-status-category`,{type:`string`,description:`Filters results by HTTP response status code category.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const X={command:`timeseries`,describe:`Retrieves AI bots HTTP request volume over time.`,builder:Y,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,crawlPurpose:e[`crawl-purpose`],userAgent:e[`user-agent`],industry:e.industry,vertical:e.vertical,contentType:e[`content-type`],responseStatus:e[`response-status`],responseStatusCategory:e[`response-status-category`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai timeseries-groups timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.timeseriesGroups.timeseries(n)),{successLabel:`Loaded`})}};function Z(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Q={command:`user-agent`,describe:`Retrieves the distribution of traffic by AI user agent over time.`,builder:Z,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar ai timeseries-groups user-agent`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/timeseries_groups/user_agent`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ai.timeseriesGroups.userAgent(n)),{successLabel:`Loaded`})}},ne={command:`timeseries-groups`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(K).command(X).command(J).command(Q).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function re(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).option(`file`,{type:`string`,description:`Path to a file to upload as the request body`}).option(`files`,{type:`string`,description:`The files`})}const ie={command:`create`,describe:`Converts uploaded files into Markdown format using Workers AI.`,builder:re,handler:async r=>{if(r.dryRun){o({command:`cf radar ai to-markdown create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${n()??`<account-id>`}/ai/tomarkdown`,pathParams:{},bodyKind:`multipart`,body:{body:r.body,file:r.file,files:r.files}});return}let i=await t(r),d=r.local?u:await e(i);if(r.accountId=d,r.file!==void 0||r.body!==void 0||r.files!==void 0){let e=new FormData;if(r.file){let t=l(r.file);e.append(`file`,new Blob([t]),r.file.split(/[\\/]/).filter(Boolean).pop())}else r.body!==void 0&&e.append(`file`,r.body);if(r.files!==void 0){let t=typeof r.files==`string`?c(r.files,`files`,`text`):r.files;e.append(`files`,typeof t==`string`?t:JSON.stringify(t))}a(await s(`Creating`,async()=>i.post(`/accounts/${d}/ai/tomarkdown`,{body:e})),{successLabel:`Created`});return}if(r.body){let e=c(r.body,`body`,`binary`);a(await s(`Creating`,async()=>i.post(`/accounts/${d}/ai/tomarkdown`,{body:e,headers:{"Content-Type":`multipart/form-data`}})),{successLabel:`Created`});return}if(r.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}},ae={command:`to-markdown`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(ie).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},oe={command:`ai`,describe:`Operations for ai`,builder:e=>e.command(C).command(z).command(W).command(ne).command(ae).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function se(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`date-range`,{type:`string`,description:`Filters results by date range.`}).option(`date-start`,{type:`string`,description:`Start of the date range (inclusive).`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`data-source`,{type:`string`,description:`Filters results by data source.`,choices:[`ALL`,`AI_BOTS`,`AI_GATEWAY`,`BGP`,`BOTS`,`CONNECTION_ANOMALY`,`CT`,`DNS`,`DNS_MAGNITUDE`,`DNS_AS112`,`DOS`,`EMAIL_ROUTING`,`EMAIL_SECURITY`,`FW`,`FW_PG`,`HTTP`,`HTTP_CONTROL`,`HTTP_CRAWLER_REFERER`,`HTTP_ORIGINS`,`IQI`,`LEAKED_CREDENTIALS`,`NET`,`ROBOTS_TXT`,`SPEED`,`WORKERS_AI`]}).option(`event-type`,{type:`string`,description:`Filters results by event type.`,choices:[`EVENT`,`GENERAL`,`OUTAGE`,`PARTIAL_PROJECTION`,`PIPELINE`,`TRAFFIC_ANOMALY`]}).option(`asn`,{type:`number`,description:`Filters results by Autonomous System. Specify a single Autonomous System Number (ASN) as integer.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify an alpha-2 location code.`}).option(`origin`,{type:`string`,description:`Filters results by origin.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ce={command:`list`,describe:`Retrieves the latest annotations.`,builder:se,handler:async e=>{let n={limit:e.limit,offset:e.offset,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],dataSource:e[`data-source`],eventType:e[`event-type`],asn:e.asn,location:e.location,origin:e.origin,format:e.format};if(e.dryRun){o({command:`cf radar annotations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/annotations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.annotations.list(n)),{successLabel:`Loaded`})}};function le(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`date-range`,{type:`string`,description:`Filters results by date range.`}).option(`date-start`,{type:`string`,description:`Start of the date range (inclusive).`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`number`,description:`Filters results by Autonomous System. Specify a single Autonomous System Number (ASN) as integer.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify an alpha-2 location code.`}).option(`origin`,{type:`string`,description:`Filters results by origin.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ue={command:`get`,describe:`Retrieves the latest Internet outages and anomalies.`,builder:le,handler:async e=>{let n={limit:e.limit,offset:e.offset,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,origin:e.origin,format:e.format};if(e.dryRun){o({command:`cf radar annotations outages get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/annotations/outages`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.annotations.outages.get(n)),{successLabel:`Loaded`})}};function de(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`date-range`,{type:`string`,description:`Filters results by date range.`}).option(`date-start`,{type:`string`,description:`Start of the date range (inclusive).`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const fe={command:`locations`,describe:`Retrieves the number of outages by location.`,builder:de,handler:async e=>{let n={limit:e.limit,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],format:e.format};if(e.dryRun){o({command:`cf radar annotations outages locations`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/annotations/outages/locations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.annotations.outages.locations(n)),{successLabel:`Loaded`})}},pe={command:`outages`,describe:`Radar annotations marking significant Internet events (outages, cable cuts, etc.)`,builder:e=>e.command(ue).command(fe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},me={command:`annotations`,describe:`Radar annotations marking significant Internet events (outages, cable cuts, etc.)`,builder:e=>e.command(ce).command(pe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function he(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ge={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of AS112 queries by the specified dimension.`,builder:he,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar as112 summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function _e(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ve={command:`dnssec`,describe:`Retrieves the distribution of DNS queries to AS112 by DNSSEC (DNS Security Extensions) support.`,builder:_e,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],format:e.format};if(e.dryRun){o({command:`cf radar as112 summary dnssec`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/summary/dnssec`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.summary.dnssec(n)),{successLabel:`Loaded`})}};function ye(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const be={command:`edns`,describe:`Retrieves the distribution of DNS queries to AS112 by EDNS (Extension Mechanisms for DNS) support.`,builder:ye,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],format:e.format};if(e.dryRun){o({command:`cf radar as112 summary edns`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/summary/edns`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.summary.edns(n)),{successLabel:`Loaded`})}};function xe(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Se={command:`ip-version`,describe:`Retrieves the distribution of DNS queries to AS112 by IP version.`,builder:xe,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],format:e.format};if(e.dryRun){o({command:`cf radar as112 summary ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/summary/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.summary.ipVersion(n)),{successLabel:`Loaded`})}};function Ce(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const we={command:`protocol`,describe:`Retrieves the distribution of DNS queries to AS112 by protocol.`,builder:Ce,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],responseCode:e[`response-code`],format:e.format};if(e.dryRun){o({command:`cf radar as112 summary protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/summary/protocol`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.summary.protocol(n)),{successLabel:`Loaded`})}};function Te(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ee={command:`query-type`,describe:`Retrieves the distribution of DNS queries to AS112 by type.`,builder:Te,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,protocol:e.protocol,responseCode:e[`response-code`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar as112 summary query-type`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/summary/query_type`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.summary.queryType(n)),{successLabel:`Loaded`})}};function De(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Oe={command:`response-codes`,describe:`Retrieves the distribution of AS112 DNS requests classified by response code.`,builder:De,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar as112 summary response-codes`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/summary/response_codes`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.summary.responseCodes(n)),{successLabel:`Loaded`})}},ke={command:`summary`,describe:`AS112 DNS sinkhole statistics — reverse DNS query volumes for private address space`,builder:e=>e.command(ve).command(be).command(Se).command(we).command(Ee).command(Oe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ae(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const je={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of AS112 queries grouped by dimension over time.`,builder:Ae,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar as112 timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.timeseriesGroupsV2(e.dimension,n)),{successLabel:`Loaded`})}};function Me(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ne={command:`dnssec`,describe:`Retrieves the distribution of AS112 DNS queries by DNSSEC (DNS Security Extensions) support over time.`,builder:Me,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],format:e.format};if(e.dryRun){o({command:`cf radar as112 timeseries-groups dnssec`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries_groups/dnssec`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.timeseriesGroups.dnssec(n)),{successLabel:`Loaded`})}};function Pe(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Fe={command:`edns`,describe:`Retrieves the distribution of AS112 DNS queries by EDNS (Extension Mechanisms for DNS) support over time.`,builder:Pe,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],format:e.format};if(e.dryRun){o({command:`cf radar as112 timeseries-groups edns`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries_groups/edns`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.timeseriesGroups.edns(n)),{successLabel:`Loaded`})}};function Ie(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Le={command:`ip-version`,describe:`Retrieves the distribution of AS112 DNS queries by IP version over time.`,builder:Ie,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],format:e.format};if(e.dryRun){o({command:`cf radar as112 timeseries-groups ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries_groups/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function Re(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ze={command:`protocol`,describe:`Retrieves the distribution of AS112 DNS requests classified by protocol over time.`,builder:Re,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],responseCode:e[`response-code`],format:e.format};if(e.dryRun){o({command:`cf radar as112 timeseries-groups protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries_groups/protocol`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.timeseriesGroups.protocol(n)),{successLabel:`Loaded`})}};function Be(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ve={command:`query-type`,describe:`Retrieves the distribution of AS112 DNS queries by type over time.`,builder:Be,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,protocol:e.protocol,responseCode:e[`response-code`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar as112 timeseries-groups query-type`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries_groups/query_type`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.timeseriesGroups.queryType(n)),{successLabel:`Loaded`})}};function He(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ue={command:`response-codes`,describe:`Retrieves the distribution of AS112 DNS requests classified by response code over time.`,builder:He,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar as112 timeseries-groups response-codes`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries_groups/response_codes`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.timeseriesGroups.responseCodes(n)),{successLabel:`Loaded`})}},We={command:`timeseries-groups`,describe:`AS112 DNS sinkhole statistics — reverse DNS query volumes for private address space`,builder:e=>e.command(Ne).command(Fe).command(Le).command(ze).command(Ve).command(Ue).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ge(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ke={command:`timeseries`,describe:`Retrieves the AS112 DNS queries over time.`,builder:Ge,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],format:e.format};if(e.dryRun){o({command:`cf radar as112 timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.timeseries(n)),{successLabel:`Loaded`})}};function qe(e){return e.positional(`dnssec`,{type:`string`,description:`DNSSEC (DNS Security Extensions) status.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Je={command:`dnssec <dnssec>`,describe:`Retrieves the top locations of DNS queries to AS112 with DNSSEC (DNS Security Extensions) support.`,builder:qe,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar as112 top dnssec`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/top/locations/dnssec/${e.dnssec==null?`<dnssec>`:encodeURIComponent(String(e.dnssec))}`,pathParams:{dnssec:String(e.dnssec??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.top.dnssec(e.dnssec,n)),{successLabel:`Loaded`})}};function Ye(e){return e.positional(`edns`,{type:`string`,description:`EDNS (Extension Mechanisms for DNS) status.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Xe={command:`edns <edns>`,describe:`Retrieves the top locations of DNS queries to AS112 with EDNS (Extension Mechanisms for DNS) support.`,builder:Ye,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar as112 top edns`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/top/locations/edns/${e.edns==null?`<edns>`:encodeURIComponent(String(e.edns))}`,pathParams:{edns:String(e.edns??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.top.edns(e.edns,n)),{successLabel:`Loaded`})}};function Ze(e){return e.positional(`ip-version`,{type:`string`,description:`IP version.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Qe={command:`ip-version <ip-version>`,describe:`Retrieves the top locations of DNS queries to AS112 for an IP version.`,builder:Ze,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar as112 top ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/top/locations/ip_version/${e[`ip-version`]==null?`<ip-version>`:encodeURIComponent(String(e[`ip-version`]))}`,pathParams:{"ip-version":String(e[`ip-version`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.top.ipVersion(e[`ip-version`],n)),{successLabel:`Loaded`})}};function $e(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const et={command:`locations`,describe:`Retrieves the top locations by AS112 DNS queries.`,builder:$e,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar as112 top locations`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/top/locations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.as112.top.locations(n)),{successLabel:`Loaded`})}},tt={command:`top`,describe:`AS112 DNS sinkhole statistics — reverse DNS query volumes for private address space`,builder:e=>e.command(Je).command(Xe).command(Qe).command(et).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},nt={command:`as112`,describe:`AS112 DNS sinkhole statistics — reverse DNS query volumes for private address space`,builder:e=>e.command(ge).command(Ke).command(je).command(ke).command(We).command(tt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function rt(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const it={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of layer 3 attacks by the specified dimension.`,builder:rt,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,direction:e.direction,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function at(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ot={command:`bitrate`,describe:`Retrieves the distribution of layer 3 attacks by bitrate.`,builder:at,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,direction:e.direction,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 summary bitrate`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/summary/bitrate`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.summary.bitrate(n)),{successLabel:`Loaded`})}};function st(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ct={command:`duration`,describe:`Retrieves the distribution of layer 3 attacks by duration.`,builder:st,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,direction:e.direction,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 summary duration`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/summary/duration`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.summary.duration(n)),{successLabel:`Loaded`})}};function lt(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ut={command:`industry`,describe:`Retrieves the distribution of layer 3 attacks by targeted industry.`,builder:lt,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,direction:e.direction,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 summary industry`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/summary/industry`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.summary.industry(n)),{successLabel:`Loaded`})}};function dt(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ft={command:`ip-version`,describe:`Retrieves the distribution of layer 3 attacks by IP version.`,builder:dt,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,protocol:e.protocol,direction:e.direction,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 summary ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/summary/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.summary.ipVersion(n)),{successLabel:`Loaded`})}};function pt(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const mt={command:`protocol`,describe:`Retrieves the distribution of layer 3 attacks by protocol.`,builder:pt,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],direction:e.direction,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 summary protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/summary/protocol`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.summary.protocol(n)),{successLabel:`Loaded`})}};function ht(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const gt={command:`vector`,describe:`Retrieves the distribution of layer 3 attacks by vector.`,builder:ht,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,direction:e.direction,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 summary vector`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/summary/vector`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.summary.vector(n)),{successLabel:`Loaded`})}};function _t(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const vt={command:`vertical`,describe:`Retrieves the distribution of layer 3 attacks by targeted vertical.`,builder:_t,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,direction:e.direction,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 summary vertical`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/summary/vertical`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.summary.vertical(n)),{successLabel:`Loaded`})}},yt={command:`summary`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(ot).command(ct).command(ut).command(ft).command(mt).command(gt).command(vt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function bt(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const xt={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of layer 3 attacks grouped by dimension over time.`,builder:bt,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,normalization:e.normalization,direction:e.direction,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.timeseriesGroupsV2(e.dimension,n)),{successLabel:`Loaded`})}};function St(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ct={command:`bitrate`,describe:`Retrieves the distribution of layer 3 attacks by bitrate over time.`,builder:St,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,normalization:e.normalization,direction:e.direction,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 timeseries-groups bitrate`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries_groups/bitrate`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.timeseriesGroups.bitrate(n)),{successLabel:`Loaded`})}};function wt(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Tt={command:`duration`,describe:`Retrieves the distribution of layer 3 attacks by duration over time.`,builder:wt,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,normalization:e.normalization,direction:e.direction,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 timeseries-groups duration`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries_groups/duration`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.timeseriesGroups.duration(n)),{successLabel:`Loaded`})}};function Et(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Dt={command:`industry`,describe:`Retrieves the distribution of layer 3 attacks by targeted industry over time.`,builder:Et,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,normalization:e.normalization,direction:e.direction,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 timeseries-groups industry`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries_groups/industry`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.timeseriesGroups.industry(n)),{successLabel:`Loaded`})}};function Ot(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const kt={command:`ip-version`,describe:`Retrieves the distribution of layer 3 attacks by IP version over time.`,builder:Ot,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,protocol:e.protocol,normalization:e.normalization,direction:e.direction,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 timeseries-groups ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries_groups/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function At(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const jt={command:`protocol`,describe:`Retrieves the distribution of layer 3 attacks by protocol over time.`,builder:At,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],normalization:e.normalization,direction:e.direction,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 timeseries-groups protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries_groups/protocol`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.timeseriesGroups.protocol(n)),{successLabel:`Loaded`})}};function Mt(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Nt={command:`vector`,describe:`Retrieves the distribution of layer 3 attacks by vector over time.`,builder:Mt,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,normalization:e.normalization,direction:e.direction,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 timeseries-groups vector`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries_groups/vector`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.timeseriesGroups.vector(n)),{successLabel:`Loaded`})}};function Pt(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ft={command:`vertical`,describe:`Retrieves the distribution of layer 3 attacks by targeted vertical over time.`,builder:Pt,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,normalization:e.normalization,direction:e.direction,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 timeseries-groups vertical`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries_groups/vertical`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.timeseriesGroups.vertical(n)),{successLabel:`Loaded`})}},It={command:`timeseries-groups`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(Ct).command(Tt).command(Dt).command(kt).command(jt).command(Nt).command(Ft).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Lt(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE_CHANGE`,`MIN0_MAX`]}).option(`metric`,{type:`string`,description:`Measurement units, eg. bytes.`,choices:[`BYTES`,`BYTES_OLD`]}).option(`direction`,{type:`string`,description:"Specifies whether the `location` filter applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Rt={command:`timeseries`,describe:`Retrieves layer 3 attacks over time.`,builder:Lt,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,normalization:e.normalization,metric:e.metric,direction:e.direction,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.timeseries(n)),{successLabel:`Loaded`})}};function zt(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`limit-direction`,{type:`string`,description:"Specifies whether the `limitPerLocation` applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-location`,{type:`number`,description:"Limits the number of attacks per origin/target (refer to `limitDirection` parameter) location."}).option(`magnitude`,{type:`string`,description:`Orders results based on attack magnitude, defined by total mitigated bytes or total mitigated attacks.`,choices:[`MITIGATED_BYTES`,`MITIGATED_ATTACKS`]}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Bt={command:`attacks`,describe:`Retrieves the top layer 3 attacks from origin to target location. Values are a percentage out of the total layer 3 attacks (with billing country). You can optionally limit the number of attacks by origin/target location (useful if all the top attacks are from or to the same location).`,builder:zt,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,limitDirection:e[`limit-direction`],limitPerLocation:e[`limit-per-location`],magnitude:e.magnitude,normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 top attacks`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/top/attacks`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.top.attacks(n)),{successLabel:`Loaded`})}};function Vt(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ht={command:`industry`,describe:`This endpoint is deprecated. To continue getting this data, switch to the summary by industry endpoint.`,builder:Vt,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 top industry`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/top/industry`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.top.industry(n)),{successLabel:`Loaded`})}};function Ut(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Wt={command:`origin`,describe:`Retrieves the origin locations of layer 3 attacks.`,builder:Ut,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 top locations origin`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/top/locations/origin`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.top.locations.origin(n)),{successLabel:`Loaded`})}};function Gt(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Kt={command:`target`,describe:`Retrieves the target locations of layer 3 attacks.`,builder:Gt,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 top locations target`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/top/locations/target`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.top.locations.target(n)),{successLabel:`Loaded`})}},qt={command:`locations`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(Wt).command(Kt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Jt(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`protocol`,{type:`string`,description:`Filters the results by layer 3/4 protocol.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Yt={command:`vertical`,describe:`This endpoint is deprecated. To continue getting this data, switch to the summary by vertical endpoint.`,builder:Jt,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],protocol:e.protocol,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer3 top vertical`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/top/vertical`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer3.top.vertical(n)),{successLabel:`Loaded`})}},Xt={command:`top`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(Bt).command(Ht).command(Yt).command(qt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Zt={command:`layer3`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(it).command(Rt).command(xt).command(yt).command(It).command(Xt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Qt(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const $t={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of layer 7 attacks by the specified dimension.`,builder:Qt,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function en(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const tn={command:`http-method`,describe:`Retrieves the distribution of layer 7 attacks by HTTP method.`,builder:en,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],mitigationProduct:e[`mitigation-product`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 summary http-method`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/summary/http_method`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.summary.httpMethod(n)),{successLabel:`Loaded`})}};function nn(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const rn={command:`http-version`,describe:`Retrieves the distribution of layer 7 attacks by HTTP version.`,builder:nn,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 summary http-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/summary/http_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.summary.httpVersion(n)),{successLabel:`Loaded`})}};function an(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const on={command:`industry`,describe:`Retrieves the distribution of layer 7 attacks by targeted industry.`,builder:an,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 summary industry`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/summary/industry`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.summary.industry(n)),{successLabel:`Loaded`})}};function sn(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const cn={command:`ip-version`,describe:`Retrieves the distribution of layer 7 attacks by IP version.`,builder:sn,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 summary ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/summary/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.summary.ipVersion(n)),{successLabel:`Loaded`})}};function ln(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const un={command:`managed-rules`,describe:`Retrieves the distribution of layer 7 attacks by managed rules.`,builder:ln,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 summary managed-rules`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/summary/managed_rules`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.summary.managedRules(n)),{successLabel:`Loaded`})}};function dn(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const fn={command:`mitigation-product`,describe:`Retrieves the distribution of layer 7 attacks by mitigation product.`,builder:dn,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 summary mitigation-product`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/summary/mitigation_product`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.summary.mitigationProduct(n)),{successLabel:`Loaded`})}};function pn(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const mn={command:`vertical`,describe:`Retrieves the distribution of layer 7 attacks by targeted vertical.`,builder:pn,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 summary vertical`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/summary/vertical`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.summary.vertical(n)),{successLabel:`Loaded`})}},hn={command:`summary`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(tn).command(rn).command(on).command(cn).command(un).command(fn).command(mn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function gn(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const _n={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of layer 7 attacks grouped by dimension over time.`,builder:gn,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],normalization:e.normalization,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.timeseriesGroupsV2(e.dimension,n)),{successLabel:`Loaded`})}};function vn(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const yn={command:`http-method`,describe:`Retrieves the distribution of layer 7 attacks by HTTP method over time.`,builder:vn,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],mitigationProduct:e[`mitigation-product`],normalization:e.normalization,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 timeseries-groups http-method`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries_groups/http_method`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.timeseriesGroups.httpMethod(n)),{successLabel:`Loaded`})}};function bn(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const xn={command:`http-version`,describe:`Retrieves the distribution of layer 7 attacks by HTTP version over time.`,builder:bn,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 timeseries-groups http-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries_groups/http_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.timeseriesGroups.httpVersion(n)),{successLabel:`Loaded`})}};function Sn(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Cn={command:`industry`,describe:`Retrieves the distribution of layer 7 attacks by targeted industry over time.`,builder:Sn,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],normalization:e.normalization,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 timeseries-groups industry`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries_groups/industry`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.timeseriesGroups.industry(n)),{successLabel:`Loaded`})}};function wn(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Tn={command:`ip-version`,describe:`Retrieves the distribution of layer 7 attacks by IP version used over time.`,builder:wn,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 timeseries-groups ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries_groups/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function En(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Dn={command:`managed-rules`,describe:`Retrieves the distribution of layer 7 attacks by managed rules over time.`,builder:En,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],normalization:e.normalization,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 timeseries-groups managed-rules`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries_groups/managed_rules`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.timeseriesGroups.managedRules(n)),{successLabel:`Loaded`})}};function On(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const kn={command:`mitigation-product`,describe:`Retrieves the distribution of layer 7 attacks by mitigation product over time.`,builder:On,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],normalization:e.normalization,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 timeseries-groups mitigation-product`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries_groups/mitigation_product`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.timeseriesGroups.mitigationProduct(n)),{successLabel:`Loaded`})}};function An(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const jn={command:`vertical`,describe:`Retrieves the distribution of layer 7 attacks by targeted vertical over time.`,builder:An,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],normalization:e.normalization,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 timeseries-groups vertical`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries_groups/vertical`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.timeseriesGroups.vertical(n)),{successLabel:`Loaded`})}},Mn={command:`timeseries-groups`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(yn).command(xn).command(Cn).command(Tn).command(Dn).command(kn).command(jn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Nn(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE_CHANGE`,`MIN0_MAX`]}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Pn={command:`timeseries`,describe:`Retrieves layer 7 attacks over time.`,builder:Nn,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,normalization:e.normalization,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.timeseries(n)),{successLabel:`Loaded`})}};function Fn(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const In={command:`origin`,describe:`Retrieves the top origin autonomous systems of layer 7 attacks. Values are percentages of the total layer 7 attacks, with the origin autonomous systems determined by the client IP address.`,builder:Fn,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 top ases origin`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/top/ases/origin`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.top.ases.origin(n)),{successLabel:`Loaded`})}},Ln={command:`ases`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(In).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Rn(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`limit-direction`,{type:`string`,description:"Specifies whether the `limitPerLocation` applies to the source or target location.",choices:[`ORIGIN`,`TARGET`]}).option(`limit-per-location`,{type:`number`,description:"Limits the number of attacks per origin/target (refer to `limitDirection` parameter) location."}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const zn={command:`attacks`,describe:`Retrieves the top attacks from origin to target location. Values are percentages of the total layer 7 attacks (with billing country). The attack magnitude can be defined by the number of mitigated requests or by the number of zones affected. You can optionally limit the number of attacks by origin/target location (useful if all the top attacks are from or to the same location).`,builder:Rn,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,mitigationProduct:e[`mitigation-product`],limitDirection:e[`limit-direction`],limitPerLocation:e[`limit-per-location`],normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 top attacks`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/top/attacks`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.top.attacks(n)),{successLabel:`Loaded`})}};function Bn(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Vn={command:`industry`,describe:`This endpoint is deprecated. To continue getting this data, switch to the summary by industry endpoint.`,builder:Bn,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 top industry`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/top/industry`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.top.industry(n)),{successLabel:`Loaded`})}};function Hn(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Un={command:`origin`,describe:`Retrieves the top origin locations of layer 7 attacks. Values are percentages of the total layer 7 attacks, with the origin location determined by the client IP address.`,builder:Hn,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 top locations origin`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/top/locations/origin`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.top.locations.origin(n)),{successLabel:`Loaded`})}};function Wn(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Gn={command:`target`,describe:`Retrieves the top target locations of and by layer 7 attacks. Values are a percentage out of the total layer 7 attacks. The target location is determined by the attacked zone's billing country, when available.`,builder:Wn,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],continent:e.continent,mitigationProduct:e[`mitigation-product`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 top locations target`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/top/locations/target`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.top.locations.target(n)),{successLabel:`Loaded`})}},Kn={command:`locations`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(Un).command(Gn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function qn(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`http-method`,{type:`string`,description:`Filters results by HTTP method.`}).option(`mitigation-product`,{type:`string`,description:`Filters the results by layer 7 mitigation product.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Jn={command:`vertical`,describe:`This endpoint is deprecated. To continue getting this data, switch to the summary by vertical endpoint.`,builder:qn,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,ipVersion:e[`ip-version`],httpVersion:e[`http-version`],httpMethod:e[`http-method`],mitigationProduct:e[`mitigation-product`],format:e.format};if(e.dryRun){o({command:`cf radar attacks layer7 top vertical`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/top/vertical`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.attacks.layer7.top.vertical(n)),{successLabel:`Loaded`})}},Yn={command:`top`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(zn).command(Vn).command(Jn).command(Ln).command(Kn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Xn={command:`layer7`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command($t).command(Pn).command(_n).command(hn).command(Mn).command(Yn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Zn={command:`attacks`,describe:`Operations for attacks`,builder:e=>e.command(Zt).command(Xn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Qn(e){return e.option(`page`,{type:`number`,description:`Current page number, starting from 1.`}).option(`per-page`,{type:`number`,description:`Number of entries per page.`}).option(`event-id`,{type:`number`,description:`The unique identifier of a event.`}).option(`hijacker-asn`,{type:`number`,description:`The potential hijacker AS of a BGP hijack event.`}).option(`victim-asn`,{type:`number`,description:`The potential victim AS of a BGP hijack event.`}).option(`involved-asn`,{type:`number`,description:`The potential hijacker or victim AS of a BGP hijack event.`}).option(`involved-country`,{type:`string`,description:`The country code of the potential hijacker or victim AS of a BGP hijack event.`}).option(`prefix`,{type:`string`,description:`Prefix`}).option(`min-confidence`,{type:`number`,description:`Filters events by minimum confidence score (1-4 low, 5-7 mid, 8+ high).`}).option(`max-confidence`,{type:`number`,description:`Filters events by maximum confidence score (1-4 low, 5-7 mid, 8+ high).`}).option(`date-range`,{type:`string`,description:`Filters results by date range.`}).option(`date-start`,{type:`string`,description:`Start of the date range (inclusive).`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`sort-by`,{type:`string`,description:`Sorts results by the specified field.`,choices:[`ID`,`TIME`,`CONFIDENCE`]}).option(`sort-order`,{type:`string`,description:`Sort order.`,choices:[`ASC`,`DESC`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const $n={command:`list`,describe:`Retrieves the BGP hijack events.`,builder:Qn,handler:async e=>{let n={page:e.page,per_page:e[`per-page`],eventId:e[`event-id`],hijackerAsn:e[`hijacker-asn`],victimAsn:e[`victim-asn`],involvedAsn:e[`involved-asn`],involvedCountry:e[`involved-country`],prefix:e.prefix,minConfidence:e[`min-confidence`],maxConfidence:e[`max-confidence`],dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],sortBy:e[`sort-by`],sortOrder:e[`sort-order`],format:e.format};if(e.dryRun){o({command:`cf radar bgp hijacks events list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/hijacks/events`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.hijacks.events.list(n)),{successLabel:`Loaded`})}},er={command:`events`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command($n).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},tr={command:`hijacks`,describe:`Operations for bgp.hijacks`,builder:e=>e.command(er).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function nr(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:`Filters results by location. Specify a comma-separated list of alpha-2 location codes.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`include-delay`,{type:`boolean`,description:`Includes data delay meta information.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const rr={command:`timeseries`,describe:`Retrieves time series data for the announced IP space count, represented as the number of IPv4 /24s and IPv6 /48s, for a given ASN.`,builder:nr,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,ipVersion:e[`ip-version`],includeDelay:e[`include-delay`],format:e.format};if(e.dryRun){o({command:`cf radar bgp ips timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/ips/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.ips.timeseries(n)),{successLabel:`Loaded`})}},ir={command:`ips`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(rr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ar(e){return e.option(`page`,{type:`number`,description:`Current page number, starting from 1.`}).option(`per-page`,{type:`number`,description:`Number of entries per page.`}).option(`event-id`,{type:`number`,description:`The unique identifier of a event.`}).option(`leak-asn`,{type:`number`,description:`The leaking AS of a route leak event.`}).option(`involved-asn`,{type:`number`,description:`ASN that is causing or affected by a route leak event.`}).option(`involved-country`,{type:`string`,description:`Country code of a involved ASN in a route leak event.`}).option(`date-range`,{type:`string`,description:`Filters results by date range.`}).option(`date-start`,{type:`string`,description:`Start of the date range (inclusive).`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`sort-by`,{type:`string`,description:`Sorts results by the specified field.`,choices:[`ID`,`LEAKS`,`PEERS`,`PREFIXES`,`ORIGINS`,`TIME`]}).option(`sort-order`,{type:`string`,description:`Sort order.`,choices:[`ASC`,`DESC`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const or={command:`list`,describe:`Retrieves the BGP route leak events.`,builder:ar,handler:async e=>{let n={page:e.page,per_page:e[`per-page`],eventId:e[`event-id`],leakAsn:e[`leak-asn`],involvedAsn:e[`involved-asn`],involvedCountry:e[`involved-country`],dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],sortBy:e[`sort-by`],sortOrder:e[`sort-order`],format:e.format};if(e.dryRun){o({command:`cf radar bgp leaks events list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/leaks/events`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.leaks.events.list(n)),{successLabel:`Loaded`})}},sr={command:`events`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(or).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},cr={command:`leaks`,describe:`Operations for bgp.leaks`,builder:e=>e.command(sr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function lr(e){return e.option(`location`,{type:`string`,description:`Filters results by location. Specify an alpha-2 location code.`}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`sort-by`,{type:`string`,description:`Sorts results by the specified field.`,choices:[`cone`,`pfxs`,`ipv4`,`ipv6`,`rpki_valid`,`rpki_invalid`,`rpki_unknown`]}).option(`sort-order`,{type:`string`,description:`Sort order.`,choices:[`ASC`,`DESC`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ur={command:`ases`,describe:`Retrieves all ASes in the current global routing tables with routing statistics.`,builder:lr,handler:async e=>{let n={location:e.location,limit:e.limit,sortBy:e[`sort-by`],sortOrder:e[`sort-order`],format:e.format};if(e.dryRun){o({command:`cf radar bgp routes ases`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/routes/ases`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.routes.ases(n)),{successLabel:`Loaded`})}};function dr(e){return e.option(`origin`,{type:`number`,description:`Lookup MOASes originated by the given ASN.`}).option(`prefix`,{type:`string`,description:`Prefix`}).option(`invalid-only`,{type:`boolean`,description:`Lookup only RPKI invalid MOASes.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const fr={command:`moas`,describe:`Retrieves all Multi-Origin AS (MOAS) prefixes in the global routing tables.`,builder:dr,handler:async e=>{let n={origin:e.origin,prefix:e.prefix,invalid_only:e[`invalid-only`],format:e.format};if(e.dryRun){o({command:`cf radar bgp routes moas`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/routes/moas`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.routes.moas(n)),{successLabel:`Loaded`})}};function pr(e){return e.option(`prefix`,{type:`string`,description:`Prefix`}).option(`origin`,{type:`number`,description:`Lookup prefixes originated by the given ASN.`}).option(`rpki-status`,{type:`string`,description:`Return only results with matching rpki status: valid, invalid or unknown.`,choices:[`VALID`,`INVALID`,`UNKNOWN`]}).option(`longest-prefix-match`,{type:`boolean`,description:`Return only results with the longest prefix match for the given prefix. For example, specify a /32 prefix to lookup the origin ASN for an IPv4 address.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const mr={command:`pfx2as`,describe:`Retrieves the prefix-to-ASN mapping from global routing tables.`,builder:pr,handler:async e=>{let n={prefix:e.prefix,origin:e.origin,rpkiStatus:e[`rpki-status`],longestPrefixMatch:e[`longest-prefix-match`],format:e.format};if(e.dryRun){o({command:`cf radar bgp routes pfx2as`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/routes/pfx2as`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.routes.pfx2as(n)),{successLabel:`Loaded`})}};function hr(e){return e.option(`prefix`,{type:`string`,description:`Prefix`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const gr={command:`realtime`,describe:`Retrieves real-time BGP routes for a prefix, using public real-time data collectors (RouteViews and RIPE RIS).`,builder:hr,handler:async e=>{let n={prefix:e.prefix,format:e.format};if(e.dryRun){o({command:`cf radar bgp routes realtime`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/routes/realtime`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.routes.realtime(n)),{successLabel:`Loaded`})}};function _r(e){return e.option(`asn`,{type:`number`,description:`Filters results by Autonomous System. Specify a single Autonomous System Number (ASN) as integer.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify an alpha-2 location code.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const vr={command:`stats`,describe:`Retrieves the BGP routing table stats.`,builder:_r,handler:async e=>{let n={asn:e.asn,location:e.location,format:e.format};if(e.dryRun){o({command:`cf radar bgp routes stats`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/routes/stats`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.routes.stats(n)),{successLabel:`Loaded`})}},yr={command:`routes`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(ur).command(fr).command(mr).command(gr).command(vr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function br(e){return e.option(`date-start`,{type:`string`,description:`Start of the date range (inclusive).`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`number`,description:`Filter changes involving this ASN (as customer or provider).`}).option(`include-asn-info`,{type:`boolean`,description:`Include ASN metadata (name, country) in response.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const xr={command:`changes`,describe:`Retrieves ASPA (Autonomous System Provider Authorization) changes over time. Returns daily aggregated changes including additions, removals, and modifications of ASPA objects.`,builder:br,handler:async e=>{let n={dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,includeAsnInfo:e[`include-asn-info`],format:e.format};if(e.dryRun){o({command:`cf radar bgp rpki aspa changes`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/rpki/aspa/changes`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.rpki.aspa.changes(n)),{successLabel:`Loaded`})}};function Sr(e){return e.option(`customer-asn`,{type:`number`,description:`Filter by customer ASN (the ASN publishing the ASPA object).`}).option(`provider-asn`,{type:`number`,description:`Filter by provider ASN (an authorized upstream provider in ASPA objects).`}).option(`date`,{type:`string`,description:`Filters results by the specified datetime (ISO 8601).`}).option(`include-asn-info`,{type:`boolean`,description:`Include ASN metadata (name, country) in response.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Cr={command:`snapshot`,describe:`Retrieves current or historical ASPA (Autonomous System Provider Authorization) objects. ASPA objects define which ASNs are authorized upstream providers for a customer ASN.`,builder:Sr,handler:async e=>{let n={customerAsn:e[`customer-asn`],providerAsn:e[`provider-asn`],date:e.date,includeAsnInfo:e[`include-asn-info`],format:e.format};if(e.dryRun){o({command:`cf radar bgp rpki aspa snapshot`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/rpki/aspa/snapshot`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.rpki.aspa.snapshot(n)),{successLabel:`Loaded`})}};function wr(e){return e.option(`date-start`,{type:`string`,description:`Start of the date range (inclusive).`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`rir`,{type:`string`,description:`Filter by Regional Internet Registry (RIR). Multiple RIRs generate multiple series.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify a comma-separated list of alpha-2 location codes.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Tr={command:`timeseries`,describe:`Retrieves ASPA (Autonomous System Provider Authorization) object count over time. Supports filtering by RIR or location (country code) to generate multiple named series. If no RIR or location filter is specified, returns total count.`,builder:wr,handler:async e=>{let n={dateStart:e[`date-start`],dateEnd:e[`date-end`],name:e.name,rir:e.rir,location:e.location,format:e.format};if(e.dryRun){o({command:`cf radar bgp rpki aspa timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/rpki/aspa/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.rpki.aspa.timeseries(n)),{successLabel:`Loaded`})}},Er={command:`aspa`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(xr).command(Cr).command(Tr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Dr={command:`rpki`,describe:`Operations for bgp.rpki`,builder:e=>e.command(Er).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Or(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`prefix`,{type:`string`,description:`Filters results by BGP network prefix.`}).option(`update-type`,{type:`string`,description:`Filters results by BGP update type.`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const kr={command:`timeseries`,describe:`Retrieves BGP updates over time. When requesting updates for an autonomous system, only BGP updates of type announcement are returned.`,builder:Or,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],prefix:e.prefix,updateType:e[`update-type`],asn:e.asn,format:e.format};if(e.dryRun){o({command:`cf radar bgp timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.timeseries(n)),{successLabel:`Loaded`})}};function Ar(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`prefix`,{type:`string`,description:`Filters results by BGP network prefix.`}).option(`update-type`,{type:`string`,description:`Filters results by BGP update type.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const jr={command:`get`,describe:`Retrieves the top autonomous systems by BGP updates (announcements only).`,builder:Ar,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,prefix:e.prefix,updateType:e[`update-type`],format:e.format};if(e.dryRun){o({command:`cf radar bgp top ases get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/top/ases`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.top.ases.get(n)),{successLabel:`Loaded`})}};function Mr(e){return e.option(`country`,{type:`string`,description:`Alpha-2 country code.`}).option(`limit`,{type:`number`,description:`Maximum number of ASes to return.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Nr={command:`prefixes`,describe:`Retrieves the full list of autonomous systems on the global routing table ordered by announced prefixes count. The data comes from public BGP MRT data archives and updates every 2 hours.`,builder:Mr,handler:async e=>{let n={country:e.country,limit:e.limit,format:e.format};if(e.dryRun){o({command:`cf radar bgp top ases prefixes`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/top/ases/prefixes`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.top.ases.prefixes(n)),{successLabel:`Loaded`})}},Pr={command:`ases`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(jr).command(Nr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Fr(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`update-type`,{type:`string`,description:`Filters results by BGP update type.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ir={command:`prefixes`,describe:`Retrieves the top network prefixes by BGP updates.`,builder:Fr,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,updateType:e[`update-type`],format:e.format};if(e.dryRun){o({command:`cf radar bgp top prefixes`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/top/prefixes`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bgp.top.prefixes(n)),{successLabel:`Loaded`})}},Lr={command:`top`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(Ir).command(Pr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Rr={command:`bgp`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(kr).command(tr).command(ir).command(cr).command(yr).command(Dr).command(Lr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function zr(e){return e.positional(`bot-slug`,{type:`string`,description:`Bot slug.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Br={command:`get <bot-slug>`,describe:`Retrieves the requested bot information.`,builder:zr,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar bots get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/${e[`bot-slug`]==null?`<bot-slug>`:encodeURIComponent(String(e[`bot-slug`]))}`,pathParams:{"bot-slug":String(e[`bot-slug`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bots.get(e[`bot-slug`],n)),{successLabel:`Loaded`})}};function Vr(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`bot-category`,{type:`string`,description:`Filters results by bot category.`,choices:[`SEARCH_ENGINE_CRAWLER`,`SEARCH_ENGINE_OPTIMIZATION`,`MONITORING_AND_ANALYTICS`,`ADVERTISING_AND_MARKETING`,`SOCIAL_MEDIA_MARKETING`,`PAGE_PREVIEW`,`ACADEMIC_RESEARCH`,`SECURITY`,`ACCESSIBILITY`,`WEBHOOKS`,`FEED_FETCHER`,`AI_CRAWLER`,`AGGREGATOR`,`AI_ASSISTANT`,`AI_SEARCH`,`ARCHIVER`]}).option(`bot-operator`,{type:`string`,description:`Filters results by bot operator.`}).option(`kind`,{type:`string`,description:`Filters results by bot kind.`,choices:[`AGENT`,`BOT`]}).option(`bot-verification-status`,{type:`string`,description:`Filters results by bot verification status.`,choices:[`VERIFIED`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Hr={command:`list`,describe:`Retrieves a list of bots.`,builder:Vr,handler:async e=>{let n={limit:e.limit,offset:e.offset,botCategory:e[`bot-category`],botOperator:e[`bot-operator`],kind:e.kind,botVerificationStatus:e[`bot-verification-status`],format:e.format};if(e.dryRun){o({command:`cf radar bots list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bots.list(n)),{successLabel:`Loaded`})}};function Ur(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`bot`,{type:`string`,description:`Filters results by bot name.`}).option(`bot-operator`,{type:`string`,description:`Filters results by bot operator.`}).option(`bot-category`,{type:`string`,description:`Filters results by bot category.`}).option(`bot-kind`,{type:`string`,description:`Filters results by bot kind.`}).option(`bot-verification-status`,{type:`string`,description:`Filters results by bot verification status (Verified vs. Unverified).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Wr={command:`summary <dimension>`,describe:`Retrieves an aggregated summary of bots HTTP requests grouped by the specified dimension.`,builder:Ur,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,limitPerGroup:e[`limit-per-group`],bot:e.bot,botOperator:e[`bot-operator`],botCategory:e[`bot-category`],botKind:e[`bot-kind`],botVerificationStatus:e[`bot-verification-status`],format:e.format};if(e.dryRun){o({command:`cf radar bots summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bots.summary(e.dimension,n)),{successLabel:`Loaded`})}};function Gr(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`bot`,{type:`string`,description:`Filters results by bot name.`}).option(`bot-operator`,{type:`string`,description:`Filters results by bot operator.`}).option(`bot-category`,{type:`string`,description:`Filters results by bot category.`}).option(`bot-kind`,{type:`string`,description:`Filters results by bot kind.`}).option(`bot-verification-status`,{type:`string`,description:`Filters results by bot verification status (Verified vs. Unverified).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Kr={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of HTTP requests from bots, grouped by the specified dimension over time.`,builder:Gr,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,limitPerGroup:e[`limit-per-group`],bot:e.bot,botOperator:e[`bot-operator`],botCategory:e[`bot-category`],botKind:e[`bot-kind`],botVerificationStatus:e[`bot-verification-status`],format:e.format};if(e.dryRun){o({command:`cf radar bots timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bots.timeseriesGroups(e.dimension,n)),{successLabel:`Loaded`})}};function qr(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`bot`,{type:`string`,description:`Filters results by bot name.`}).option(`bot-operator`,{type:`string`,description:`Filters results by bot operator.`}).option(`bot-category`,{type:`string`,description:`Filters results by bot category.`}).option(`bot-kind`,{type:`string`,description:`Filters results by bot kind.`}).option(`bot-verification-status`,{type:`string`,description:`Filters results by bot verification status (Verified vs. Unverified).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Jr={command:`timeseries`,describe:`Retrieves bots HTTP request volume over time.`,builder:qr,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,bot:e.bot,botOperator:e[`bot-operator`],botCategory:e[`bot-category`],botKind:e[`bot-kind`],botVerificationStatus:e[`bot-verification-status`],format:e.format};if(e.dryRun){o({command:`cf radar bots timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bots.timeseries(n)),{successLabel:`Loaded`})}};function Yr(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`bot-operator`,{type:`string`,description:`Filters results by bot operator.`}).option(`vertical`,{type:`string`,description:`Filters results by vertical.`}).option(`industry`,{type:`string`,description:`Filters results by industry.`}).option(`client-type`,{type:`string`,description:`Filters results by agent type.`}).option(`response-status`,{type:`string`,description:`Filters results by HTTP response status code (e.g. 200, 403, 404). Only [IANA-registered codes](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) are accepted.`}).option(`response-status-category`,{type:`string`,description:`Filters results by HTTP response status code category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Xr={command:`summary <dimension>`,describe:`Retrieves an aggregated summary of HTTP requests from crawlers, grouped by the specified dimension.`,builder:Yr,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],botOperator:e[`bot-operator`],vertical:e.vertical,industry:e.industry,clientType:e[`client-type`],responseStatus:e[`response-status`],responseStatusCategory:e[`response-status-category`],format:e.format};if(e.dryRun){o({command:`cf radar bots web-crawlers summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/crawlers/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bots.webCrawlers.summary(e.dimension,n)),{successLabel:`Loaded`})}};function Zr(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`bot-operator`,{type:`string`,description:`Filters results by bot operator.`}).option(`vertical`,{type:`string`,description:`Filters results by vertical.`}).option(`industry`,{type:`string`,description:`Filters results by industry.`}).option(`client-type`,{type:`string`,description:`Filters results by agent type.`}).option(`response-status`,{type:`string`,description:`Filters results by HTTP response status code (e.g. 200, 403, 404). Only [IANA-registered codes](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) are accepted.`}).option(`response-status-category`,{type:`string`,description:`Filters results by HTTP response status code category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Qr={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of HTTP requests from crawlers, grouped by the specified dimension over time.`,builder:Zr,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],botOperator:e[`bot-operator`],vertical:e.vertical,industry:e.industry,clientType:e[`client-type`],responseStatus:e[`response-status`],responseStatusCategory:e[`response-status-category`],format:e.format};if(e.dryRun){o({command:`cf radar bots web-crawlers timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/crawlers/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.bots.webCrawlers.timeseriesGroups(e.dimension,n)),{successLabel:`Loaded`})}},$r={command:`web-crawlers`,describe:`Internet-wide bot traffic trends, categories, and distribution statistics`,builder:e=>e.command(Xr).command(Qr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ei={command:`bots`,describe:`Internet-wide bot traffic trends, categories, and distribution statistics`,builder:e=>e.command(Br).command(Hr).command(Wr).command(Jr).command(Kr).command($r).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ti(e){return e.positional(`ca-slug`,{type:`string`,description:`Certificate authority SHA256 fingerprint.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ni={command:`get <ca-slug>`,describe:`Retrieves the requested CA information.`,builder:ti,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar ct authorities get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/authorities/${e[`ca-slug`]==null?`<ca-slug>`:encodeURIComponent(String(e[`ca-slug`]))}`,pathParams:{"ca-slug":String(e[`ca-slug`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ct.authorities.get(e[`ca-slug`],n)),{successLabel:`Loaded`})}};function ri(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ii={command:`list`,describe:`Retrieves a list of certificate authorities.`,builder:ri,handler:async e=>{let n={limit:e.limit,offset:e.offset,format:e.format};if(e.dryRun){o({command:`cf radar ct authorities list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/authorities`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ct.authorities.list(n)),{successLabel:`Loaded`})}},ai={command:`authorities`,describe:`Certificate Transparency log monitoring and newly-issued certificate discovery`,builder:e=>e.command(ni).command(ii).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function oi(e){return e.positional(`log-slug`,{type:`string`,description:`Certificate log slug.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const si={command:`get <log-slug>`,describe:`Retrieves the requested certificate log information.`,builder:oi,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar ct logs get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/logs/${e[`log-slug`]==null?`<log-slug>`:encodeURIComponent(String(e[`log-slug`]))}`,pathParams:{"log-slug":String(e[`log-slug`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ct.logs.get(e[`log-slug`],n)),{successLabel:`Loaded`})}};function ci(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const li={command:`list`,describe:`Retrieves a list of certificate logs.`,builder:ci,handler:async e=>{let n={limit:e.limit,offset:e.offset,format:e.format};if(e.dryRun){o({command:`cf radar ct logs list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/logs`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ct.logs.list(n)),{successLabel:`Loaded`})}},ui={command:`logs`,describe:`Certificate Transparency log monitoring and newly-issued certificate discovery`,builder:e=>e.command(si).command(li).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function di(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the certificate attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`ca`,{type:`string`,description:`Filters results by certificate authority.`}).option(`ca-owner`,{type:`string`,description:`Filters results by certificate authority owner.`}).option(`duration`,{type:`string`,description:`Filters results by certificate duration.`}).option(`entry-type`,{type:`string`,description:`Filters results by entry type (certificate vs. pre-certificate).`}).option(`expiration-status`,{type:`string`,description:`Filters results by expiration status (expired vs. valid).`}).option(`has-ips`,{type:`string`,description:`Filters results based on whether the certificates are bound to specific IP addresses.`}).option(`has-wildcards`,{type:`string`,description:`Filters results based on whether the certificates contain wildcard domains.`}).option(`log`,{type:`string`,description:`Filters results by certificate log.`}).option(`log-api`,{type:`string`,description:`Filters results by certificate log API (RFC6962 vs. static).`}).option(`log-operator`,{type:`string`,description:`Filters results by certificate log operator.`}).option(`public-key-algorithm`,{type:`string`,description:`Filters results by public key algorithm.`}).option(`signature-algorithm`,{type:`string`,description:`Filters results by signature algorithm.`}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`validation-level`,{type:`string`,description:`Filters results by validation level.`}).option(`unique-entries`,{type:`string`,description:`Specifies whether to filter out duplicate certificates and pre-certificates. Set to true for unique entries only.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`RAW_VALUES`,`PERCENTAGE`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const fi={command:`summary <dimension>`,describe:`Retrieves an aggregated summary of certificates grouped by the specified dimension.`,builder:di,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],ca:e.ca,caOwner:e[`ca-owner`],duration:e.duration,entryType:e[`entry-type`],expirationStatus:e[`expiration-status`],hasIps:e[`has-ips`],hasWildcards:e[`has-wildcards`],log:e.log,logApi:e[`log-api`],logOperator:e[`log-operator`],publicKeyAlgorithm:e[`public-key-algorithm`],signatureAlgorithm:e[`signature-algorithm`],tld:e.tld,validationLevel:e[`validation-level`],uniqueEntries:e[`unique-entries`],normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar ct summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ct.summary(e.dimension,n)),{successLabel:`Loaded`})}};function pi(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the certificate attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`ca`,{type:`string`,description:`Filters results by certificate authority.`}).option(`ca-owner`,{type:`string`,description:`Filters results by certificate authority owner.`}).option(`duration`,{type:`string`,description:`Filters results by certificate duration.`}).option(`entry-type`,{type:`string`,description:`Filters results by entry type (certificate vs. pre-certificate).`}).option(`expiration-status`,{type:`string`,description:`Filters results by expiration status (expired vs. valid).`}).option(`has-ips`,{type:`string`,description:`Filters results based on whether the certificates are bound to specific IP addresses.`}).option(`has-wildcards`,{type:`string`,description:`Filters results based on whether the certificates contain wildcard domains.`}).option(`log`,{type:`string`,description:`Filters results by certificate log.`}).option(`log-api`,{type:`string`,description:`Filters results by certificate log API (RFC6962 vs. static).`}).option(`log-operator`,{type:`string`,description:`Filters results by certificate log operator.`}).option(`public-key-algorithm`,{type:`string`,description:`Filters results by public key algorithm.`}).option(`signature-algorithm`,{type:`string`,description:`Filters results by signature algorithm.`}).option(`validation-level`,{type:`string`,description:`Filters results by validation level.`}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`RAW_VALUES`,`PERCENTAGE`]}).option(`unique-entries`,{type:`string`,description:`Specifies whether to filter out duplicate certificates and pre-certificates. Set to true for unique entries only.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const mi={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of certificates grouped by the specified dimension over time.`,builder:pi,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],ca:e.ca,caOwner:e[`ca-owner`],duration:e.duration,entryType:e[`entry-type`],expirationStatus:e[`expiration-status`],hasIps:e[`has-ips`],hasWildcards:e[`has-wildcards`],log:e.log,logApi:e[`log-api`],logOperator:e[`log-operator`],publicKeyAlgorithm:e[`public-key-algorithm`],signatureAlgorithm:e[`signature-algorithm`],validationLevel:e[`validation-level`],tld:e.tld,normalization:e.normalization,uniqueEntries:e[`unique-entries`],format:e.format};if(e.dryRun){o({command:`cf radar ct timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ct.timeseriesGroups(e.dimension,n)),{successLabel:`Loaded`})}};function hi(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`ca`,{type:`string`,description:`Filters results by certificate authority.`}).option(`ca-owner`,{type:`string`,description:`Filters results by certificate authority owner.`}).option(`duration`,{type:`string`,description:`Filters results by certificate duration.`}).option(`entry-type`,{type:`string`,description:`Filters results by entry type (certificate vs. pre-certificate).`}).option(`expiration-status`,{type:`string`,description:`Filters results by expiration status (expired vs. valid).`}).option(`has-ips`,{type:`string`,description:`Filters results based on whether the certificates are bound to specific IP addresses.`}).option(`has-wildcards`,{type:`string`,description:`Filters results based on whether the certificates contain wildcard domains.`}).option(`log`,{type:`string`,description:`Filters results by certificate log.`}).option(`log-api`,{type:`string`,description:`Filters results by certificate log API (RFC6962 vs. static).`}).option(`log-operator`,{type:`string`,description:`Filters results by certificate log operator.`}).option(`public-key-algorithm`,{type:`string`,description:`Filters results by public key algorithm.`}).option(`signature-algorithm`,{type:`string`,description:`Filters results by signature algorithm.`}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`validation-level`,{type:`string`,description:`Filters results by validation level.`}).option(`unique-entries`,{type:`string`,description:`Specifies whether to filter out duplicate certificates and pre-certificates. Set to true for unique entries only.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const gi={command:`timeseries`,describe:`Retrieves certificate volume over time.`,builder:hi,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],ca:e.ca,caOwner:e[`ca-owner`],duration:e.duration,entryType:e[`entry-type`],expirationStatus:e[`expiration-status`],hasIps:e[`has-ips`],hasWildcards:e[`has-wildcards`],log:e.log,logApi:e[`log-api`],logOperator:e[`log-operator`],publicKeyAlgorithm:e[`public-key-algorithm`],signatureAlgorithm:e[`signature-algorithm`],tld:e.tld,validationLevel:e[`validation-level`],uniqueEntries:e[`unique-entries`],format:e.format};if(e.dryRun){o({command:`cf radar ct timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ct.timeseries(n)),{successLabel:`Loaded`})}},_i={command:`ct`,describe:`Certificate Transparency log monitoring and newly-issued certificate discovery`,builder:e=>e.command(fi).command(gi).command(mi).command(ai).command(ui).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function vi(e){return e.option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dataset-id`,{type:`number`,description:`The datasetId field`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const yi={command:`download`,describe:`Retrieves an URL to download a single dataset.`,builder:vi,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar datasets download`,method:`POST`,url:`https://api.cloudflare.com/client/v4/radar/datasets/download`,pathParams:{},query:n,bodyKind:`json`,body:{"dataset-id":e[`dataset-id`],body:e.body}});return}let c=await t(e);if(e.body){let t=i(e.body),r=new URLSearchParams(Object.entries(n).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString();a(await s(`Creating`,async()=>c.post(`/radar/datasets/download${r?`?`+r:``}`,{body:t})),{successLabel:`Created`});return}if(e[`dataset-id`]===void 0)throw Error(`--dataset-id is required (or pass --body with this field set).`);let l={};e[`dataset-id`]!==void 0&&r(l,[`datasetId`],e[`dataset-id`]);let u=new URLSearchParams(Object.entries(n).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString();a(await s(`Creating`,async()=>c.post(`/radar/datasets/download${u?`?`+u:``}`,{body:Object.keys(l).length>0?l:void 0})),{successLabel:`Created`})}};function bi(e){return e.positional(`alias`,{type:`string`,description:`Dataset alias or ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const xi={command:`get <alias>`,describe:`Retrieves the CSV content of a given dataset by alias or ID. When getting the content by alias the latest dataset is returned, optionally filtered by the latest available at a given date.`,builder:bi,handler:async e=>{if(e.dryRun){o({command:`cf radar datasets get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/datasets/${e.alias==null?`<alias>`:encodeURIComponent(String(e.alias))}`,pathParams:{alias:String(e.alias??``)},bodyKind:`none`});return}await t(e),d((await s(`Loading`,async()=>ee(`/radar/datasets/${encodeURIComponent(String(e.alias))}`,{method:`GET`,localEndpoint:e.local?e.localEndpoint:void 0}))).toString(`utf-8`))}};function Si(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`dataset-type`,{type:`string`,description:`Filters results by dataset type.`,choices:[`RANKING_BUCKET`,`REPORT`]}).option(`date`,{type:`string`,description:`Filters results by the specified date.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ci={command:`list`,describe:`Retrieves a list of datasets.`,builder:Si,handler:async e=>{let n={limit:e.limit,offset:e.offset,datasetType:e[`dataset-type`],date:e.date,format:e.format};if(e.dryRun){o({command:`cf radar datasets list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/datasets`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.datasets.list(n)),{successLabel:`Loaded`})}},wi={command:`datasets`,describe:`Downloadable Radar datasets for offline analysis and research`,builder:e=>e.command(yi).command(xi).command(Ci).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ti(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`cache-hit`,{type:`string`,description:`Filters results based on cache status.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`response-ttl`,{type:`string`,description:`Filters results by DNS response TTL.`}).option(`dnssec`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) support.`}).option(`dnssec-aware`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) client awareness.`}).option(`dnssec-e2e`,{type:`string`,description:`Filters results based on DNSSEC-validated answers by end-to-end security status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`matching-answer`,{type:`string`,description:`Filters results based on whether the queries have a matching answer.`}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ei={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of DNS queries by the specified dimension.`,builder:Ti,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,cacheHit:e[`cache-hit`],nodata:e.nodata,protocol:e.protocol,queryType:e[`query-type`],responseCode:e[`response-code`],responseTtl:e[`response-ttl`],dnssec:e.dnssec,dnssecAware:e[`dnssec-aware`],dnssecE2e:e[`dnssec-e2e`],ipVersion:e[`ip-version`],limitPerGroup:e[`limit-per-group`],matchingAnswer:e[`matching-answer`],tld:e.tld,format:e.format};if(e.dryRun){o({command:`cf radar dns summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function Di(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Oi={command:`cache-hit`,describe:`Retrieves the distribution of DNS queries by cache status.`,builder:Di,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns summary cache-hit`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/cache_hit`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.cacheHit(n)),{successLabel:`Loaded`})}};function ki(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ai={command:`dnssec-aware`,describe:`Retrieves the distribution of DNS queries by DNSSEC (DNS Security Extensions) client awareness.`,builder:ki,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns summary dnssec-aware`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/dnssec_aware`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.dnssecAware(n)),{successLabel:`Loaded`})}};function ji(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Mi={command:`dnssec-e2e`,describe:`Retrieves the distribution of DNSSEC-validated answers by end-to-end security status.`,builder:ji,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns summary dnssec-e2e`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/dnssec_e2e`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.dnssecE2e(n)),{successLabel:`Loaded`})}};function Ni(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Pi={command:`dnssec`,describe:`Retrieves the distribution of DNS responses by DNSSEC (DNS Security Extensions) support.`,builder:Ni,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns summary dnssec`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/dnssec`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.dnssec(n)),{successLabel:`Loaded`})}};function Fi(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ii={command:`ip-version`,describe:`Retrieves the distribution of DNS queries by IP version.`,builder:Fi,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns summary ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.ipVersion(n)),{successLabel:`Loaded`})}};function Li(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ri={command:`matching-answer`,describe:`Retrieves the distribution of DNS queries by matching answers.`,builder:Li,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns summary matching-answer`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/matching_answer`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.matchingAnswer(n)),{successLabel:`Loaded`})}};function zi(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Bi={command:`protocol`,describe:`Retrieves the distribution of DNS queries by DNS transport protocol.`,builder:zi,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns summary protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/protocol`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.protocol(n)),{successLabel:`Loaded`})}};function Vi(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Hi={command:`query-type`,describe:`Retrieves the distribution of DNS queries by type.`,builder:Vi,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar dns summary query-type`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/query_type`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.queryType(n)),{successLabel:`Loaded`})}};function Ui(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Wi={command:`response-code`,describe:`Retrieves the distribution of DNS queries by response code.`,builder:Ui,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,nodata:e.nodata,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar dns summary response-code`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/response_code`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.responseCode(n)),{successLabel:`Loaded`})}};function Gi(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ki={command:`response-ttl`,describe:`Retrieves the distribution of DNS queries by minimum response TTL.`,builder:Gi,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns summary response-ttl`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/response_ttl`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.summary.responseTtl(n)),{successLabel:`Loaded`})}},qi={command:`summary`,describe:`Global DNS query trends — top domains, resolver stats, and DNSSEC adoption`,builder:e=>e.command(Oi).command(Pi).command(Ai).command(Mi).command(Ii).command(Ri).command(Bi).command(Hi).command(Wi).command(Ki).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ji(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`cache-hit`,{type:`string`,description:`Filters results based on cache status.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`response-ttl`,{type:`string`,description:`Filters results by DNS response TTL.`}).option(`dnssec`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) support.`}).option(`dnssec-aware`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) client awareness.`}).option(`dnssec-e2e`,{type:`string`,description:`Filters results based on DNSSEC-validated answers by end-to-end security status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`matching-answer`,{type:`string`,description:`Filters results based on whether the queries have a matching answer.`}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Yi={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of DNS queries grouped by dimension over time.`,builder:Ji,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,cacheHit:e[`cache-hit`],nodata:e.nodata,protocol:e.protocol,queryType:e[`query-type`],responseCode:e[`response-code`],responseTtl:e[`response-ttl`],dnssec:e.dnssec,dnssecAware:e[`dnssec-aware`],dnssecE2e:e[`dnssec-e2e`],ipVersion:e[`ip-version`],limitPerGroup:e[`limit-per-group`],matchingAnswer:e[`matching-answer`],tld:e.tld,normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroupsV2(e.dimension,n)),{successLabel:`Loaded`})}};function Xi(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Zi={command:`cache-hit`,describe:`Retrieves the distribution of DNS queries by cache status over time.`,builder:Xi,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups cache-hit`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/cache_hit`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.cacheHit(n)),{successLabel:`Loaded`})}};function Qi(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const $i={command:`dnssec-aware`,describe:`Retrieves the distribution of DNS queries by DNSSEC (DNS Security Extensions) client awareness over time.`,builder:Qi,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups dnssec-aware`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/dnssec_aware`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.dnssecAware(n)),{successLabel:`Loaded`})}};function ea(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ta={command:`dnssec-e2e`,describe:`Retrieves the distribution of DNSSEC-validated answers by end-to-end security status over time.`,builder:ea,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups dnssec-e2e`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/dnssec_e2e`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.dnssecE2e(n)),{successLabel:`Loaded`})}};function na(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ra={command:`dnssec`,describe:`Retrieves the distribution of DNS responses by DNSSEC (DNS Security Extensions) support over time.`,builder:na,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups dnssec`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/dnssec`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.dnssec(n)),{successLabel:`Loaded`})}};function ia(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const aa={command:`ip-version`,describe:`Retrieves the distribution of DNS queries by IP version over time.`,builder:ia,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function oa(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const sa={command:`matching-answer`,describe:`Retrieves the distribution of DNS queries by matching answers over time.`,builder:oa,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups matching-answer`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/matching_answer`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.matchingAnswer(n)),{successLabel:`Loaded`})}};function ca(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const la={command:`protocol`,describe:`Retrieves the distribution of DNS queries by DNS transport protocol over time.`,builder:ca,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/protocol`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.protocol(n)),{successLabel:`Loaded`})}};function ua(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const da={command:`query-type`,describe:`Retrieves the distribution of DNS queries by type over time.`,builder:ua,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups query-type`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/query_type`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.queryType(n)),{successLabel:`Loaded`})}};function fa(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const pa={command:`response-code`,describe:`Retrieves the distribution of DNS queries by response code over time.`,builder:fa,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,nodata:e.nodata,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups response-code`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/response_code`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.responseCode(n)),{successLabel:`Loaded`})}};function ma(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ha={command:`response-ttl`,describe:`Retrieves the distribution of DNS queries by minimum answer TTL over time.`,builder:ma,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,tld:e.tld,queryType:e[`query-type`],protocol:e.protocol,responseCode:e[`response-code`],nodata:e.nodata,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries-groups response-ttl`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/response_ttl`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseriesGroups.responseTtl(n)),{successLabel:`Loaded`})}},ga={command:`timeseries-groups`,describe:`Global DNS query trends — top domains, resolver stats, and DNSSEC adoption`,builder:e=>e.command(Zi).command(ra).command($i).command(ta).command(aa).command(sa).command(la).command(da).command(pa).command(ha).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function _a(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`cache-hit`,{type:`string`,description:`Filters results based on cache status.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`response-ttl`,{type:`string`,description:`Filters results by DNS response TTL.`}).option(`dnssec`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) support.`}).option(`dnssec-aware`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) client awareness.`}).option(`dnssec-e2e`,{type:`string`,description:`Filters results based on DNSSEC-validated answers by end-to-end security status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`matching-answer`,{type:`string`,description:`Filters results based on whether the queries have a matching answer.`}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const va={command:`timeseries`,describe:`Retrieves normalized query volume to the 1.1.1.1 DNS resolver over time.`,builder:_a,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,cacheHit:e[`cache-hit`],nodata:e.nodata,protocol:e.protocol,queryType:e[`query-type`],responseCode:e[`response-code`],responseTtl:e[`response-ttl`],dnssec:e.dnssec,dnssecAware:e[`dnssec-aware`],dnssecE2e:e[`dnssec-e2e`],ipVersion:e[`ip-version`],matchingAnswer:e[`matching-answer`],tld:e.tld,format:e.format};if(e.dryRun){o({command:`cf radar dns timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.timeseries(n)),{successLabel:`Loaded`})}};function ya(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`domain`,{type:`string`,description:`Filters results by domain name.`}).option(`cache-hit`,{type:`string`,description:`Filters results based on cache status.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`response-ttl`,{type:`string`,description:`Filters results by DNS response TTL.`}).option(`dnssec`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) support.`}).option(`dnssec-aware`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) client awareness.`}).option(`dnssec-e2e`,{type:`string`,description:`Filters results based on DNSSEC-validated answers by end-to-end security status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`matching-answer`,{type:`string`,description:`Filters results based on whether the queries have a matching answer.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ba={command:`ases`,describe:`Retrieves the top autonomous systems by DNS queries made to 1.1.1.1 DNS resolver.`,builder:ya,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,domain:e.domain,cacheHit:e[`cache-hit`],nodata:e.nodata,protocol:e.protocol,queryType:e[`query-type`],responseCode:e[`response-code`],responseTtl:e[`response-ttl`],dnssec:e.dnssec,dnssecAware:e[`dnssec-aware`],dnssecE2e:e[`dnssec-e2e`],ipVersion:e[`ip-version`],matchingAnswer:e[`matching-answer`],format:e.format};if(e.dryRun){o({command:`cf radar dns top ases`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/top/ases`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.top.ases(n)),{successLabel:`Loaded`})}};function xa(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`domain`,{type:`string`,description:`Filters results by domain name.`}).option(`cache-hit`,{type:`string`,description:`Filters results based on cache status.`}).option(`nodata`,{type:`string`,description:`Specifies whether the response includes empty DNS responses (NODATA).`}).option(`protocol`,{type:`string`,description:`Filters results by DNS transport protocol.`}).option(`query-type`,{type:`string`,description:`Filters results by DNS query type.`}).option(`response-code`,{type:`string`,description:`Filters results by DNS response code.`}).option(`response-ttl`,{type:`string`,description:`Filters results by DNS response TTL.`}).option(`dnssec`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) support.`}).option(`dnssec-aware`,{type:`string`,description:`Filters results based on DNSSEC (DNS Security Extensions) client awareness.`}).option(`dnssec-e2e`,{type:`string`,description:`Filters results based on DNSSEC-validated answers by end-to-end security status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`matching-answer`,{type:`string`,description:`Filters results based on whether the queries have a matching answer.`}).option(`tld`,{type:`string`,description:`Filters results by top-level domain.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Sa={command:`locations`,describe:`Retrieves the top locations by DNS queries made to 1.1.1.1 DNS resolver.`,builder:xa,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,domain:e.domain,cacheHit:e[`cache-hit`],nodata:e.nodata,protocol:e.protocol,queryType:e[`query-type`],responseCode:e[`response-code`],responseTtl:e[`response-ttl`],dnssec:e.dnssec,dnssecAware:e[`dnssec-aware`],dnssecE2e:e[`dnssec-e2e`],ipVersion:e[`ip-version`],matchingAnswer:e[`matching-answer`],tld:e.tld,format:e.format};if(e.dryRun){o({command:`cf radar dns top locations`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/top/locations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.dns.top.locations(n)),{successLabel:`Loaded`})}},Ca={command:`top`,describe:`Global DNS query trends — top domains, resolver stats, and DNSSEC adoption`,builder:e=>e.command(ba).command(Sa).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},wa={command:`dns`,describe:`Global DNS query trends — top domains, resolver stats, and DNSSEC adoption`,builder:e=>e.command(Ei).command(va).command(Yi).command(qi).command(ga).command(Ca).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ta(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ea={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of email routing metrics by the specified dimension.`,builder:Ta,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,ipVersion:e[`ip-version`],encrypted:e.encrypted,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar email routing summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function Da(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Oa={command:`arc`,describe:`Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation.`,builder:Da,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,ipVersion:e[`ip-version`],encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing summary arc`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/summary/arc`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.summary.arc(n)),{successLabel:`Loaded`})}};function ka(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Aa={command:`dkim`,describe:`Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation.`,builder:ka,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dmarc:e.dmarc,spf:e.spf,ipVersion:e[`ip-version`],encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing summary dkim`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/summary/dkim`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.summary.dkim(n)),{successLabel:`Loaded`})}};function ja(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ma={command:`dmarc`,describe:`Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation.`,builder:ja,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,spf:e.spf,ipVersion:e[`ip-version`],encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing summary dmarc`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/summary/dmarc`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.summary.dmarc(n)),{successLabel:`Loaded`})}};function Na(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Pa={command:`encrypted`,describe:`Retrieves the distribution of emails by encryption status (encrypted vs. not-encrypted).`,builder:Na,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,ipVersion:e[`ip-version`],format:e.format};if(e.dryRun){o({command:`cf radar email routing summary encrypted`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/summary/encrypted`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.summary.encrypted(n)),{successLabel:`Loaded`})}};function Fa(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ia={command:`ip-version`,describe:`Retrieves the distribution of emails by IP version.`,builder:Fa,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing summary ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/summary/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.summary.ipVersion(n)),{successLabel:`Loaded`})}};function La(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ra={command:`spf`,describe:`Retrieves the distribution of emails by SPF (Sender Policy Framework) validation.`,builder:La,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,ipVersion:e[`ip-version`],encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing summary spf`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/summary/spf`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.summary.spf(n)),{successLabel:`Loaded`})}},za={command:`summary`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Oa).command(Aa).command(Ma).command(Pa).command(Ia).command(Ra).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ba(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Va={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of email routing metrics grouped by dimension over time.`,builder:Ba,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,ipVersion:e[`ip-version`],encrypted:e.encrypted,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar email routing timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.timeseriesGroupsV2(e.dimension,n)),{successLabel:`Loaded`})}};function Ha(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ua={command:`arc`,describe:`Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation over time.`,builder:Ha,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,ipVersion:e[`ip-version`],encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing timeseries-groups arc`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/timeseries_groups/arc`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.timeseriesGroups.arc(n)),{successLabel:`Loaded`})}};function Wa(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ga={command:`dkim`,describe:`Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation over time.`,builder:Wa,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dmarc:e.dmarc,spf:e.spf,ipVersion:e[`ip-version`],encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing timeseries-groups dkim`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/timeseries_groups/dkim`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.timeseriesGroups.dkim(n)),{successLabel:`Loaded`})}};function Ka(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const qa={command:`dmarc`,describe:`Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation over time.`,builder:Ka,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,spf:e.spf,ipVersion:e[`ip-version`],encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing timeseries-groups dmarc`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/timeseries_groups/dmarc`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.timeseriesGroups.dmarc(n)),{successLabel:`Loaded`})}};function Ja(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ya={command:`encrypted`,describe:`Retrieves the distribution of emails by encryption status (encrypted vs. not-encrypted) over time.`,builder:Ja,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,ipVersion:e[`ip-version`],format:e.format};if(e.dryRun){o({command:`cf radar email routing timeseries-groups encrypted`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/timeseries_groups/encrypted`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.timeseriesGroups.encrypted(n)),{successLabel:`Loaded`})}};function Xa(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Za={command:`ip-version`,describe:`Retrieves the distribution of emails by IP version over time.`,builder:Xa,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing timeseries-groups ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/timeseries_groups/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function Qa(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`encrypted`,{type:`string`,description:`Filters results by encryption status (encrypted vs. not-encrypted).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const $a={command:`spf`,describe:`Retrieves the distribution of emails by SPF (Sender Policy Framework) validation over time.`,builder:Qa,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,ipVersion:e[`ip-version`],encrypted:e.encrypted,format:e.format};if(e.dryRun){o({command:`cf radar email routing timeseries-groups spf`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/timeseries_groups/spf`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.routing.timeseriesGroups.spf(n)),{successLabel:`Loaded`})}},eo={command:`timeseries-groups`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Ua).command(Ga).command(qa).command(Ya).command(Za).command($a).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},to={command:`routing`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Ea).command(Va).command(za).command(eo).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function no(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ro={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of email security metrics by the specified dimension.`,builder:no,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar email security summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function $(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const io={command:`arc`,describe:`Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation.`,builder:$,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security summary arc`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/arc`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summary.arc(n)),{successLabel:`Loaded`})}};function ao(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const oo={command:`dkim`,describe:`Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation.`,builder:ao,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security summary dkim`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/dkim`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summary.dkim(n)),{successLabel:`Loaded`})}};function so(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const co={command:`dmarc`,describe:`Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation.`,builder:so,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security summary dmarc`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/dmarc`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summary.dmarc(n)),{successLabel:`Loaded`})}};function lo(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const uo={command:`malicious`,describe:`Retrieves the distribution of emails by malicious classification.`,builder:lo,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security summary malicious`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/malicious`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summary.malicious(n)),{successLabel:`Loaded`})}};function fo(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const po={command:`spam`,describe:`Retrieves the proportion of emails by spam classification (spam vs. non-spam).`,builder:fo,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security summary spam`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/spam`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summary.spam(n)),{successLabel:`Loaded`})}};function mo(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ho={command:`spf`,describe:`Retrieves the distribution of emails by SPF (Sender Policy Framework) validation.`,builder:mo,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security summary spf`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/spf`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summary.spf(n)),{successLabel:`Loaded`})}};function go(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const _o={command:`spoof`,describe:`Retrieves the proportion of emails by spoof classification (spoof vs. non-spoof).`,builder:go,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security summary spoof`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/spoof`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summary.spoof(n)),{successLabel:`Loaded`})}};function vo(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const yo={command:`threat-category`,describe:`Retrieves the distribution of emails by threat categories.`,builder:vo,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security summary threat-category`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/threat_category`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summary.threatCategory(n)),{successLabel:`Loaded`})}};function bo(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const xo={command:`tls-version`,describe:`Retrieves the distribution of emails by TLS version.`,builder:bo,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,format:e.format};if(e.dryRun){o({command:`cf radar email security summary tls-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/tls_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.summary.tlsVersion(n)),{successLabel:`Loaded`})}},So={command:`summary`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(io).command(oo).command(co).command(uo).command(po).command(ho).command(_o).command(yo).command(xo).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Co(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const wo={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of email security metrics grouped by dimension over time.`,builder:Co,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroupsV2(e.dimension,n)),{successLabel:`Loaded`})}};function To(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Eo={command:`arc`,describe:`Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation over time.`,builder:To,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups arc`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/arc`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroups.arc(n)),{successLabel:`Loaded`})}};function Do(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Oo={command:`dkim`,describe:`Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation over time.`,builder:Do,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups dkim`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/dkim`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroups.dkim(n)),{successLabel:`Loaded`})}};function ko(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ao={command:`dmarc`,describe:`Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation over time.`,builder:ko,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups dmarc`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/dmarc`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroups.dmarc(n)),{successLabel:`Loaded`})}};function jo(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Mo={command:`malicious`,describe:`Retrieves the distribution of emails by malicious classification over time.`,builder:jo,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups malicious`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/malicious`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroups.malicious(n)),{successLabel:`Loaded`})}};function No(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Po={command:`spam`,describe:`Retrieves the distribution of emails by spam classification (spam vs. non-spam) over time.`,builder:No,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups spam`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/spam`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroups.spam(n)),{successLabel:`Loaded`})}};function Fo(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Io={command:`spf`,describe:`Retrieves the distribution of emails by SPF (Sender Policy Framework) validation over time.`,builder:Fo,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups spf`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/spf`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroups.spf(n)),{successLabel:`Loaded`})}};function Lo(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ro={command:`spoof`,describe:`Retrieves the distribution of emails by spoof classification (spoof vs. non-spoof) over time.`,builder:Lo,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups spoof`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/spoof`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroups.spoof(n)),{successLabel:`Loaded`})}};function zo(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Bo={command:`threat-category`,describe:`Retrieves the distribution of emails by threat category over time.`,builder:zo,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups threat-category`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/threat_category`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroups.threatCategory(n)),{successLabel:`Loaded`})}};function Vo(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ho={command:`tls-version`,describe:`Retrieves the distribution of emails by TLS version over time.`,builder:Vo,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,format:e.format};if(e.dryRun){o({command:`cf radar email security timeseries-groups tls-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/tls_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.timeseriesGroups.tlsVersion(n)),{successLabel:`Loaded`})}},Uo={command:`timeseries-groups`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Eo).command(Oo).command(Ao).command(Mo).command(Po).command(Io).command(Ro).command(Bo).command(Ho).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Wo(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`tld-category`,{type:`string`,description:`Filters results by TLD category.`,choices:[`CLASSIC`,`COUNTRY`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Go={command:`get`,describe:`Retrieves the top TLDs by number of email messages.`,builder:Wo,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],tldCategory:e[`tld-category`],format:e.format};if(e.dryRun){o({command:`cf radar email security top tlds get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/top/tlds`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.top.tlds.get(n)),{successLabel:`Loaded`})}};function Ko(e){return e.positional(`malicious`,{type:`string`,description:`Malicious classification.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`tld-category`,{type:`string`,description:`Filters results by TLD category.`,choices:[`CLASSIC`,`COUNTRY`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const qo={command:`get <malicious>`,describe:`Retrieves the top TLDs by emails classified as malicious or not.`,builder:Ko,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],tldCategory:e[`tld-category`],format:e.format};if(e.dryRun){o({command:`cf radar email security top tlds malicious get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/top/tlds/malicious/${e.malicious==null?`<malicious>`:encodeURIComponent(String(e.malicious))}`,pathParams:{malicious:String(e.malicious??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.top.tlds.malicious.get(e.malicious,n)),{successLabel:`Loaded`})}},Jo={command:`malicious`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(qo).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Yo(e){return e.positional(`spam`,{type:`string`,description:`Spam classification.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`tld-category`,{type:`string`,description:`Filters results by TLD category.`,choices:[`CLASSIC`,`COUNTRY`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Xo={command:`get <spam>`,describe:`Retrieves the top TLDs by emails classified as spam or not.`,builder:Yo,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],tldCategory:e[`tld-category`],format:e.format};if(e.dryRun){o({command:`cf radar email security top tlds spam get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/top/tlds/spam/${e.spam==null?`<spam>`:encodeURIComponent(String(e.spam))}`,pathParams:{spam:String(e.spam??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.top.tlds.spam.get(e.spam,n)),{successLabel:`Loaded`})}},Zo={command:`spam`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Xo).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Qo(e){return e.positional(`spoof`,{type:`string`,description:`Spoof classification.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`arc`,{type:`string`,description:`Filters results by ARC (Authenticated Received Chain) validation.`}).option(`dkim`,{type:`string`,description:`Filters results by DKIM (DomainKeys Identified Mail) validation status.`}).option(`dmarc`,{type:`string`,description:`Filters results by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation status.`}).option(`spf`,{type:`string`,description:`Filters results by SPF (Sender Policy Framework) validation status.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`tld-category`,{type:`string`,description:`Filters results by TLD category.`,choices:[`CLASSIC`,`COUNTRY`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const $o={command:`get <spoof>`,describe:`Retrieves the top TLDs by emails classified as spoof or not.`,builder:Qo,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],arc:e.arc,dkim:e.dkim,dmarc:e.dmarc,spf:e.spf,tlsVersion:e[`tls-version`],tldCategory:e[`tld-category`],format:e.format};if(e.dryRun){o({command:`cf radar email security top tlds spoof get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/top/tlds/spoof/${e.spoof==null?`<spoof>`:encodeURIComponent(String(e.spoof))}`,pathParams:{spoof:String(e.spoof??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.email.security.top.tlds.spoof.get(e.spoof,n)),{successLabel:`Loaded`})}},es={command:`spoof`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command($o).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ts={command:`tlds`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Go).command(Jo).command(Zo).command(es).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ns={command:`top`,describe:`Operations for email.security.top`,builder:e=>e.command(ts).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},rs={command:`security`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(ro).command(wo).command(So).command(Uo).command(ns).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},is={command:`email`,describe:`Operations for email`,builder:e=>e.command(to).command(rs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function as(e){return e.positional(`asn`,{type:`string`,description:`Retrieves all AS-SETs that the given AS is a member of.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const os={command:`as-set <asn>`,describe:`Retrieves Internet Routing Registry AS-SETs that an AS is a member of.`,builder:as,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar entities asns as-set`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/asns/${e.asn==null?`<asn>`:encodeURIComponent(String(e.asn))}/as_set`,pathParams:{asn:String(e.asn??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.entities.asns.asSet(e.asn,n)),{successLabel:`Loaded`})}};function ss(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`metric`,{type:`string`,description:`Metric to rank ASNs by.`,choices:[`OFFENSE_COUNT`,`NUMBER_OF_OFFENDING_IPS`]}).option(`date`,{type:`string`,description:`The date to retrieve (YYYY-MM-DD format). If not specified, returns the most recent available data. Note: This is the date the report was generated. The report is generated from information collected from the previous day (e.g., the 2026-02-23 entry contains data from 2026-02-22).`}).option(`compare-date-range`,{type:`string`,description:`Relative date range for rank change comparison (e.g., "1d", "7d", "30d").`}).option(`location`,{type:`string`,description:`Filters results by location. Specify an alpha-2 location code.`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`sort-order`,{type:`string`,description:`Sort order.`,choices:[`ASC`,`DESC`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const cs={command:`botnet-threat-feed`,describe:`Retrieves a ranked list of Autonomous Systems based on their presence in the Cloudflare Botnet Threat Feed. Rankings can be sorted by offense count or number of bad IPs. Optionally compare to a previous date to see rank changes.`,builder:ss,handler:async e=>{let n={limit:e.limit,offset:e.offset,metric:e.metric,date:e.date,compareDateRange:e[`compare-date-range`],location:e.location,asn:e.asn,sortOrder:e[`sort-order`],format:e.format};if(e.dryRun){o({command:`cf radar entities asns botnet-threat-feed`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/asns/botnet_threat_feed`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.entities.asns.botnetThreatFeed(n)),{successLabel:`Loaded`})}};function ls(e){return e.positional(`asn`,{type:`string`,description:`Single Autonomous System Number (ASN) as integer.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const us={command:`get <asn>`,describe:"Retrieves the requested autonomous system information. (A confidence level below `5` indicates a low level of confidence in the traffic data - normally this happens because Cloudflare has a small amount of traffic from/to this AS). Population estimates come from APNIC (refer to https://labs.apnic.net/?p=526).",builder:ls,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar entities asns get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/asns/${e.asn==null?`<asn>`:encodeURIComponent(String(e.asn))}`,pathParams:{asn:String(e.asn??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.entities.asns.get(e.asn,n)),{successLabel:`Loaded`})}};function ds(e){return e.option(`ip`,{type:`string`,description:`IP address.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const fs={command:`ip`,describe:`Retrieves the requested autonomous system information based on IP address. Population estimates come from APNIC (refer to https://labs.apnic.net/?p=526).`,builder:ds,handler:async e=>{let n={ip:e.ip,format:e.format};if(e.dryRun){o({command:`cf radar entities asns ip`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/asns/ip`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.entities.asns.ip(n)),{successLabel:`Loaded`})}};function ps(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`asn`,{type:`string`,description:`Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify an alpha-2 location code.`}).option(`order-by`,{type:`string`,description:`Specifies the metric to order the ASNs by.`,choices:[`ASN`,`POPULATION`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ms={command:`list`,describe:`Retrieves a list of autonomous systems.`,builder:ps,handler:async e=>{let n={limit:e.limit,offset:e.offset,asn:e.asn,location:e.location,orderBy:e[`order-by`],format:e.format};if(e.dryRun){o({command:`cf radar entities asns list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/asns`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.entities.asns.list(n)),{successLabel:`Loaded`})}};function hs(e){return e.positional(`asn`,{type:`string`,description:`Retrieves all ASNs with provider-customer or peering relationships with the given ASN.`,demandOption:!0}).option(`asn2`,{type:`number`,description:`Retrieves the AS relationship of ASN2 with respect to the given ASN.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const gs={command:`rel <asn>`,describe:`Retrieves AS-level relationship for given networks.`,builder:hs,handler:async e=>{let n={asn2:e.asn2,format:e.format};if(e.dryRun){o({command:`cf radar entities asns rel`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/asns/${e.asn==null?`<asn>`:encodeURIComponent(String(e.asn))}/rel`,pathParams:{asn:String(e.asn??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.entities.asns.rel(e.asn,n)),{successLabel:`Loaded`})}},_s={command:`asns`,describe:`Look up ASNs, IPs, domains, and locations with metadata and traffic summaries`,builder:e=>e.command(os).command(cs).command(us).command(fs).command(ms).command(gs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function vs(e){return e.option(`ip`,{type:`string`,description:`IP address.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ys={command:`get`,describe:`Retrieves IP address information.`,builder:vs,handler:async e=>{let n={ip:e.ip,format:e.format};if(e.dryRun){o({command:`cf radar entities get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/ip`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.entities.get(n)),{successLabel:`Loaded`})}};function bs(e){return e.positional(`location`,{type:`string`,description:`Location alpha-2 code.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const xs={command:`get <location>`,describe:"Retrieves the requested location information. (A confidence level below `5` indicates a low level of confidence in the traffic data - normally this happens because Cloudflare has a small amount of traffic from/to this location).",builder:bs,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar entities locations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/locations/${e.location==null?`<location>`:encodeURIComponent(String(e.location))}`,pathParams:{location:String(e.location??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.entities.locations.get(e.location,n)),{successLabel:`Loaded`})}};function Ss(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify a comma-separated list of alpha-2 location codes.`}).option(`region`,{type:`string`,description:`Filters results by region.`}).option(`subregion`,{type:`string`,description:`Filters results by subregion.`}).option(`continent`,{type:`string`,description:`Filters results by continent code.`,choices:[`AF`,`AS`,`EU`,`NA`,`OC`,`SA`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Cs={command:`list`,describe:`Retrieves a list of locations.`,builder:Ss,handler:async e=>{let n={limit:e.limit,offset:e.offset,location:e.location,region:e.region,subregion:e.subregion,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar entities locations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/locations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.entities.locations.list(n)),{successLabel:`Loaded`})}},ws={command:`locations`,describe:`Look up ASNs, IPs, domains, and locations with metadata and traffic summaries`,builder:e=>e.command(xs).command(Cs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ts={command:`entities`,describe:`Look up ASNs, IPs, domains, and locations with metadata and traffic summaries`,builder:e=>e.command(ys).command(_s).command(ws).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Es(e){return e.positional(`geo-id`,{type:`string`,description:`Geolocation ID. Refer to [GeoNames](https://download.geonames.org/export/dump/readme.txt)`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ds={command:`get <geo-id>`,describe:"Retrieves the requested Geolocation information. Geolocation names can be localized by sending an `Accept-Language` HTTP header with a BCP 47 language tag (e.g., `Accept-Language: pt-PT`). The full quality-value chain is supported (e.g., `pt-PT,pt;q=0.9,en;q=0.8`).",builder:Es,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar geolocations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/geolocations/${e[`geo-id`]==null?`<geo-id>`:encodeURIComponent(String(e[`geo-id`]))}`,pathParams:{"geo-id":String(e[`geo-id`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.geolocations.get(e[`geo-id`],n)),{successLabel:`Loaded`})}};function Os(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`geo-id`,{type:`string`,description:`Filters results by geolocation. Specify a comma-separated list of GeoNames IDs.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify a comma-separated list of alpha-2 location codes.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ks={command:`list`,describe:"Retrieves a list of geolocations. Geolocation names can be localized by sending an `Accept-Language` HTTP header with a BCP 47 language tag (e.g., `Accept-Language: pt-PT`). The full quality-value chain is supported (e.g., `pt-PT,pt;q=0.9,en;q=0.8`).",builder:Os,handler:async e=>{let n={limit:e.limit,offset:e.offset,geoId:e[`geo-id`],location:e.location,format:e.format};if(e.dryRun){o({command:`cf radar geolocations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/geolocations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.geolocations.list(n)),{successLabel:`Loaded`})}},As={command:`geolocations`,describe:`Geographic location metadata used for regional traffic analysis`,builder:e=>e.command(Ds).command(ks).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function js(e){return e.positional(`bot-class`,{type:`string`,description:`Bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ms={command:`get <bot-class>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested bot class.`,builder:js,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http ases bot-class get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/bot_class/${e[`bot-class`]==null?`<bot-class>`:encodeURIComponent(String(e[`bot-class`]))}`,pathParams:{"bot-class":String(e[`bot-class`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.ases.botClass.get(e[`bot-class`],n)),{successLabel:`Loaded`})}},Ns={command:`bot-class`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Ms).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ps(e){return e.positional(`browser-family`,{type:`string`,description:`Browser family.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Fs={command:`get <browser-family>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested browser family.`,builder:Ps,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar http ases browser-family get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/browser_family/${e[`browser-family`]==null?`<browser-family>`:encodeURIComponent(String(e[`browser-family`]))}`,pathParams:{"browser-family":String(e[`browser-family`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.ases.browserFamily.get(e[`browser-family`],n)),{successLabel:`Loaded`})}},Is={command:`browser-family`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Fs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ls(e){return e.positional(`device-type`,{type:`string`,description:`Device type.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Rs={command:`get <device-type>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested device type.`,builder:Ls,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http ases device-type get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/device_type/${e[`device-type`]==null?`<device-type>`:encodeURIComponent(String(e[`device-type`]))}`,pathParams:{"device-type":String(e[`device-type`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.ases.deviceType.get(e[`device-type`],n)),{successLabel:`Loaded`})}},zs={command:`device-type`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Rs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Bs(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Vs={command:`get`,describe:`Retrieves the top autonomous systems by HTTP requests.`,builder:Bs,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http ases get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.ases.get(n)),{successLabel:`Loaded`})}};function Hs(e){return e.positional(`http-version`,{type:`string`,description:`HTTP version.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Us={command:`get <http-version>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested HTTP version.`,builder:Hs,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http ases http-method get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/http_version/${e[`http-version`]==null?`<http-version>`:encodeURIComponent(String(e[`http-version`]))}`,pathParams:{"http-version":String(e[`http-version`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.ases.httpMethod.get(e[`http-version`],n)),{successLabel:`Loaded`})}},Ws={command:`http-method`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Us).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Gs(e){return e.positional(`http-protocol`,{type:`string`,description:`HTTP protocol (HTTP vs. HTTPS).`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ks={command:`get <http-protocol>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested HTTP protocol.`,builder:Gs,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http ases http-protocol get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/http_protocol/${e[`http-protocol`]==null?`<http-protocol>`:encodeURIComponent(String(e[`http-protocol`]))}`,pathParams:{"http-protocol":String(e[`http-protocol`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.ases.httpProtocol.get(e[`http-protocol`],n)),{successLabel:`Loaded`})}},qs={command:`http-protocol`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Ks).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Js(e){return e.positional(`ip-version`,{type:`string`,description:`IP version.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ys={command:`get <ip-version>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested IP version.`,builder:Js,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http ases ip-version get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/ip_version/${e[`ip-version`]==null?`<ip-version>`:encodeURIComponent(String(e[`ip-version`]))}`,pathParams:{"ip-version":String(e[`ip-version`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.ases.ipVersion.get(e[`ip-version`],n)),{successLabel:`Loaded`})}},Xs={command:`ip-version`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Ys).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Zs(e){return e.positional(`os`,{type:`string`,description:`Operating system.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Qs={command:`get <os>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested operating system.`,builder:Zs,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http ases os get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/os/${e.os==null?`<os>`:encodeURIComponent(String(e.os))}`,pathParams:{os:String(e.os??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.ases.os.get(e.os,n)),{successLabel:`Loaded`})}},$s={command:`os`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Qs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ec(e){return e.positional(`tls-version`,{type:`string`,description:`TLS version.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const tc={command:`get <tls-version>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested TLS protocol version.`,builder:ec,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http ases tls-version get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/tls_version/${e[`tls-version`]==null?`<tls-version>`:encodeURIComponent(String(e[`tls-version`]))}`,pathParams:{"tls-version":String(e[`tls-version`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.ases.tlsVersion.get(e[`tls-version`],n)),{successLabel:`Loaded`})}},nc={command:`tls-version`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(tc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},rc={command:`ases`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Vs).command(Ns).command(Is).command(zs).command(Ws).command(qs).command(Xs).command($s).command(nc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ic(e){return e.positional(`bot-class`,{type:`string`,description:`Bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ac={command:`get <bot-class>`,describe:`Retrieves the top locations, by HTTP requests, of the requested bot class.`,builder:ic,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http locations bot-class get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/bot_class/${e[`bot-class`]==null?`<bot-class>`:encodeURIComponent(String(e[`bot-class`]))}`,pathParams:{"bot-class":String(e[`bot-class`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.locations.botClass.get(e[`bot-class`],n)),{successLabel:`Loaded`})}},oc={command:`bot-class`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(ac).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function sc(e){return e.positional(`browser-family`,{type:`string`,description:`Browser family.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const cc={command:`get <browser-family>`,describe:`Retrieves the top locations, by HTTP requests, of the requested browser family.`,builder:sc,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar http locations browser-family get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/browser_family/${e[`browser-family`]==null?`<browser-family>`:encodeURIComponent(String(e[`browser-family`]))}`,pathParams:{"browser-family":String(e[`browser-family`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.locations.browserFamily.get(e[`browser-family`],n)),{successLabel:`Loaded`})}},lc={command:`browser-family`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(cc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function uc(e){return e.positional(`device-type`,{type:`string`,description:`Device type.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const dc={command:`get <device-type>`,describe:`Retrieves the top locations, by HTTP requests, of the requested device type.`,builder:uc,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http locations device-type get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/device_type/${e[`device-type`]==null?`<device-type>`:encodeURIComponent(String(e[`device-type`]))}`,pathParams:{"device-type":String(e[`device-type`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.locations.deviceType.get(e[`device-type`],n)),{successLabel:`Loaded`})}},fc={command:`device-type`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(dc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function pc(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const mc={command:`get`,describe:`Retrieves the top locations by HTTP requests.`,builder:pc,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http locations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.locations.get(n)),{successLabel:`Loaded`})}};function hc(e){return e.positional(`http-version`,{type:`string`,description:`HTTP version.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const gc={command:`get <http-version>`,describe:`Retrieves the top locations, by HTTP requests, of the requested HTTP version.`,builder:hc,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http locations http-method get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/http_version/${e[`http-version`]==null?`<http-version>`:encodeURIComponent(String(e[`http-version`]))}`,pathParams:{"http-version":String(e[`http-version`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.locations.httpMethod.get(e[`http-version`],n)),{successLabel:`Loaded`})}},_c={command:`http-method`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(gc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function vc(e){return e.positional(`http-protocol`,{type:`string`,description:`HTTP protocol (HTTP vs. HTTPS).`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const yc={command:`get <http-protocol>`,describe:`Retrieves the top locations, by HTTP requests, of the requested HTTP protocol.`,builder:vc,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http locations http-protocol get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/http_protocol/${e[`http-protocol`]==null?`<http-protocol>`:encodeURIComponent(String(e[`http-protocol`]))}`,pathParams:{"http-protocol":String(e[`http-protocol`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.locations.httpProtocol.get(e[`http-protocol`],n)),{successLabel:`Loaded`})}},bc={command:`http-protocol`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(yc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function xc(e){return e.positional(`ip-version`,{type:`string`,description:`IP version.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Sc={command:`get <ip-version>`,describe:`Retrieves the top locations, by HTTP requests, of the requested IP version.`,builder:xc,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http locations ip-version get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/ip_version/${e[`ip-version`]==null?`<ip-version>`:encodeURIComponent(String(e[`ip-version`]))}`,pathParams:{"ip-version":String(e[`ip-version`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.locations.ipVersion.get(e[`ip-version`],n)),{successLabel:`Loaded`})}},Cc={command:`ip-version`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Sc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function wc(e){return e.positional(`os`,{type:`string`,description:`Operating system.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Tc={command:`get <os>`,describe:`Retrieves the top locations, by HTTP requests, of the requested operating system.`,builder:wc,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http locations os get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/os/${e.os==null?`<os>`:encodeURIComponent(String(e.os))}`,pathParams:{os:String(e.os??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.locations.os.get(e.os,n)),{successLabel:`Loaded`})}},Ec={command:`os`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Tc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Dc(e){return e.positional(`tls-version`,{type:`string`,description:`TLS version.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Oc={command:`get <tls-version>`,describe:`Retrieves the top locations, by HTTP requests, of the requested TLS protocol version.`,builder:Dc,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http locations tls-version get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/tls_version/${e[`tls-version`]==null?`<tls-version>`:encodeURIComponent(String(e[`tls-version`]))}`,pathParams:{"tls-version":String(e[`tls-version`]??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.locations.tlsVersion.get(e[`tls-version`],n)),{successLabel:`Loaded`})}},kc={command:`tls-version`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Oc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ac={command:`locations`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(mc).command(oc).command(lc).command(fc).command(_c).command(bc).command(Cc).command(Ec).command(kc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function jc(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the HTTP attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Mc={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of HTTP requests by the specified dimension.`,builder:jc,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar http summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function Nc(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Pc={command:`bot-class`,describe:`Retrieves the distribution of bot-generated HTTP requests to genuine human traffic, as classified by Cloudflare. Visit https://developers.cloudflare.com/radar/concepts/bot-classes/ for more information.`,builder:Nc,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http summary bot-class`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/bot_class`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.summary.botClass(n)),{successLabel:`Loaded`})}};function Fc(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ic={command:`device-type`,describe:`Retrieves the distribution of HTTP requests generated by mobile, desktop, and other types of devices.`,builder:Fc,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http summary device-type`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/device_type`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.summary.deviceType(n)),{successLabel:`Loaded`})}};function Lc(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Rc={command:`http-protocol`,describe:`Retrieves the distribution of HTTP requests by HTTP protocol (HTTP vs. HTTPS).`,builder:Lc,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http summary http-protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/http_protocol`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.summary.httpProtocol(n)),{successLabel:`Loaded`})}};function zc(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Bc={command:`http-version`,describe:`Retrieves the distribution of HTTP requests by HTTP version.`,builder:zc,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http summary http-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/http_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.summary.httpVersion(n)),{successLabel:`Loaded`})}};function Vc(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Hc={command:`ip-version`,describe:`Retrieves the distribution of HTTP requests by IP version.`,builder:Vc,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http summary ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.summary.ipVersion(n)),{successLabel:`Loaded`})}};function Uc(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Wc={command:`os`,describe:`Retrieves the distribution of HTTP requests by operating system (Windows, macOS, Android, iOS, and others).`,builder:Uc,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http summary os`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/os`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.summary.os(n)),{successLabel:`Loaded`})}};function Gc(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Kc={command:`post-quantum`,describe:`Retrieves the distribution of HTTP requests by post-quantum support.`,builder:Gc,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http summary post-quantum`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/post_quantum`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.summary.postQuantum(n)),{successLabel:`Loaded`})}};function qc(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Jc={command:`tls-version`,describe:`Retrieves the distribution of HTTP requests by TLS version.`,builder:qc,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http summary tls-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/tls_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.summary.tlsVersion(n)),{successLabel:`Loaded`})}},Yc={command:`summary`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Pc).command(Ic).command(Rc).command(Bc).command(Hc).command(Wc).command(Kc).command(Jc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Xc(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the HTTP attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Zc={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of HTTP requests grouped by dimension.`,builder:Xc,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],limitPerGroup:e[`limit-per-group`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],normalization:e.normalization,ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroupsV2(e.dimension,n)),{successLabel:`Loaded`})}};function Qc(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const $c={command:`bot-class`,describe:`Retrieves the distribution of HTTP requests classified as automated or human over time. Visit https://developers.cloudflare.com/radar/concepts/bot-classes/ for more information.`,builder:Qc,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups bot-class`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/bot_class`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.botClass(n)),{successLabel:`Loaded`})}};function el(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const tl={command:`browser-family`,describe:`Retrieves the distribution of HTTP requests by user agent family over time.`,builder:el,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups browser-family`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/browser_family`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.browserFamily(n)),{successLabel:`Loaded`})}};function nl(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const rl={command:`browser`,describe:`Retrieves the distribution of HTTP requests by user agent over time.`,builder:nl,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups browser`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/browser`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.browser(n)),{successLabel:`Loaded`})}};function il(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const al={command:`device-type`,describe:`Retrieves the distribution of HTTP requests by device type over time.`,builder:il,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups device-type`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/device_type`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.deviceType(n)),{successLabel:`Loaded`})}};function ol(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const sl={command:`http-protocol`,describe:`Retrieves the distribution of HTTP requests by HTTP protocol (HTTP vs. HTTPS) over time.`,builder:ol,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups http-protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/http_protocol`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.httpProtocol(n)),{successLabel:`Loaded`})}};function cl(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ll={command:`http-version`,describe:`Retrieves the distribution of HTTP requests by HTTP version over time.`,builder:cl,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups http-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/http_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.httpVersion(n)),{successLabel:`Loaded`})}};function ul(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const dl={command:`ip-version`,describe:`Retrieves the distribution of HTTP requests by IP version over time.`,builder:ul,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/ip_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function fl(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const pl={command:`os`,describe:`Retrieves the distribution of HTTP requests by operating system over time.`,builder:fl,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups os`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/os`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.os(n)),{successLabel:`Loaded`})}};function ml(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const hl={command:`post-quantum`,describe:`Retrieves the distribution of HTTP requests by post-quantum support over time.`,builder:ml,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups post-quantum`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/post_quantum`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.postQuantum(n)),{successLabel:`Loaded`})}};function gl(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const _l={command:`tls-version`,describe:`Retrieves the distribution of HTTP requests by TLS version over time.`,builder:gl,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries-groups tls-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/tls_version`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseriesGroups.tlsVersion(n)),{successLabel:`Loaded`})}},vl={command:`timeseries-groups`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command($c).command(rl).command(tl).command(al).command(sl).command(ll).command(dl).command(pl).command(hl).command(_l).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function yl(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE_CHANGE`,`MIN0_MAX`]}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const bl={command:`timeseries`,describe:`Retrieves the HTTP requests over time.`,builder:yl,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],normalization:e.normalization,botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.timeseries(n)),{successLabel:`Loaded`})}};function xl(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Sl={command:`browser-family`,describe:`Retrieves the top user agents, aggregated in families, by HTTP requests.`,builder:xl,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],format:e.format};if(e.dryRun){o({command:`cf radar http top browser-family`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/browser_family`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.top.browserFamily(n)),{successLabel:`Loaded`})}};function Cl(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`device-type`,{type:`string`,description:`Filters results by device type.`}).option(`http-protocol`,{type:`string`,description:`Filters results by HTTP protocol (HTTP vs. HTTPS).`}).option(`http-version`,{type:`string`,description:`Filters results by HTTP version.`}).option(`ip-version`,{type:`string`,description:`Filters results by IP version (Ipv4 vs. IPv6).`}).option(`os`,{type:`string`,description:`Filters results by operating system.`}).option(`tls-version`,{type:`string`,description:`Filters results by TLS version.`}).option(`browser-family`,{type:`string`,description:`Filters results by browser family.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const wl={command:`browser`,describe:`Retrieves the top user agents by HTTP requests.`,builder:Cl,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],botClass:e[`bot-class`],deviceType:e[`device-type`],httpProtocol:e[`http-protocol`],httpVersion:e[`http-version`],ipVersion:e[`ip-version`],os:e.os,tlsVersion:e[`tls-version`],browserFamily:e[`browser-family`],format:e.format};if(e.dryRun){o({command:`cf radar http top browser`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/browser`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.http.top.browser(n)),{successLabel:`Loaded`})}},Tl={command:`top`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(wl).command(Sl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},El={command:`http`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Mc).command(bl).command(Zc).command(rc).command(Ac).command(Yc).command(vl).command(Tl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Dl(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`compromised`,{type:`string`,description:`Filters results by compromised credential status (clean vs. compromised).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ol={command:`summary-v2 <dimension>`,describe:`Retrieves an aggregated summary of HTTP authentication requests grouped by the specified dimension.`,builder:Dl,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,botClass:e[`bot-class`],compromised:e.compromised,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar leaked-credentials summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/leaked_credential_checks/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.leakedCredentials.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function kl(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`compromised`,{type:`string`,description:`Filters results by compromised credential status (clean vs. compromised).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Al={command:`bot-class`,describe:`Retrieves the distribution of HTTP authentication requests by bot class.`,builder:kl,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],compromised:e.compromised,format:e.format};if(e.dryRun){o({command:`cf radar leaked-credentials summary bot-class`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/leaked_credential_checks/summary/bot_class`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.leakedCredentials.summary.botClass(n)),{successLabel:`Loaded`})}};function jl(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ml={command:`compromised`,describe:`Retrieves the distribution of HTTP authentication requests by compromised credential status.`,builder:jl,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],botClass:e[`bot-class`],format:e.format};if(e.dryRun){o({command:`cf radar leaked-credentials summary compromised`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/leaked_credential_checks/summary/compromised`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.leakedCredentials.summary.compromised(n)),{successLabel:`Loaded`})}},Nl={command:`summary`,describe:`Leaked credential detection trends and exposure statistics`,builder:e=>e.command(Al).command(Ml).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Pl(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`compromised`,{type:`string`,description:`Filters results by compromised credential status (clean vs. compromised).`}).option(`check-result`,{type:`string`,description:`Filters results by leaked credential check result.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE_CHANGE`,`MIN0_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Fl={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of HTTP authentication requests, grouped by the specified dimension over time.`,builder:Pl,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,botClass:e[`bot-class`],compromised:e.compromised,checkResult:e[`check-result`],limitPerGroup:e[`limit-per-group`],normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar leaked-credentials timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/leaked_credential_checks/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.leakedCredentials.timeseriesGroupsV2(e.dimension,n)),{successLabel:`Loaded`})}};function Il(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`compromised`,{type:`string`,description:`Filters results by compromised credential status (clean vs. compromised).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ll={command:`bot-class`,describe:`Retrieves the distribution of HTTP authentication requests by bot class over time.`,builder:Il,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],compromised:e.compromised,format:e.format};if(e.dryRun){o({command:`cf radar leaked-credentials timeseries-groups bot-class`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/leaked_credential_checks/timeseries_groups/bot_class`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.leakedCredentials.timeseriesGroups.botClass(n)),{successLabel:`Loaded`})}};function Rl(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const zl={command:`compromised`,describe:`Retrieves the distribution of HTTP authentication requests by compromised credential status over time.`,builder:Rl,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],botClass:e[`bot-class`],format:e.format};if(e.dryRun){o({command:`cf radar leaked-credentials timeseries-groups compromised`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/leaked_credential_checks/timeseries_groups/compromised`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.leakedCredentials.timeseriesGroups.compromised(n)),{successLabel:`Loaded`})}},Bl={command:`timeseries-groups`,describe:`Leaked credential detection trends and exposure statistics`,builder:e=>e.command(Ll).command(zl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Vl={command:`leaked-credentials`,describe:`Leaked credential detection trends and exposure statistics`,builder:e=>e.command(Ol).command(Fl).command(Nl).command(Bl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Hl(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the NetFlows attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`product`,{type:`string`,description:`Filters the results by network traffic product types.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ul={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of network traffic (NetFlows) by the specified dimension.`,builder:Hl,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],product:e.product,limitPerGroup:e[`limit-per-group`],format:e.format};if(e.dryRun){o({command:`cf radar netflows summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.netflows.summaryV2(e.dimension,n)),{successLabel:`Loaded`})}};function Wl(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Gl={command:`summary`,describe:`Retrieves the distribution of network traffic (NetFlows) by HTTP vs other protocols.`,builder:Wl,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],format:e.format};if(e.dryRun){o({command:`cf radar netflows summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/summary`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.netflows.summary(n)),{successLabel:`Loaded`})}};function Kl(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the NetFlows attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`product`,{type:`string`,description:`Filters the results by network traffic product types.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ql={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of NetFlows traffic, grouped by the specified dimension over time.`,builder:Kl,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],limitPerGroup:e[`limit-per-group`],normalization:e.normalization,product:e.product,format:e.format};if(e.dryRun){o({command:`cf radar netflows timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.netflows.timeseriesGroups(e.dimension,n)),{successLabel:`Loaded`})}};function Jl(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`product`,{type:`string`,description:`Filters the results by network traffic product types.`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE_CHANGE`,`MIN0_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Yl={command:`timeseries`,describe:`Retrieves network traffic (NetFlows) over time.`,builder:Jl,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],product:e.product,asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar netflows timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.netflows.timeseries(n)),{successLabel:`Loaded`})}};function Xl(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Zl={command:`ases`,describe:`Retrieves the top autonomous systems by network traffic (NetFlows).`,builder:Xl,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],format:e.format};if(e.dryRun){o({command:`cf radar netflows top ases`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/top/ases`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.netflows.top.ases(n)),{successLabel:`Loaded`})}};function Ql(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`geo-id`,{type:`string`,description:"Filters results by Geolocation. Specify a comma-separated list of GeoNames IDs. Prefix with `-` to exclude geoIds from results. For example, `-2267056,360689` excludes results from the 2267056 (Lisbon), but includes results from 5128638 (New York)."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const $l={command:`locations`,describe:`Retrieves the top locations by network traffic (NetFlows).`,builder:Ql,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,geoId:e[`geo-id`],format:e.format};if(e.dryRun){o({command:`cf radar netflows top locations`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/top/locations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.netflows.top.locations(n)),{successLabel:`Loaded`})}},eu={command:`top`,describe:`Network-layer traffic flow data and volumetric trend analysis`,builder:e=>e.command(Zl).command($l).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},tu={command:`netflows`,describe:`Network-layer traffic flow data and volumetric trend analysis`,builder:e=>e.command(Gl).command(Ul).command(Yl).command(ql).command(eu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function nu(e){return e.positional(`slug`,{type:`string`,description:`Origin slug.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ru={command:`get <slug>`,describe:`Retrieves the requested origin information with its regions.`,builder:nu,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar origins get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins/${e.slug==null?`<slug>`:encodeURIComponent(String(e.slug))}`,pathParams:{slug:String(e.slug??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.origins.get(e.slug,n)),{successLabel:`Loaded`})}};function iu(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const au={command:`list`,describe:`Retrieves a list of origins with their regions.`,builder:iu,handler:async e=>{let n={limit:e.limit,offset:e.offset,format:e.format};if(e.dryRun){o({command:`cf radar origins list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.origins.list(n)),{successLabel:`Loaded`})}};function ou(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the origin attribute by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`origin`,{type:`string`,description:`Filters results by origin.`,demandOption:!0}).option(`metric`,{type:`string`,description:`Specifies the metric to retrieve.`,choices:[`CONNECTION_FAILURES`,`REQUESTS`,`RESPONSE_HEADER_RECEIVE_DURATION`,`TCP_HANDSHAKE_DURATION`,`TCP_RTT`,`TLS_HANDSHAKE_DURATION`],demandOption:!0}).option(`region`,{type:`string`,description:`Filters results by origin region.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const su={command:`summary <dimension>`,describe:`Retrieves an aggregated summary of origin metrics grouped by the specified dimension.`,builder:ou,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],origin:e.origin,metric:e.metric,region:e.region,format:e.format};if(e.dryRun){o({command:`cf radar origins summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.origins.summary(e.dimension,n)),{successLabel:`Loaded`})}};function cu(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the origin attribute by which to group the results.`,demandOption:!0}).option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an "other" category.`}).option(`origin`,{type:`string`,description:`Filters results by origin.`,demandOption:!0}).option(`metric`,{type:`string`,description:`Specifies the metric to retrieve.`,choices:[`CONNECTION_FAILURES`,`REQUESTS`,`RESPONSE_HEADER_RECEIVE_DURATION`,`TCP_HANDSHAKE_DURATION`,`TCP_RTT`,`TLS_HANDSHAKE_DURATION`],demandOption:!0}).option(`region`,{type:`string`,description:`Filters results by origin region.`}).option(`normalization`,{type:`string`,description:`Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).`,choices:[`PERCENTAGE`,`MIN0_MAX`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const lu={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of origin metrics grouped by the specified dimension over time.`,builder:cu,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],limitPerGroup:e[`limit-per-group`],origin:e.origin,metric:e.metric,region:e.region,normalization:e.normalization,format:e.format};if(e.dryRun){o({command:`cf radar origins timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.origins.timeseriesGroups(e.dimension,n)),{successLabel:`Loaded`})}};function uu(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`origin`,{type:`string`,description:`Filters results by origin.`,demandOption:!0}).option(`metric`,{type:`string`,description:`Specifies the metric to retrieve.`,choices:[`CONNECTION_FAILURES`,`REQUESTS`,`RESPONSE_HEADER_RECEIVE_DURATION`,`TCP_HANDSHAKE_DURATION`,`TCP_RTT`,`TLS_HANDSHAKE_DURATION`],demandOption:!0}).option(`region`,{type:`string`,description:`Filters results by origin region.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const du={command:`timeseries`,describe:`Retrieves the time series of origin metrics for the specified origin.`,builder:uu,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],origin:e.origin,metric:e.metric,region:e.region,format:e.format};if(e.dryRun){o({command:`cf radar origins timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.origins.timeseries(n)),{successLabel:`Loaded`})}},fu={command:`origins`,describe:`Origins operations`,builder:e=>e.command(ru).command(au).command(su).command(du).command(lu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function pu(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the origin post-quantum data dimension by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const mu={command:`summary <dimension>`,describe:`Returns a summary of origin post-quantum data grouped by the specified dimension.`,builder:pu,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],format:e.format};if(e.dryRun){o({command:`cf radar post-quantum origin summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/post_quantum/origin/summary/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.postQuantum.origin.summary(e.dimension,n)),{successLabel:`Loaded`})}};function hu(e){return e.positional(`dimension`,{type:`string`,description:`Specifies the origin post-quantum data dimension by which to group the results.`,demandOption:!0}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const gu={command:`timeseries-groups <dimension>`,describe:`Returns a timeseries of origin post-quantum data grouped by the specified dimension.`,builder:hu,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],format:e.format};if(e.dryRun){o({command:`cf radar post-quantum origin timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/post_quantum/origin/timeseries_groups/${e.dimension==null?`<dimension>`:encodeURIComponent(String(e.dimension))}`,pathParams:{dimension:String(e.dimension??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.postQuantum.origin.timeseriesGroups(e.dimension,n)),{successLabel:`Loaded`})}},_u={command:`origin`,describe:`Post-quantum encryption adoption and deployment trends across the Internet`,builder:e=>e.command(mu).command(gu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function vu(e){return e.option(`host`,{type:`string`,description:`Hostname or IP address to test for Post-Quantum TLS support, optionally with port (defaults to 443).`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const yu={command:`support`,describe:`Tests whether a hostname or IP address supports Post-Quantum (PQ) TLS key exchange. Returns information about the negotiated key exchange algorithm and whether it uses PQ cryptography.`,builder:vu,handler:async e=>{let n={host:e.host};if(e.dryRun){o({command:`cf radar post-quantum tls support`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/post_quantum/tls/support`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.postQuantum.tls.support(n)),{successLabel:`Loaded`})}},bu={command:`tls`,describe:`Post-quantum encryption adoption and deployment trends across the Internet`,builder:e=>e.command(yu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},xu={command:`post-quantum`,describe:`Operations for post-quantum`,builder:e=>e.command(_u).command(bu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Su(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`metric`,{type:`string`,description:`Defines which metric to return (bandwidth, latency, or DNS response time).`,choices:[`BANDWIDTH`,`DNS`,`LATENCY`],demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Cu={command:`summary`,describe:`Retrieves a summary (percentiles) of bandwidth, latency, or DNS response time from the Radar Internet Quality Index (IQI).`,builder:Su,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,metric:e.metric,format:e.format};if(e.dryRun){o({command:`cf radar quality iqi summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/quality/iqi/summary`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.quality.iqi.summary(n)),{successLabel:`Loaded`})}};function wu(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`interpolation`,{type:`boolean`,description:`Enables interpolation for all series (using the average).`}).option(`metric`,{type:`string`,description:`Defines which metric to return (bandwidth, latency, or DNS response time).`,choices:[`BANDWIDTH`,`DNS`,`LATENCY`],demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Tu={command:`timeseries-groups`,describe:`Retrieves a time series (percentiles) of bandwidth, latency, or DNS response time from the Radar Internet Quality Index (IQI).`,builder:wu,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,interpolation:e.interpolation,metric:e.metric,format:e.format};if(e.dryRun){o({command:`cf radar quality iqi timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/quality/iqi/timeseries_groups`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.quality.iqi.timeseriesGroups(n)),{successLabel:`Loaded`})}},Eu={command:`iqi`,describe:`Internet connection quality metrics — speed, latency, and jitter by geography and ASN`,builder:e=>e.command(Cu).command(Tu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Du(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`bucket-size`,{type:`number`,description:`Specifies the width for every bucket in the histogram.`}).option(`metric-group`,{type:`string`,description:`Metrics to be returned.`,choices:[`BANDWIDTH`,`LATENCY`,`JITTER`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ou={command:`histogram`,describe:`Retrieves a histogram from the previous 90 days of Cloudflare Speed Test data, split into fixed bandwidth (Mbps), latency (ms), or jitter (ms) buckets.`,builder:Du,handler:async e=>{let n={name:e.name,dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,bucketSize:e[`bucket-size`],metricGroup:e[`metric-group`],format:e.format};if(e.dryRun){o({command:`cf radar quality speed histogram`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/quality/speed/histogram`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.quality.speed.histogram(n)),{successLabel:`Loaded`})}};function ku(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Au={command:`summary`,describe:`Retrieves a summary of bandwidth, latency, jitter, and packet loss, from the previous 90 days of Cloudflare Speed Test data.`,builder:ku,handler:async e=>{let n={name:e.name,dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar quality speed summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/quality/speed/summary`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.quality.speed.summary(n)),{successLabel:`Loaded`})}};function ju(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`order-by`,{type:`string`,description:`Specifies the metric to order the results by.`,choices:[`BANDWIDTH_DOWNLOAD`,`BANDWIDTH_UPLOAD`,`LATENCY_IDLE`,`LATENCY_LOADED`,`JITTER_IDLE`,`JITTER_LOADED`]}).option(`reverse`,{type:`boolean`,description:`Reverses the order of results.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Mu={command:`ases`,describe:`Retrieves the top autonomous systems by bandwidth, latency, jitter, or packet loss, from the previous 90 days of Cloudflare Speed Test data.`,builder:ju,handler:async e=>{let n={limit:e.limit,name:e.name,dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,orderBy:e[`order-by`],reverse:e.reverse,format:e.format};if(e.dryRun){o({command:`cf radar quality speed top ases`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/quality/speed/top/ases`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.quality.speed.top.ases(n)),{successLabel:`Loaded`})}};function Nu(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`order-by`,{type:`string`,description:`Specifies the metric to order the results by.`,choices:[`BANDWIDTH_DOWNLOAD`,`BANDWIDTH_UPLOAD`,`LATENCY_IDLE`,`LATENCY_LOADED`,`JITTER_IDLE`,`JITTER_LOADED`]}).option(`reverse`,{type:`boolean`,description:`Reverses the order of results.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Pu={command:`locations`,describe:`Retrieves the top locations by bandwidth, latency, jitter, or packet loss, from the previous 90 days of Cloudflare Speed Test data.`,builder:Nu,handler:async e=>{let n={limit:e.limit,name:e.name,dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,orderBy:e[`order-by`],reverse:e.reverse,format:e.format};if(e.dryRun){o({command:`cf radar quality speed top locations`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/quality/speed/top/locations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.quality.speed.top.locations(n)),{successLabel:`Loaded`})}},Fu={command:`top`,describe:`Internet connection quality metrics — speed, latency, and jitter by geography and ASN`,builder:e=>e.command(Mu).command(Pu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Iu={command:`speed`,describe:`Internet connection quality metrics — speed, latency, and jitter by geography and ASN`,builder:e=>e.command(Ou).command(Au).command(Fu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Lu={command:`quality`,describe:`Operations for quality`,builder:e=>e.command(Eu).command(Iu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ru(e){return e.positional(`domain`,{type:`string`,description:`Domain name.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`ranking-type`,{type:`string`,description:`The ranking type.`,choices:[`POPULAR`,`TRENDING_RISE`,`TRENDING_STEADY`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`include-top-locations`,{type:`boolean`,description:`Includes top locations in the response.`}).option(`date`,{type:`string`,description:`Filters results by the specified array of dates.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const zu={command:`get <domain>`,describe:`Retrieves domain rank details. Cloudflare provides an ordered rank for the top 100 domains, but for the remainder it only provides ranking buckets like top 200 thousand, top one million, etc.. These are available through Radar datasets endpoints.`,builder:Ru,handler:async e=>{let n={limit:e.limit,rankingType:e[`ranking-type`],name:e.name,includeTopLocations:e[`include-top-locations`],date:e.date,format:e.format};if(e.dryRun){o({command:`cf radar ranking domain get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ranking/domain/${e.domain==null?`<domain>`:encodeURIComponent(String(e.domain))}`,pathParams:{domain:String(e.domain??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ranking.domain.get(e.domain,n)),{successLabel:`Loaded`})}},Bu={command:`domain`,describe:`Top domain rankings based on DNS query popularity across the Cloudflare network`,builder:e=>e.command(zu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Vu(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date`,{type:`string`,description:`Filters results by the specified array of dates.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Hu={command:`categories`,describe:`Retrieves the list of Internet services categories.`,builder:Vu,handler:async e=>{let n={limit:e.limit,name:e.name,date:e.date,format:e.format};if(e.dryRun){o({command:`cf radar ranking internet-services categories`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ranking/internet_services/categories`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ranking.internetServices.categories(n)),{successLabel:`Loaded`})}};function Uu(e){return e.option(`service-category`,{type:`string`,description:`Filters results by Internet service category.`}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Wu={command:`timeseries-groups`,describe:`Retrieves Internet Services rank update changes over time.`,builder:Uu,handler:async e=>{let n={serviceCategory:e[`service-category`],limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],format:e.format};if(e.dryRun){o({command:`cf radar ranking internet-services timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ranking/internet_services/timeseries_groups`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ranking.internetServices.timeseriesGroups(n)),{successLabel:`Loaded`})}};function Gu(e){return e.option(`service-category`,{type:`string`,description:`Filters results by Internet service category.`}).option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date`,{type:`string`,description:`Filters results by the specified array of dates.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ku={command:`top`,describe:`Retrieves top Internet services based on their rank.`,builder:Gu,handler:async e=>{let n={serviceCategory:e[`service-category`],limit:e.limit,name:e.name,date:e.date,format:e.format};if(e.dryRun){o({command:`cf radar ranking internet-services top`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ranking/internet_services/top`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ranking.internetServices.top(n)),{successLabel:`Loaded`})}},qu={command:`internet-services`,describe:`Top domain rankings based on DNS query popularity across the Cloudflare network`,builder:e=>e.command(Hu).command(Wu).command(Ku).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ju(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`ranking-type`,{type:`string`,description:`The ranking type.`,choices:[`POPULAR`,`TRENDING_RISE`,`TRENDING_STEADY`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify a comma-separated list of alpha-2 location codes.`}).option(`domains`,{type:`string`,description:`Filters results by domain name. Specify a comma-separated list of domain names.`}).option(`domain-category`,{type:`string`,description:`Filters results by domain category.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Yu={command:`timeseries-groups`,describe:`Retrieves domains rank over time.`,builder:Ju,handler:async e=>{let n={limit:e.limit,rankingType:e[`ranking-type`],name:e.name,location:e.location,domains:e.domains,domainCategory:e[`domain-category`],dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],format:e.format};if(e.dryRun){o({command:`cf radar ranking timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ranking/timeseries_groups`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ranking.timeseriesGroups(n)),{successLabel:`Loaded`})}};function Xu(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify a comma-separated list of alpha-2 location codes.`}).option(`domain-category`,{type:`string`,description:`Filters results by domain category.`}).option(`date`,{type:`string`,description:`Filters results by the specified array of dates.`}).option(`ranking-type`,{type:`string`,description:`The ranking type.`,choices:[`POPULAR`,`TRENDING_RISE`,`TRENDING_STEADY`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Zu={command:`top`,describe:`Retrieves the top or trending domains based on their rank. Popular domains are domains of broad appeal based on how people use the Internet. Trending domains are domains that are generating a surge in interest. For more information on top domains, see https://blog.cloudflare.com/radar-domain-rankings/.`,builder:Xu,handler:async e=>{let n={limit:e.limit,name:e.name,location:e.location,domainCategory:e[`domain-category`],date:e.date,rankingType:e[`ranking-type`],format:e.format};if(e.dryRun){o({command:`cf radar ranking top`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ranking/top`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.ranking.top(n)),{successLabel:`Loaded`})}},Qu={command:`ranking`,describe:`Top domain rankings based on DNS query popularity across the Cloudflare network`,builder:e=>e.command(Yu).command(Zu).command(Bu).command(qu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function $u(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`user-agent-category`,{type:`string`,description:`Filters results by user agent category.`,choices:[`AI`]}).option(`date`,{type:`string`,description:`Filters results by the specified array of dates.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ed={command:`domain-categories`,describe:`Retrieves the top domain categories by the number of robots.txt files parsed.`,builder:$u,handler:async e=>{let n={limit:e.limit,name:e.name,userAgentCategory:e[`user-agent-category`],date:e.date,format:e.format};if(e.dryRun){o({command:`cf radar robots-txt top domain-categories`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/robots_txt/top/domain_categories`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.robotsTxt.top.domainCategories(n)),{successLabel:`Loaded`})}};function td(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`user-agent-category`,{type:`string`,description:`Filters results by user agent category.`,choices:[`AI`]}).option(`date`,{type:`string`,description:`Filters results by the specified array of dates.`}).option(`domain-category`,{type:`string`,description:`Filters results by domain category.`}).option(`directive`,{type:`string`,description:`Filters results by robots.txt directive.`,choices:[`ALLOW`,`DISALLOW`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const nd={command:`directive`,describe:`Retrieves the top user agents on robots.txt files.`,builder:td,handler:async e=>{let n={limit:e.limit,name:e.name,userAgentCategory:e[`user-agent-category`],date:e.date,domainCategory:e[`domain-category`],directive:e.directive,format:e.format};if(e.dryRun){o({command:`cf radar robots-txt top user-agents directive`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/robots_txt/top/user_agents/directive`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.robotsTxt.top.userAgents.directive(n)),{successLabel:`Loaded`})}},rd={command:`user-agents`,describe:`Robots.txt adoption and crawler directive trends across the web`,builder:e=>e.command(nd).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},id={command:`top`,describe:`Robots.txt adoption and crawler directive trends across the web`,builder:e=>e.command(ed).command(rd).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ad={command:`robots-txt`,describe:`Operations for robots-txt`,builder:e=>e.command(id).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function od(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`limit-per-group`,{type:`number`,description:`Limits the number of objects per search category.`}).option(`query`,{type:`string`,description:`String used to perform the search operation.`,demandOption:!0}).option(`include`,{type:`string`,description:`Search types included in results.`}).option(`exclude`,{type:`string`,description:`Search types excluded from results.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const sd={command:`global`,describe:"Searches for locations, autonomous systems, reports, bots, certificate logs, certificate authorities, industries and verticals. Location names can be localized by sending an `Accept-Language` HTTP header with a BCP 47 language tag (e.g., `Accept-Language: pt-PT`). The full quality-value chain is supported (e.g., `pt-PT,pt;q=0.9,en;q=0.8`).",builder:od,handler:async e=>{let n={limit:e.limit,limitPerGroup:e[`limit-per-group`],query:e.query,include:e.include,exclude:e.exclude,format:e.format};if(e.dryRun){o({command:`cf radar search global`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/search/global`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.search.global(n)),{successLabel:`Loaded`})}},cd={command:`search`,describe:`Search Radar data across IPs, ASNs, domains, and locations`,builder:e=>e.command(sd).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ld(e){return e.option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ud={command:`summary`,describe:`Retrieves the distribution of connection stage by TCP connections terminated within the first 10 packets by a reset or timeout.`,builder:ld,handler:async e=>{let n={name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar tcp-resets-timeouts summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/tcp_resets_timeouts/summary`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.tcpResetsTimeouts.summary(n)),{successLabel:`Loaded`})}};function dd(e){return e.option(`agg-interval`,{type:`string`,description:`Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).`,choices:[`15m`,`1h`,`1d`,`1w`]}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const fd={command:`timeseries-groups`,describe:`Retrieves the distribution of connection stage by TCP connections terminated within the first 10 packets by a reset or timeout over time.`,builder:dd,handler:async e=>{let n={aggInterval:e[`agg-interval`],name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar tcp-resets-timeouts timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/tcp_resets_timeouts/timeseries_groups`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.tcpResetsTimeouts.timeseriesGroups(n)),{successLabel:`Loaded`})}},pd={command:`tcp-resets-timeouts`,describe:`TCP connection reset and timeout statistics indicating network health issues`,builder:e=>e.command(ud).command(fd).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function md(e){return e.positional(`tld`,{type:`string`,description:`Top-level domain.`,demandOption:!0}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const hd={command:`get <tld>`,describe:`Retrieves the requested TLD information.`,builder:md,handler:async e=>{let n={format:e.format};if(e.dryRun){o({command:`cf radar tlds get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/tlds/${e.tld==null?`<tld>`:encodeURIComponent(String(e.tld))}`,pathParams:{tld:String(e.tld??``)},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.tlds.get(e.tld,n)),{successLabel:`Loaded`})}};function gd(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`tld-manager`,{type:`string`,description:`Filters results by TLD manager.`}).option(`tld-type`,{type:`string`,description:`Filters results by TLD type.`,choices:[`GENERIC`,`COUNTRY_CODE`,`GENERIC_RESTRICTED`,`INFRASTRUCTURE`,`SPONSORED`]}).option(`tld`,{type:`string`,description:`Filters results by top-level domain. Specify a comma-separated list of TLDs.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const _d={command:`list`,describe:`Retrieves a list of TLDs.`,builder:gd,handler:async e=>{let n={limit:e.limit,offset:e.offset,tldManager:e[`tld-manager`],tldType:e[`tld-type`],tld:e.tld,format:e.format};if(e.dryRun){o({command:`cf radar tlds list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/tlds`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.tlds.list(n)),{successLabel:`Loaded`})}},vd={command:`tlds`,describe:`Tlds operations`,builder:e=>e.command(hd).command(_d).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function yd(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`offset`,{type:`number`,description:`Skips the specified number of objects before fetching the results.`}).option(`date-range`,{type:`string`,description:`Filters results by date range.`}).option(`date-start`,{type:`string`,description:`Start of the date range (inclusive).`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`status`,{type:`string`,description:`Status`,choices:[`VERIFIED`,`UNVERIFIED`]}).option(`type`,{type:`string`,description:`Filters results by entity type (LOCATION, AS, or ORIGIN).`}).option(`asn`,{type:`number`,description:`Filters results by Autonomous System. Specify a single Autonomous System Number (ASN) as integer.`}).option(`location`,{type:`string`,description:`Filters results by location. Specify an alpha-2 location code.`}).option(`origin`,{type:`string`,description:`Filters results by origin.`}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const bd={command:`get`,describe:`Retrieves the latest Internet traffic anomalies, which are signals that might indicate an outage. These alerts are automatically detected by Radar and manually verified by our team.`,builder:yd,handler:async e=>{let n={limit:e.limit,offset:e.offset,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],status:e.status,type:e.type,asn:e.asn,location:e.location,origin:e.origin,format:e.format};if(e.dryRun){o({command:`cf radar traffic-anomalies get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/traffic_anomalies`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.trafficAnomalies.get(n)),{successLabel:`Loaded`})}};function xd(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`date-range`,{type:`string`,description:`Filters results by date range.`}).option(`date-start`,{type:`string`,description:`Start of the date range (inclusive).`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`status`,{type:`string`,description:`Status`,choices:[`VERIFIED`,`UNVERIFIED`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Sd={command:`get`,describe:`Retrieves the sum of Internet traffic anomalies, grouped by location. These anomalies are signals that might indicate an outage, automatically detected by Radar and manually verified by our team.`,builder:xd,handler:async e=>{let n={limit:e.limit,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],status:e.status,format:e.format};if(e.dryRun){o({command:`cf radar traffic-anomalies locations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/traffic_anomalies/locations`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.trafficAnomalies.locations.get(n)),{successLabel:`Loaded`})}},Cd={command:`locations`,describe:`Detected traffic anomalies and unusual patterns in Internet traffic flows`,builder:e=>e.command(Sd).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},wd={command:`traffic-anomalies`,describe:`Detected traffic anomalies and unusual patterns in Internet traffic flows`,builder:e=>e.command(bd).command(Cd).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Td(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ed={command:`bots`,describe:`Retrieves the top verified bots by HTTP requests, with owner and category.`,builder:Td,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar verified-bots top bots`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/verified_bots/top/bots`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.verifiedBots.top.bots(n)),{successLabel:`Loaded`})}};function Dd(e){return e.option(`limit`,{type:`number`,description:`Limits the number of objects returned in the response.`}).option(`name`,{type:`string`,description:`Array of names used to label the series in the response.`}).option(`date-range`,{type:`string`,description:"Filters results by date range. For example, use `7d` and `7dcontrol` to compare this week with the previous week. Use this parameter or set specific start and end dates (`dateStart` and `dateEnd` parameters)."}).option(`date-start`,{type:`string`,description:`Start of the date range.`}).option(`date-end`,{type:`string`,description:`End of the date range (inclusive).`}).option(`asn`,{type:`string`,description:"Filters results by Autonomous System. Specify one or more Autonomous System Numbers (ASNs) as a comma-separated list. Prefix with `-` to exclude ASNs from results. For example, `-174, 3356` excludes results from AS174, but includes results from AS3356."}).option(`location`,{type:`string`,description:"Filters results by location. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude locations from results. For example, `-US,PT` excludes results from the US, but includes results from PT."}).option(`continent`,{type:`string`,description:"Filters results by continent. Specify a comma-separated list of alpha-2 codes. Prefix with `-` to exclude continents from results. For example, `-EU,NA` excludes results from EU, but includes results from NA."}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Od={command:`categories`,describe:`Retrieves the top verified bot categories by HTTP requests, along with their corresponding percentage, over the total verified bot HTTP requests.`,builder:Dd,handler:async e=>{let n={limit:e.limit,name:e.name,dateRange:e[`date-range`],dateStart:e[`date-start`],dateEnd:e[`date-end`],asn:e.asn,location:e.location,continent:e.continent,format:e.format};if(e.dryRun){o({command:`cf radar verified-bots top categories`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/verified_bots/top/categories`,pathParams:{},query:n,bodyKind:`none`});return}let r=await t(e);a(await s(`Loading`,async()=>r.radar.verifiedBots.top.categories(n)),{successLabel:`Loaded`})}},kd={command:`top`,describe:`Catalog of known good bots (Googlebot, Bingbot, etc.) and their traffic patterns`,builder:e=>e.command(Ed).command(Od).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ad={command:`verified-bots`,describe:`Operations for verified-bots`,builder:e=>e.command(kd).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},jd={command:`radar`,describe:`Internet-wide traffic intelligence — BGP, DNS, HTTP trends, attack data, and network quality insights`,builder:e=>e.command(p).command(oe).command(me).command(nt).command(Zn).command(Rr).command(ei).command(_i).command(wi).command(wa).command(is).command(Ts).command(As).command(El).command(Vl).command(tu).command(fu).command(xu).command(Lu).command(Qu).command(ad).command(cd).command(pd).command(vd).command(wd).command(Ad).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{jd as default};