cf 0.3.0 → 0.5.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 (228) hide show
  1. package/README.md +7 -1
  2. package/dist/_meta/agent-context.json +26 -21
  3. package/dist/_meta/commands.json +7696 -18100
  4. package/dist/_meta/schemas.json +6411 -13925
  5. package/dist/{abuse-reports-dMIfUJ8v.mjs → abuse-reports-Ina5TlsU.mjs} +2 -2
  6. package/dist/{accounts-Kx1epdA1.mjs → accounts-B_joQcMi.mjs} +9 -9
  7. package/dist/{acm-Utu252kC.mjs → acm-_kIHqYME.mjs} +2 -2
  8. package/dist/{addressing-CBq7Z7Vq.mjs → addressing-CaFlw8y1.mjs} +10 -10
  9. package/dist/{agent-context-BGTU299M.mjs → agent-context-DMPfi54f.mjs} +1 -1
  10. package/dist/ai-CqnhNb_c.mjs +2 -0
  11. package/dist/ai-gateway-pgYGI519.mjs +8 -0
  12. package/dist/ai-search-eqQMPQol.mjs +7 -0
  13. package/dist/ai_gateway--vuVLnOm.mjs +4 -0
  14. package/dist/{alerting-CqmEIaKn.mjs → alerting-CPxHiYHb.mjs} +5 -5
  15. package/dist/{analytics-Dv-X8x7D.mjs → analytics-DSSRDZz8.mjs} +1 -1
  16. package/dist/analytics_engine-gWyfnsCs.mjs +2 -0
  17. package/dist/{api-gateway-CNv0IHTU.mjs → api-gateway-BXXGFCVR.mjs} +10 -10
  18. package/dist/argo-aC6A3JyX.mjs +2 -0
  19. package/dist/artifacts-HD4V2xpK.mjs +4 -0
  20. package/dist/audit-logs-BuExU_nz.mjs +2 -0
  21. package/dist/auth-CSC4yhEJ.mjs +9 -0
  22. package/dist/auth-D5hNsOFq.mjs +5 -0
  23. package/dist/billing-COaghyxl.mjs +2 -0
  24. package/dist/bot-management-DmEzeV1Y.mjs +5 -0
  25. package/dist/botnet-feed-ByEAXAkw.mjs +3 -0
  26. package/dist/brand-protection-dPrGe8sL.mjs +3 -0
  27. package/dist/browser-rendering-BiSGnpBf.mjs +4 -0
  28. package/dist/{build-DYkGW4dh.mjs → build-HuS9-R0V.mjs} +131 -131
  29. package/dist/{cache-DsoW6Xwv.mjs → cache-CY-7Lt71.mjs} +4 -4
  30. package/dist/calls-wOQGDWPl.mjs +4 -0
  31. package/dist/certificate-authorities-CtqzAtxQ.mjs +2 -0
  32. package/dist/chunk-6IEM75FG-BEjRFMGh.mjs +2 -0
  33. package/dist/client-certificates-CRf41xLe.mjs +3 -0
  34. package/dist/cloud-connector-BA5IRZUP.mjs +2 -0
  35. package/dist/{cloudforce-one-2Bhz8YdW.mjs → cloudforce-one-Bq_qPAWs.mjs} +20 -20
  36. package/dist/{completions-BwRpZQVn.mjs → completions-DOeHPdCG.mjs} +2 -2
  37. package/dist/config-B5k-XbwS.mjs +2 -0
  38. package/dist/connectivity-Bx3MgTHX.mjs +3 -0
  39. package/dist/connector-interrupts-D7ylweJZ.mjs +2 -0
  40. package/dist/connector-telemetry-events-6izV1kbP.mjs +2 -0
  41. package/dist/connector-telemetry-snapshots-BnjKbyxX.mjs +2 -0
  42. package/dist/connectors-DRt4e6d_.mjs +3 -0
  43. package/dist/content-scanning-Cd2vy5Sz.mjs +4 -0
  44. package/dist/context-jpewmual.mjs +2 -0
  45. package/dist/{custom-certificates-aAiEguR7.mjs → custom-certificates-DYE-9epx.mjs} +3 -3
  46. package/dist/{custom-hostnames-AG5yBHIi.mjs → custom-hostnames-CtuTdFcX.mjs} +4 -4
  47. package/dist/custom-nameservers-CWqA51in.mjs +3 -0
  48. package/dist/custom-pages-DeUKEFGe.mjs +4 -0
  49. package/dist/d1-DvWY9Gp4.mjs +4 -0
  50. package/dist/data-security-BPo6dIWu.mjs +6 -0
  51. package/dist/dcv-delegation-Bgf86J-r.mjs +2 -0
  52. package/dist/{deploy-CQial3kN.mjs → deploy-dVrgDUOp.mjs} +1 -1
  53. package/dist/{dev-B38LfCTl.mjs → dev-C01_Lby6.mjs} +1 -1
  54. package/dist/diagnostics-6nKPmVgz.mjs +3 -0
  55. package/dist/{dispatch-namespaces-DmHvoBOg.mjs → dispatch-namespaces-64lXx2WJ.mjs} +6 -6
  56. package/dist/dist-C6zxsVdY.mjs +306 -0
  57. package/dist/{dist-AIcZFk0U.mjs → dist-t_YrL25p.mjs} +7 -7
  58. package/dist/{dns-VMhQSr5n.mjs → dns-ClciFGxx.mjs} +13 -13
  59. package/dist/dns-firewall-DfUmXDCe.mjs +57 -0
  60. package/dist/durable-objects-CMaYZ-YU.mjs +2 -0
  61. package/dist/{email-routing-tIR2SFu-.mjs → email-routing-CGXhFqF5.mjs} +9 -9
  62. package/dist/{email-security-Ca1id3rZ.mjs → email-security-D5viPq8S.mjs} +7 -7
  63. package/dist/email-sending-C2jpc3gh.mjs +3 -0
  64. package/dist/{filters-A4dg_a68.mjs → filters-bzsFcWt0.mjs} +3 -3
  65. package/dist/{firewall-DWPQgYd9.mjs → firewall-DYZcTtIC.mjs} +10 -10
  66. package/dist/{fraud-BMkSsJGU.mjs → fraud-C03MtdZb.mjs} +1 -1
  67. package/dist/google-tag-gateway-Dfy887yA.mjs +2 -0
  68. package/dist/{healthchecks-CtIfrFql.mjs → healthchecks-DRoAlWgr.mjs} +3 -3
  69. package/dist/hostnames-CFgIVI3s.mjs +3 -0
  70. package/dist/hyperdrive-C7-gwTSV.mjs +18 -0
  71. package/dist/iam-DqVPzGrb.mjs +6 -0
  72. package/dist/images-BYfl4YgR.mjs +7 -0
  73. package/dist/index.mjs +1 -1
  74. package/dist/intel-duTEPIHc.mjs +3 -0
  75. package/dist/{ips-K4bzaGqd.mjs → ips-nv9INuWZ.mjs} +1 -1
  76. package/dist/keyless-certificates-CRCDVd3g.mjs +3 -0
  77. package/dist/{kv-8o27w_pY.mjs → kv-CZoV4tiv.mjs} +4 -4
  78. package/dist/leaked-credential-checks-DNIBg7Pe.mjs +3 -0
  79. package/dist/{load-balancers-DtG8nj25.mjs → load-balancers--OMg0HNt.mjs} +5 -5
  80. package/dist/{logpush-4L0njy1d.mjs → logpush-C0_lZTyY.mjs} +3 -3
  81. package/dist/{logs-B_Yp95hv.mjs → logs-BtpWZQfV.mjs} +2 -2
  82. package/dist/magic-cloud-networking-u6rwYbGg.mjs +5 -0
  83. package/dist/{magic-network-monitoring-BnwvM4-I.mjs → magic-network-monitoring-CKgQyRj4.mjs} +3 -3
  84. package/dist/{magic-transit-CXDyvhxq.mjs → magic-transit-CLhMcJ_-.mjs} +32 -33
  85. package/dist/managed-transforms-D0Z2mlth.mjs +3 -0
  86. package/dist/mtls-certificates-BL65NK5T.mjs +3 -0
  87. package/dist/{network-interconnects-rrr7red3.mjs → network-interconnects-Bgu9gmaG.mjs} +5 -5
  88. package/dist/oauth-Bk-F-tIO.mjs +52 -0
  89. package/dist/{observability-DWvpqnQJ.mjs → observability-BynRbTF4.mjs} +3 -3
  90. package/dist/open-YWOUIZ5Y-3jqSKAB1.mjs +4 -0
  91. package/dist/{organizations-T77D50Sq.mjs → organizations-BqJHyvMK.mjs} +3 -3
  92. package/dist/origin-ca-certificates-BGvYwm3C.mjs +3 -0
  93. package/dist/origin-post-quantum-encryption-9KOE8YPI.mjs +2 -0
  94. package/dist/{origin-tls-client-auth-CaVW1Ztp.mjs → origin-tls-client-auth-d3snC3vr.mjs} +3 -3
  95. package/dist/{output-BJFNwj7b.mjs → output-B6fBFRqe.mjs} +1 -1
  96. package/dist/{page-rules-CjZPTMQX.mjs → page-rules-EZHJePmn.mjs} +4 -4
  97. package/dist/{page-shield-D5RRNJCY.mjs → page-shield-CXJioWPs.mjs} +5 -5
  98. package/dist/{pages-CWJtJnL0.mjs → pages-D4aYteKk.mjs} +8 -8
  99. package/dist/{pipelines-B0L_7j9e.mjs → pipelines-G8Iusxq-.mjs} +5 -5
  100. package/dist/progress-DrDErV9w.mjs +2 -0
  101. package/dist/queues-DEkbKqZX.mjs +6 -0
  102. package/dist/{r2-DQIcyRtA.mjs → r2-CV0IkCAW.mjs} +9 -9
  103. package/dist/r2-data-catalog-NtqGC_a_.mjs +14 -0
  104. package/dist/radar-D986zPJr.mjs +2 -0
  105. package/dist/{rate-limits-DcrQV6Ar.mjs → rate-limits-B2wRsUX1.mjs} +3 -3
  106. package/dist/raw-fetch-_n0lMAnD.mjs +2 -0
  107. package/dist/{realtime-kit-CaquuVOE.mjs → realtime-kit-Ld3c5eU6.mjs} +9 -9
  108. package/dist/{registrar-Ko-xZemf.mjs → registrar-CDIwTz3G.mjs} +6 -6
  109. package/dist/request-tracers-D7SFMDik.mjs +2 -0
  110. package/dist/resource-sharing-YIQ04jXE.mjs +5 -0
  111. package/dist/{resource-tagging-C3qtLzCz.mjs → resource-tagging-Bd6Y03sg.mjs} +7 -7
  112. package/dist/rules-DHjLP5Kx.mjs +4 -0
  113. package/dist/{rulesets-CBgpeSvJ.mjs → rulesets-q4QABpKs.mjs} +7 -7
  114. package/dist/rum-SmT4HZmM.mjs +4 -0
  115. package/dist/{schema-D16TgWBg.mjs → schema-BR31o4P6.mjs} +1 -1
  116. package/dist/{schema-validation-Dgv_opM3.mjs → schema-validation-vVetgC_P.mjs} +5 -5
  117. package/dist/{scim-DdSEr4kZ.mjs → scim-ChOkZpNx.mjs} +2 -2
  118. package/dist/{session-COHHdS7A.mjs → sdk-DhIhH6GB.mjs} +4 -4
  119. package/dist/{secrets-store-7BfyvJLb.mjs → secrets-store-BAK9G12O.mjs} +12 -12
  120. package/dist/security-center-eScuYDKP.mjs +2 -0
  121. package/dist/security-txt-x7R4gmQu.mjs +3 -0
  122. package/dist/session-DHYCE-PM.mjs +93 -0
  123. package/dist/shared-BAjo72Lz.mjs +2 -0
  124. package/dist/{smart-shield-TeWZFnH2.mjs → smart-shield-CWlSsNi8.mjs} +2 -2
  125. package/dist/snippets-DrlgYJYp.mjs +4 -0
  126. package/dist/{spawn-DcppKGI5.mjs → spawn-CCGzKlC4.mjs} +1 -1
  127. package/dist/{spectrum-CTTZID8u.mjs → spectrum-pVGxb7u5.mjs} +6 -6
  128. package/dist/speed-ZFrMWDgd.mjs +4 -0
  129. package/dist/src-DU7FBCOX.mjs +108 -0
  130. package/dist/ssl-9JY05sYt.mjs +15 -0
  131. package/dist/stream-tRU39b8K.mjs +14 -0
  132. package/dist/{tenants-Bd7NGQ_m.mjs → tenants-HLGUazms.mjs} +1 -1
  133. package/dist/{token-validation-DAgtFOvs.mjs → token-validation-_VdamKpz.mjs} +4 -4
  134. package/dist/{tools-DXQmfFuE.mjs → tools-D_hfUU_Z.mjs} +1 -1
  135. package/dist/{turnstile-cfdaO4ca.mjs → turnstile-BRzXd28B.mjs} +4 -4
  136. package/dist/{ui-D4KtlMh9.mjs → ui-erjBdVKL.mjs} +1 -1
  137. package/dist/url-normalization-D-NxuLtN.mjs +3 -0
  138. package/dist/url-scanner-BzzR6iDx.mjs +2 -0
  139. package/dist/{user-CAo-yCJA.mjs → user-C4omq__w.mjs} +2 -2
  140. package/dist/vectorize-By6EqcNR.mjs +4 -0
  141. package/dist/{versions-CUwWJWmy.mjs → versions-CBHwWPAM.mjs} +1 -1
  142. package/dist/{waiting-rooms-Dln5ICg5.mjs → waiting-rooms-u6KwrzWd.mjs} +6 -6
  143. package/dist/{web3-HQJRm38W.mjs → web3-DQ5dmE9W.mjs} +3 -3
  144. package/dist/{workers-Dg7ddG2Q.mjs → workers-D8Be7_as.mjs} +14 -14
  145. package/dist/workers-builds-BE3W3qNk.mjs +7 -0
  146. package/dist/{workflows-VquuSh2J.mjs → workflows-BWWufqFA.mjs} +3 -3
  147. package/dist/zaraz-Bsa9AvVL.mjs +2 -0
  148. package/dist/{zero-trust-CP96wnSh.mjs → zero-trust-UNVZFnKu.mjs} +87 -87
  149. package/dist/zero_trust-B0_Rk4p2.mjs +3 -0
  150. package/dist/zones-BXtdwt6E.mjs +21 -0
  151. package/package.json +4 -4
  152. package/dist/ai-DOOKLPkG.mjs +0 -2
  153. package/dist/ai-gateway-Cj1T3avF.mjs +0 -8
  154. package/dist/ai-search-CQF_Sn7d.mjs +0 -7
  155. package/dist/ai_gateway-C3fH22C0.mjs +0 -4
  156. package/dist/analytics_engine-DdXVR8z2.mjs +0 -2
  157. package/dist/argo-CX_A4kcn.mjs +0 -2
  158. package/dist/audit-logs-BfBf3oo-.mjs +0 -2
  159. package/dist/auth-SyWhMmPu.mjs +0 -6
  160. package/dist/auth-ffdf9yR0.mjs +0 -135
  161. package/dist/autorag-BuGhGTeZ.mjs +0 -2
  162. package/dist/billing-PoG81XaQ.mjs +0 -2
  163. package/dist/bot-management-CFvtVx62.mjs +0 -5
  164. package/dist/botnet-feed-B-M4Yu0W.mjs +0 -3
  165. package/dist/brand-protection-D05Eg-_6.mjs +0 -3
  166. package/dist/browser-rendering-xu8F_Rrv.mjs +0 -4
  167. package/dist/calls-CZbO7TyR.mjs +0 -4
  168. package/dist/certificate-authorities-D2yr7_3t.mjs +0 -2
  169. package/dist/client-certificates-MJcDsTId.mjs +0 -3
  170. package/dist/cloud-connector-DWOrN2eM.mjs +0 -2
  171. package/dist/config-DYzlVxcB.mjs +0 -2
  172. package/dist/connectivity-BX8C7tvK.mjs +0 -3
  173. package/dist/content-scanning-r6uzMO1r.mjs +0 -4
  174. package/dist/context-DGlHRGWM.mjs +0 -2
  175. package/dist/custom-nameservers-D1DtlRue.mjs +0 -3
  176. package/dist/custom-pages-DQCi2plU.mjs +0 -4
  177. package/dist/d1-DbnYhw45.mjs +0 -4
  178. package/dist/data-security-D_EtYBfo.mjs +0 -6
  179. package/dist/dcv-delegation-CHspSzTI.mjs +0 -2
  180. package/dist/diagnostics-BJQGjVJn.mjs +0 -3
  181. package/dist/dist-DNBSHor6.mjs +0 -301
  182. package/dist/dns-firewall-B4DVXFBQ.mjs +0 -57
  183. package/dist/durable-objects-CTboySEo.mjs +0 -2
  184. package/dist/email-sending-DwWKc5jC.mjs +0 -3
  185. package/dist/google-tag-gateway-BGD49nRC.mjs +0 -2
  186. package/dist/hostnames-BiomxukN.mjs +0 -3
  187. package/dist/hyperdrive-Da104VaQ.mjs +0 -18
  188. package/dist/iam-BIGKo0WW.mjs +0 -6
  189. package/dist/images-BO8FbDAa.mjs +0 -5
  190. package/dist/intel-CY6_79v8.mjs +0 -3
  191. package/dist/keyless-certificates-CZC-L8gM.mjs +0 -3
  192. package/dist/leaked-credential-checks-qLzRyu85.mjs +0 -3
  193. package/dist/magic-cloud-networking-CSOM3EM-.mjs +0 -5
  194. package/dist/managed-transforms-D15yVbZx.mjs +0 -3
  195. package/dist/mtls-certificates-D8k0AXWK.mjs +0 -3
  196. package/dist/origin-ca-certificates-DXIvD8H5.mjs +0 -3
  197. package/dist/origin-post-quantum-encryption-C8oOczyV.mjs +0 -2
  198. package/dist/progress-CrCGTq7N.mjs +0 -2
  199. package/dist/queues-CN6DPhRR.mjs +0 -6
  200. package/dist/r2-data-catalog-Bbo93TJx.mjs +0 -14
  201. package/dist/radar-Bxb0WX8V.mjs +0 -2
  202. package/dist/raw-fetch-Dlccg0Tr.mjs +0 -2
  203. package/dist/request-tracers-DOW_reTJ.mjs +0 -2
  204. package/dist/resource-sharing-D7TX0JV0.mjs +0 -5
  205. package/dist/rules-BXRADHL5.mjs +0 -4
  206. package/dist/rum-BjPptTUP.mjs +0 -4
  207. package/dist/security-center-DAy6AKtT.mjs +0 -2
  208. package/dist/security-txt-xAMb7K6Y.mjs +0 -3
  209. package/dist/shared-AGtpXwwL.mjs +0 -2
  210. package/dist/snippets-CCSsCXVs.mjs +0 -4
  211. package/dist/speed-CuzTE0AL.mjs +0 -4
  212. package/dist/src-BW6vfAwE.mjs +0 -108
  213. package/dist/ssl-BWA2LdwC.mjs +0 -15
  214. package/dist/stream-GFsIZ-pP.mjs +0 -14
  215. package/dist/url-normalization-B5RN4nLD.mjs +0 -3
  216. package/dist/url-scanner-BrZ1L9OC.mjs +0 -2
  217. package/dist/vectorize-C7_oQlaI.mjs +0 -4
  218. package/dist/workers-builds-AVfx8IyL.mjs +0 -7
  219. package/dist/zaraz-xYSWIV4P.mjs +0 -2
  220. package/dist/zones-BSgmZ9WC.mjs +0 -21
  221. /package/dist/{body-parser-DKa8Ipg1.mjs → body-parser-DWSy7uZ8.mjs} +0 -0
  222. /package/dist/{cli-types-CRIDdDw3.mjs → cli-types-BeyOc81z.mjs} +0 -0
  223. /package/dist/{input-validation-zEO81MWN.mjs → input-validation-_fMCApaH.mjs} +0 -0
  224. /package/dist/{lib-Eu1wXxuh.mjs → lib-4PQI6yRW.mjs} +0 -0
  225. /package/dist/{local-VJaJ3BZ1.mjs → local-CYc9q7l2.mjs} +0 -0
  226. /package/dist/{metadata-5VwHPW6C.mjs → metadata-OOwvpR8m.mjs} +0 -0
  227. /package/dist/{resolve-4-OSeHlK.mjs → resolve-C3h-mwp7.mjs} +0 -0
  228. /package/dist/{theme-BklJDrb2.mjs → theme-DbNbIY4d.mjs} +0 -0
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import{n as e}from"./auth-ffdf9yR0.mjs";import{n as t,t as n}from"./body-parser-DKa8Ipg1.mjs";import{t as r}from"./output-BJFNwj7b.mjs";import{n as i,t as a}from"./progress-CrCGTq7N.mjs";import{t as o}from"./cli-types-CRIDdDw3.mjs";import{n as s,t as c}from"./raw-fetch-Dlccg0Tr.mjs";function l(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 ee={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:o(l),handler:async t=>{let n={date:t.date,domainCategory:t[`domain-category`],name:t.name,format:t.format};if(t.dryRun){i({command:`cf radar agent-readiness summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/agent_readiness/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.agentReadiness.summary({dimension:t.dimension,...n})),{successLabel:`Loaded`})}},te={command:`agent-readiness`,describe:`Agent readiness summary statistics across the Cloudflare network`,builder:e=>e.command(ee).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function u(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 d={command:`summary-v2 <dimension>`,describe:`Retrieves an aggregated summary of AI bots HTTP requests grouped by the specified dimension.`,builder:o(u),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,crawlPurpose:t[`crawl-purpose`],userAgent:t[`user-agent`],vertical:t.vertical,industry:t.industry,contentType:t[`content-type`],responseStatus:t[`response-status`],responseStatusCategory:t[`response-status-category`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar ai bots summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.bots.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function f(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 p={command:`user-agent`,describe:`Retrieves the distribution of traffic by AI user agent.`,builder:o(f),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.bots.summary.userAgent(n)),{successLabel:`Loaded`})}},m={command:`summary`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(p).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},h={command:`bots`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(d).command(m).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(`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:`summary-v2 <dimension>`,describe:`Retrieves an aggregated summary of the number of inferences run on Workers AI, grouped by the specified dimension.`,builder:o(g),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar ai inference summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/inference/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.inference.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function v(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 y={command:`model`,describe:`Retrieves the distribution of the number of inferences by model.`,builder:o(v),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.inference.summary.model(n)),{successLabel:`Loaded`})}};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(`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:`task`,describe:`Retrieves the distribution of the number of inferences by task.`,builder:o(b),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.inference.summary.task(n)),{successLabel:`Loaded`})}},S={command:`summary`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(y).command(x).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function C(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 w={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of the number of inferences run on Workers AI, grouped by the specified dimension over time.`,builder:o(C),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,limitPerGroup:t[`limit-per-group`],normalization:t.normalization,format:t.format};if(t.dryRun){i({command:`cf radar ai inference timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/inference/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.inference.timeseriesGroupsV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function T(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 E={command:`model`,describe:`Retrieves the distribution of the number of inferences by model over time.`,builder:o(T),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.inference.timeseriesGroups.summary.model(n)),{successLabel:`Loaded`})}};function D(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 O={command:`task`,describe:`Retrieves the distribution of the number of inferences by task over time.`,builder:o(D),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.inference.timeseriesGroups.summary.task(n)),{successLabel:`Loaded`})}},k={command:`summary`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(E).command(O).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},A={command:`timeseries-groups`,describe:`Operations for ai.inference.timeseries-groups`,builder:e=>e.command(k).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},j={command:`inference`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(_).command(w).command(S).command(A).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function M(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 N={command:`summary`,describe:`Retrieves the overall median HTML-to-markdown reduction ratio for AI agent requests over the given date range.`,builder:o(M),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.markdownForAgents.summary(n)),{successLabel:`Loaded`})}};function P(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 F={command:`timeseries`,describe:`Retrieves the median HTML-to-markdown reduction ratio over time for AI agent requests.`,builder:o(P),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.markdownForAgents.timeseries(n)),{successLabel:`Loaded`})}},I={command:`markdown-for-agents`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(N).command(F).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function L(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`,`PERCENTAGE_CHANGE`]}).option(`format`,{type:`string`,description:`Format in which results will be returned.`,choices:[`JSON`,`CSV`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const R={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of HTTP requests from AI bots, grouped by the specified dimension over time.`,builder:o(L),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,crawlPurpose:t[`crawl-purpose`],userAgent:t[`user-agent`],industry:t.industry,vertical:t.vertical,contentType:t[`content-type`],responseStatus:t[`response-status`],responseStatusCategory:t[`response-status-category`],limitPerGroup:t[`limit-per-group`],normalization:t.normalization,format:t.format};if(t.dryRun){i({command:`cf radar ai timeseries-groups timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ai/bots/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.timeseriesGroups.timeseriesGroups({dimension:t.dimension,...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(`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 B={command:`timeseries`,describe:`Retrieves AI bots HTTP request volume over time.`,builder:o(z),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,crawlPurpose:t[`crawl-purpose`],userAgent:t[`user-agent`],industry:t.industry,vertical:t.vertical,contentType:t[`content-type`],responseStatus:t[`response-status`],responseStatusCategory:t[`response-status-category`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.timeseriesGroups.timeseries(n)),{successLabel:`Loaded`})}};function V(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 H={command:`user-agent`,describe:`Retrieves the distribution of traffic by AI user agent over time.`,builder:o(V),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ai.timeseriesGroups.userAgent(n)),{successLabel:`Loaded`})}},U={command:`timeseries-groups`,describe:`AI inference trends and model usage statistics across the Cloudflare network`,builder:e=>e.command(B).command(R).command(H).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},W={command:`ai`,describe:`Operations for ai`,builder:e=>e.command(h).command(j).command(I).command(U).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function G(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 K={command:`list`,describe:`Retrieves the latest annotations.`,builder:o(G),handler:async t=>{let n={limit:t.limit,offset:t.offset,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],dataSource:t[`data-source`],eventType:t[`event-type`],asn:t.asn,location:t.location,origin:t.origin,format:t.format};if(t.dryRun){i({command:`cf radar annotations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/annotations`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.annotations.list(n)),{successLabel:`Loaded`})}};function q(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 J={command:`get`,describe:`Retrieves the latest Internet outages and anomalies.`,builder:o(q),handler:async t=>{let n={limit:t.limit,offset:t.offset,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,origin:t.origin,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.annotations.outages.get(n)),{successLabel:`Loaded`})}};function Y(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 X={command:`locations`,describe:`Retrieves the number of outages by location.`,builder:o(Y),handler:async t=>{let n={limit:t.limit,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.annotations.outages.locations(n)),{successLabel:`Loaded`})}},Z={command:`outages`,describe:`Radar annotations marking significant Internet events (outages, cable cuts, etc.)`,builder:e=>e.command(J).command(X).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Q={command:`annotations`,describe:`Radar annotations marking significant Internet events (outages, cable cuts, etc.)`,builder:e=>e.command(K).command(Z).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ne(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 re={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of AS112 queries by the specified dimension.`,builder:o(ne),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar as112 summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function ie(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 ae={command:`dnssec`,describe:`Retrieves the distribution of DNS queries to AS112 by DNSSEC (DNS Security Extensions) support.`,builder:o(ie),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.summary.dnssec(n)),{successLabel:`Loaded`})}};function oe(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:`edns`,describe:`Retrieves the distribution of DNS queries to AS112 by EDNS (Extension Mechanisms for DNS) support.`,builder:o(oe),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.summary.edns(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(`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 DNS queries to AS112 by IP version.`,builder:o(ce),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.summary.ipVersion(n)),{successLabel:`Loaded`})}};function ue(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 de={command:`protocol`,describe:`Retrieves the distribution of DNS queries to AS112 by protocol.`,builder:o(ue),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],responseCode:t[`response-code`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.summary.protocol(n)),{successLabel:`Loaded`})}};function fe(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 pe={command:`query-type`,describe:`Retrieves the distribution of DNS queries to AS112 by type.`,builder:o(fe),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,protocol:t.protocol,responseCode:t[`response-code`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.summary.queryType(n)),{successLabel:`Loaded`})}};function me(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 he={command:`response-codes`,describe:`Retrieves the distribution of AS112 DNS requests classified by response code.`,builder:o(me),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.summary.responseCodes(n)),{successLabel:`Loaded`})}},ge={command:`summary`,describe:`AS112 DNS sinkhole statistics — reverse DNS query volumes for private address space`,builder:e=>e.command(ae).command(se).command(le).command(de).command(pe).command(he).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function _e(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 ve={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of AS112 queries grouped by dimension over time.`,builder:o(_e),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar as112 timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.timeseriesGroupsV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function ye(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 be={command:`dnssec`,describe:`Retrieves the distribution of AS112 DNS queries by DNSSEC (DNS Security Extensions) support over time.`,builder:o(ye),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.timeseriesGroups.dnssec(n)),{successLabel:`Loaded`})}};function xe(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 Se={command:`edns`,describe:`Retrieves the distribution of AS112 DNS queries by EDNS (Extension Mechanisms for DNS) support over time.`,builder:o(xe),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.timeseriesGroups.edns(n)),{successLabel:`Loaded`})}};function Ce(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 we={command:`ip-version`,describe:`Retrieves the distribution of AS112 DNS queries by IP version over time.`,builder:o(Ce),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function Te(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 Ee={command:`protocol`,describe:`Retrieves the distribution of AS112 DNS requests classified by protocol over time.`,builder:o(Te),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],responseCode:t[`response-code`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.timeseriesGroups.protocol(n)),{successLabel:`Loaded`})}};function De(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 Oe={command:`query-type`,describe:`Retrieves the distribution of AS112 DNS queries by type over time.`,builder:o(De),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,protocol:t.protocol,responseCode:t[`response-code`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.timeseriesGroups.queryType(n)),{successLabel:`Loaded`})}};function ke(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 Ae={command:`response-codes`,describe:`Retrieves the distribution of AS112 DNS requests classified by response code over time.`,builder:o(ke),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.timeseriesGroups.responseCodes(n)),{successLabel:`Loaded`})}},je={command:`timeseries-groups`,describe:`AS112 DNS sinkhole statistics — reverse DNS query volumes for private address space`,builder:e=>e.command(be).command(Se).command(we).command(Ee).command(Oe).command(Ae).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};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:`timeseries`,describe:`Retrieves the AS112 DNS queries over time.`,builder:o(Me),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],format:t.format};if(t.dryRun){i({command:`cf radar as112 timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.timeseries(n)),{successLabel:`Loaded`})}};function Pe(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 Fe={command:`dnssec <dnssec>`,describe:`Retrieves the top locations of DNS queries to AS112 with DNSSEC (DNS Security Extensions) support.`,builder:o(Pe),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,format:t.format};if(t.dryRun){i({command:`cf radar as112 top dnssec`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/top/locations/dnssec/${t.dnssec==null?`<dnssec>`:encodeURIComponent(String(t.dnssec))}`,pathParams:{dnssec:String(t.dnssec??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.top.dnssec({dnssec:t.dnssec,...n})),{successLabel:`Loaded`})}};function Ie(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 Le={command:`edns <edns>`,describe:`Retrieves the top locations of DNS queries to AS112 with EDNS (Extension Mechanisms for DNS) support.`,builder:o(Ie),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,format:t.format};if(t.dryRun){i({command:`cf radar as112 top edns`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/top/locations/edns/${t.edns==null?`<edns>`:encodeURIComponent(String(t.edns))}`,pathParams:{edns:String(t.edns??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.top.edns({edns:t.edns,...n})),{successLabel:`Loaded`})}};function Re(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 ze={command:`ip-version <ip-version>`,describe:`Retrieves the top locations of DNS queries to AS112 for an IP version.`,builder:o(Re),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,format:t.format};if(t.dryRun){i({command:`cf radar as112 top ip-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/as112/top/locations/ip_version/${t[`ip-version`]==null?`<ip-version>`:encodeURIComponent(String(t[`ip-version`]))}`,pathParams:{"ip-version":String(t[`ip-version`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.top.ipVersion({ip_version:t[`ip-version`],...n})),{successLabel:`Loaded`})}};function Be(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 Ve={command:`locations`,describe:`Retrieves the top locations by AS112 DNS queries.`,builder:o(Be),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.as112.top.locations(n)),{successLabel:`Loaded`})}},He={command:`top`,describe:`AS112 DNS sinkhole statistics — reverse DNS query volumes for private address space`,builder:e=>e.command(Fe).command(Le).command(ze).command(Ve).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ue={command:`as112`,describe:`AS112 DNS sinkhole statistics — reverse DNS query volumes for private address space`,builder:e=>e.command(re).command(Ne).command(ve).command(ge).command(je).command(He).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function We(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 Ge={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of layer 3 attacks by the specified dimension.`,builder:o(We),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,direction:t.direction,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar attacks layer3 summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function Ke(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 qe={command:`bitrate`,describe:`Retrieves the distribution of layer 3 attacks by bitrate.`,builder:o(Ke),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,direction:t.direction,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.summary.bitrate(n)),{successLabel:`Loaded`})}};function Je(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 Ye={command:`duration`,describe:`Retrieves the distribution of layer 3 attacks by duration.`,builder:o(Je),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,direction:t.direction,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.summary.duration(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(`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 Ze={command:`industry`,describe:`Retrieves the distribution of layer 3 attacks by targeted industry.`,builder:o(Xe),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,direction:t.direction,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.summary.industry(n)),{successLabel:`Loaded`})}};function Qe(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 $e={command:`ip-version`,describe:`Retrieves the distribution of layer 3 attacks by IP version.`,builder:o(Qe),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,protocol:t.protocol,direction:t.direction,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.summary.ipVersion(n)),{successLabel:`Loaded`})}};function et(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 tt={command:`protocol`,describe:`Retrieves the distribution of layer 3 attacks by protocol.`,builder:o(et),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],direction:t.direction,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.summary.protocol(n)),{successLabel:`Loaded`})}};function nt(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 rt={command:`vector`,describe:`Retrieves the distribution of layer 3 attacks by vector.`,builder:o(nt),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,direction:t.direction,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.summary.vector(n)),{successLabel:`Loaded`})}};function it(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 at={command:`vertical`,describe:`Retrieves the distribution of layer 3 attacks by targeted vertical.`,builder:o(it),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,direction:t.direction,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.summary.vertical(n)),{successLabel:`Loaded`})}},ot={command:`summary`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(qe).command(Ye).command(Ze).command($e).command(tt).command(rt).command(at).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function st(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 ct={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of layer 3 attacks grouped by dimension over time.`,builder:o(st),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,normalization:t.normalization,direction:t.direction,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar attacks layer3 timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer3/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.timeseriesGroupsV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};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(`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 ut={command:`bitrate`,describe:`Retrieves the distribution of layer 3 attacks by bitrate over time.`,builder:o(lt),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,normalization:t.normalization,direction:t.direction,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.timeseriesGroups.bitrate(n)),{successLabel:`Loaded`})}};function dt(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 ft={command:`duration`,describe:`Retrieves the distribution of layer 3 attacks by duration over time.`,builder:o(dt),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,normalization:t.normalization,direction:t.direction,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.timeseriesGroups.duration(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 mt={command:`industry`,describe:`Retrieves the distribution of layer 3 attacks by targeted industry over time.`,builder:o(pt),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,normalization:t.normalization,direction:t.direction,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.timeseriesGroups.industry(n)),{successLabel:`Loaded`})}};function ht(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 gt={command:`ip-version`,describe:`Retrieves the distribution of layer 3 attacks by IP version over time.`,builder:o(ht),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,protocol:t.protocol,normalization:t.normalization,direction:t.direction,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function _t(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 vt={command:`protocol`,describe:`Retrieves the distribution of layer 3 attacks by protocol over time.`,builder:o(_t),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],normalization:t.normalization,direction:t.direction,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.timeseriesGroups.protocol(n)),{successLabel:`Loaded`})}};function yt(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 bt={command:`vector`,describe:`Retrieves the distribution of layer 3 attacks by vector over time.`,builder:o(yt),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,normalization:t.normalization,direction:t.direction,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.timeseriesGroups.vector(n)),{successLabel:`Loaded`})}};function xt(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 St={command:`vertical`,describe:`Retrieves the distribution of layer 3 attacks by targeted vertical over time.`,builder:o(xt),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,normalization:t.normalization,direction:t.direction,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.timeseriesGroups.vertical(n)),{successLabel:`Loaded`})}},Ct={command:`timeseries-groups`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(ut).command(ft).command(mt).command(gt).command(vt).command(bt).command(St).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};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(`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 Tt={command:`timeseries`,describe:`Retrieves layer 3 attacks over time.`,builder:o(wt),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,normalization:t.normalization,metric:t.metric,direction:t.direction,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.timeseries(n)),{successLabel:`Loaded`})}};function Et(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 Dt={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:o(Et),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,limitDirection:t[`limit-direction`],limitPerLocation:t[`limit-per-location`],magnitude:t.magnitude,normalization:t.normalization,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.top.attacks(n)),{successLabel:`Loaded`})}};function Ot(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:`industry`,describe:`This endpoint is deprecated. To continue getting this data, switch to the summary by industry endpoint.`,builder:o(Ot),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.top.industry(n)),{successLabel:`Loaded`})}};function At(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 jt={command:`origin`,describe:`Retrieves the origin locations of layer 3 attacks.`,builder:o(At),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.top.locations.origin(n)),{successLabel:`Loaded`})}};function Mt(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 Nt={command:`target`,describe:`Retrieves the target locations of layer 3 attacks.`,builder:o(Mt),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.top.locations.target(n)),{successLabel:`Loaded`})}},Pt={command:`locations`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(jt).command(Nt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ft(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 It={command:`vertical`,describe:`This endpoint is deprecated. To continue getting this data, switch to the summary by vertical endpoint.`,builder:o(Ft),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],protocol:t.protocol,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer3.top.vertical(n)),{successLabel:`Loaded`})}},Lt={command:`top`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(Dt).command(kt).command(It).command(Pt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Rt={command:`layer3`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(Ge).command(Tt).command(ct).command(ot).command(Ct).command(Lt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function zt(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 Bt={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of layer 7 attacks by the specified dimension.`,builder:o(zt),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar attacks layer7 summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function Vt(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 Ht={command:`http-method`,describe:`Retrieves the distribution of layer 7 attacks by HTTP method.`,builder:o(Vt),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],mitigationProduct:t[`mitigation-product`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.summary.httpMethod(n)),{successLabel:`Loaded`})}};function Ut(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 Wt={command:`http-version`,describe:`Retrieves the distribution of layer 7 attacks by HTTP version.`,builder:o(Ut),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.summary.httpVersion(n)),{successLabel:`Loaded`})}};function Gt(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 Kt={command:`industry`,describe:`Retrieves the distribution of layer 7 attacks by targeted industry.`,builder:o(Gt),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.summary.industry(n)),{successLabel:`Loaded`})}};function qt(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 Jt={command:`ip-version`,describe:`Retrieves the distribution of layer 7 attacks by IP version.`,builder:o(qt),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.summary.ipVersion(n)),{successLabel:`Loaded`})}};function Yt(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 Xt={command:`managed-rules`,describe:`Retrieves the distribution of layer 7 attacks by managed rules.`,builder:o(Yt),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.summary.managedRules(n)),{successLabel:`Loaded`})}};function Zt(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 Qt={command:`mitigation-product`,describe:`Retrieves the distribution of layer 7 attacks by mitigation product.`,builder:o(Zt),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.summary.mitigationProduct(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(`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 en={command:`vertical`,describe:`Retrieves the distribution of layer 7 attacks by targeted vertical.`,builder:o($t),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.summary.vertical(n)),{successLabel:`Loaded`})}},tn={command:`summary`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(Ht).command(Wt).command(Kt).command(Jt).command(Xt).command(Qt).command(en).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function nn(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 rn={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of layer 7 attacks grouped by dimension over time.`,builder:o(nn),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],normalization:t.normalization,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar attacks layer7 timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/attacks/layer7/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.timeseriesGroupsV2({dimension:t.dimension,...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(`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 on={command:`http-method`,describe:`Retrieves the distribution of layer 7 attacks by HTTP method over time.`,builder:o(an),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],mitigationProduct:t[`mitigation-product`],normalization:t.normalization,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.timeseriesGroups.httpMethod(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-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 cn={command:`http-version`,describe:`Retrieves the distribution of layer 7 attacks by HTTP version over time.`,builder:o(sn),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],normalization:t.normalization,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.timeseriesGroups.httpVersion(n)),{successLabel:`Loaded`})}};function ln(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 un={command:`industry`,describe:`Retrieves the distribution of layer 7 attacks by targeted industry over time.`,builder:o(ln),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],normalization:t.normalization,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.timeseriesGroups.industry(n)),{successLabel:`Loaded`})}};function dn(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 fn={command:`ip-version`,describe:`Retrieves the distribution of layer 7 attacks by IP version used over time.`,builder:o(dn),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],normalization:t.normalization,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function pn(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 mn={command:`managed-rules`,describe:`Retrieves the distribution of layer 7 attacks by managed rules over time.`,builder:o(pn),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],normalization:t.normalization,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.timeseriesGroups.managedRules(n)),{successLabel:`Loaded`})}};function hn(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 gn={command:`mitigation-product`,describe:`Retrieves the distribution of layer 7 attacks by mitigation product over time.`,builder:o(hn),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],normalization:t.normalization,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.timeseriesGroups.mitigationProduct(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(`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 vn={command:`vertical`,describe:`Retrieves the distribution of layer 7 attacks by targeted vertical over time.`,builder:o(_n),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],normalization:t.normalization,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.timeseriesGroups.vertical(n)),{successLabel:`Loaded`})}},yn={command:`timeseries-groups`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(on).command(cn).command(un).command(fn).command(mn).command(gn).command(vn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};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(`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 xn={command:`timeseries`,describe:`Retrieves layer 7 attacks over time.`,builder:o(bn),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,normalization:t.normalization,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.timeseries(n)),{successLabel:`Loaded`})}};function Sn(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 Cn={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:o(Sn),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.top.ases.origin(n)),{successLabel:`Loaded`})}},wn={command:`ases`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(Cn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Tn(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 En={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:o(Tn),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,mitigationProduct:t[`mitigation-product`],limitDirection:t[`limit-direction`],limitPerLocation:t[`limit-per-location`],normalization:t.normalization,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.top.attacks(n)),{successLabel:`Loaded`})}};function Dn(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 On={command:`industry`,describe:`This endpoint is deprecated. To continue getting this data, switch to the summary by industry endpoint.`,builder:o(Dn),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.top.industry(n)),{successLabel:`Loaded`})}};function kn(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 An={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:o(kn),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.top.locations.origin(n)),{successLabel:`Loaded`})}};function jn(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 Mn={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:o(jn),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],continent:t.continent,mitigationProduct:t[`mitigation-product`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.top.locations.target(n)),{successLabel:`Loaded`})}},Nn={command:`locations`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(An).command(Mn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Pn(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 Fn={command:`vertical`,describe:`This endpoint is deprecated. To continue getting this data, switch to the summary by vertical endpoint.`,builder:o(Pn),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,ipVersion:t[`ip-version`],httpVersion:t[`http-version`],httpMethod:t[`http-method`],mitigationProduct:t[`mitigation-product`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.attacks.layer7.top.vertical(n)),{successLabel:`Loaded`})}},In={command:`top`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(En).command(On).command(Fn).command(wn).command(Nn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ln={command:`layer7`,describe:`DDoS and application-layer attack trends, vectors, and target analysis`,builder:e=>e.command(Bt).command(xn).command(rn).command(tn).command(yn).command(In).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Rn={command:`attacks`,describe:`Operations for attacks`,builder:e=>e.command(Rt).command(Ln).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function zn(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 Bn={command:`list`,describe:`Retrieves the BGP hijack events.`,builder:o(zn),handler:async t=>{let n={page:t.page,per_page:t[`per-page`],eventId:t[`event-id`],hijackerAsn:t[`hijacker-asn`],victimAsn:t[`victim-asn`],involvedAsn:t[`involved-asn`],involvedCountry:t[`involved-country`],prefix:t.prefix,minConfidence:t[`min-confidence`],maxConfidence:t[`max-confidence`],dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],sortBy:t[`sort-by`],sortOrder:t[`sort-order`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.hijacks.events.list(n)),{successLabel:`Loaded`})}},Vn={command:`events`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(Bn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Hn={command:`hijacks`,describe:`Operations for bgp.hijacks`,builder:e=>e.command(Vn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Un(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 Wn={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:o(Un),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,ipVersion:t[`ip-version`],includeDelay:t[`include-delay`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.ips.timeseries(n)),{successLabel:`Loaded`})}},Gn={command:`ips`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(Wn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Kn(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 qn={command:`list`,describe:`Retrieves the BGP route leak events.`,builder:o(Kn),handler:async t=>{let n={page:t.page,per_page:t[`per-page`],eventId:t[`event-id`],leakAsn:t[`leak-asn`],involvedAsn:t[`involved-asn`],involvedCountry:t[`involved-country`],dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],sortBy:t[`sort-by`],sortOrder:t[`sort-order`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.leaks.events.list(n)),{successLabel:`Loaded`})}},Jn={command:`events`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(qn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Yn={command:`leaks`,describe:`Operations for bgp.leaks`,builder:e=>e.command(Jn).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Xn(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 Zn={command:`ases`,describe:`Retrieves all ASes in the current global routing tables with routing statistics.`,builder:o(Xn),handler:async t=>{let n={location:t.location,limit:t.limit,sortBy:t[`sort-by`],sortOrder:t[`sort-order`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.routes.ases(n)),{successLabel:`Loaded`})}};function Qn(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 $n={command:`moas`,describe:`Retrieves all Multi-Origin AS (MOAS) prefixes in the global routing tables.`,builder:o(Qn),handler:async t=>{let n={origin:t.origin,prefix:t.prefix,invalid_only:t[`invalid-only`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.routes.moas(n)),{successLabel:`Loaded`})}};function er(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 tr={command:`pfx2as`,describe:`Retrieves the prefix-to-ASN mapping from global routing tables.`,builder:o(er),handler:async t=>{let n={prefix:t.prefix,origin:t.origin,rpkiStatus:t[`rpki-status`],longestPrefixMatch:t[`longest-prefix-match`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.routes.pfx2As(n)),{successLabel:`Loaded`})}};function nr(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 rr={command:`realtime`,describe:`Retrieves real-time BGP routes for a prefix, using public real-time data collectors (RouteViews and RIPE RIS).`,builder:o(nr),handler:async t=>{let n={prefix:t.prefix,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.routes.realtime(n)),{successLabel:`Loaded`})}};function ir(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 ar={command:`stats`,describe:`Retrieves the BGP routing table stats.`,builder:o(ir),handler:async t=>{let n={asn:t.asn,location:t.location,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.routes.stats(n)),{successLabel:`Loaded`})}},or={command:`routes`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(Zn).command($n).command(tr).command(rr).command(ar).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function sr(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 cr={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:o(sr),handler:async t=>{let n={dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,includeAsnInfo:t[`include-asn-info`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.rpki.aspa.changes(n)),{successLabel:`Loaded`})}};function lr(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 ur={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:o(lr),handler:async t=>{let n={customerAsn:t[`customer-asn`],providerAsn:t[`provider-asn`],date:t.date,includeAsnInfo:t[`include-asn-info`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.rpki.aspa.snapshot(n)),{successLabel:`Loaded`})}};function dr(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 fr={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:o(dr),handler:async t=>{let n={dateStart:t[`date-start`],dateEnd:t[`date-end`],name:t.name,rir:t.rir,location:t.location,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.rpki.aspa.timeseries(n)),{successLabel:`Loaded`})}},pr={command:`aspa`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(cr).command(ur).command(fr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},mr={command:`rpki`,describe:`Operations for bgp.rpki`,builder:e=>e.command(pr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function hr(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 gr={command:`timeseries`,describe:`Retrieves BGP updates over time. When requesting updates for an autonomous system, only BGP updates of type announcement are returned.`,builder:o(hr),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],prefix:t.prefix,updateType:t[`update-type`],asn:t.asn,format:t.format};if(t.dryRun){i({command:`cf radar bgp timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bgp/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.timeseries(n)),{successLabel:`Loaded`})}};function _r(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 vr={command:`get`,describe:`Retrieves the top autonomous systems by BGP updates (announcements only).`,builder:o(_r),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,prefix:t.prefix,updateType:t[`update-type`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.top.ases.get(n)),{successLabel:`Loaded`})}};function yr(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 br={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:o(yr),handler:async t=>{let n={country:t.country,limit:t.limit,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.top.ases.prefixes(n)),{successLabel:`Loaded`})}},xr={command:`ases`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(vr).command(br).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Sr(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 Cr={command:`prefixes`,describe:`Retrieves the top network prefixes by BGP updates.`,builder:o(Sr),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,updateType:t[`update-type`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.bgp.top.prefixes(n)),{successLabel:`Loaded`})}},wr={command:`top`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(Cr).command(xr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Tr={command:`bgp`,describe:`BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events`,builder:e=>e.command(gr).command(Hn).command(Gn).command(Yn).command(or).command(mr).command(wr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Er(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 Dr={command:`get <bot-slug>`,describe:`Retrieves the requested bot information.`,builder:o(Er),handler:async t=>{let n={format:t.format};if(t.dryRun){i({command:`cf radar bots get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/${t[`bot-slug`]==null?`<bot-slug>`:encodeURIComponent(String(t[`bot-slug`]))}`,pathParams:{"bot-slug":String(t[`bot-slug`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.bots.get({bot_slug:t[`bot-slug`],...n})),{successLabel:`Loaded`})}};function Or(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. Deprecated: the Verified Bot / Signed Agent distinction is being removed.`,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 kr={command:`list`,describe:`Retrieves a list of bots.`,builder:o(Or),handler:async t=>{let n={limit:t.limit,offset:t.offset,botCategory:t[`bot-category`],botOperator:t[`bot-operator`],kind:t.kind,botVerificationStatus:t[`bot-verification-status`],format:t.format};if(t.dryRun){i({command:`cf radar bots list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.bots.list(n)),{successLabel:`Loaded`})}};function Ar(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. Deprecated: the Verified Bot / Signed Agent distinction is being removed.`}).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:`summary <dimension>`,describe:`Retrieves an aggregated summary of bots HTTP requests grouped by the specified dimension.`,builder:o(Ar),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,limitPerGroup:t[`limit-per-group`],bot:t.bot,botOperator:t[`bot-operator`],botCategory:t[`bot-category`],botKind:t[`bot-kind`],botVerificationStatus:t[`bot-verification-status`],format:t.format};if(t.dryRun){i({command:`cf radar bots summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.bots.summary({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function Mr(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. Deprecated: the Verified Bot / Signed Agent distinction is being removed.`}).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 Nr={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of HTTP requests from bots, grouped by the specified dimension over time.`,builder:o(Mr),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,limitPerGroup:t[`limit-per-group`],bot:t.bot,botOperator:t[`bot-operator`],botCategory:t[`bot-category`],botKind:t[`bot-kind`],botVerificationStatus:t[`bot-verification-status`],format:t.format};if(t.dryRun){i({command:`cf radar bots timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.bots.timeseriesGroups({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function Pr(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. Deprecated: the Verified Bot / Signed Agent distinction is being removed.`}).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 Fr={command:`timeseries`,describe:`Retrieves bots HTTP request volume over time.`,builder:o(Pr),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,bot:t.bot,botOperator:t[`bot-operator`],botCategory:t[`bot-category`],botKind:t[`bot-kind`],botVerificationStatus:t[`bot-verification-status`],format:t.format};if(t.dryRun){i({command:`cf radar bots timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.bots.timeseries(n)),{successLabel:`Loaded`})}};function Ir(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 Lr={command:`summary <dimension>`,describe:`Retrieves an aggregated summary of HTTP requests from crawlers, grouped by the specified dimension.`,builder:o(Ir),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],botOperator:t[`bot-operator`],vertical:t.vertical,industry:t.industry,clientType:t[`client-type`],responseStatus:t[`response-status`],responseStatusCategory:t[`response-status-category`],format:t.format};if(t.dryRun){i({command:`cf radar bots web-crawlers summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/crawlers/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.bots.webCrawlers.summary({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function Rr(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(`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`,`PERCENTAGE_CHANGE`]}).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 zr={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of HTTP requests from crawlers, grouped by the specified dimension over time.`,builder:o(Rr),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],normalization:t.normalization,botOperator:t[`bot-operator`],vertical:t.vertical,industry:t.industry,clientType:t[`client-type`],responseStatus:t[`response-status`],responseStatusCategory:t[`response-status-category`],format:t.format};if(t.dryRun){i({command:`cf radar bots web-crawlers timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/bots/crawlers/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.bots.webCrawlers.timeseriesGroups({dimension:t.dimension,...n})),{successLabel:`Loaded`})}},Br={command:`web-crawlers`,describe:`Internet-wide bot traffic trends, categories, and distribution statistics`,builder:e=>e.command(Lr).command(zr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Vr={command:`bots`,describe:`Internet-wide bot traffic trends, categories, and distribution statistics`,builder:e=>e.command(Dr).command(kr).command(jr).command(Fr).command(Nr).command(Br).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Hr(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 Ur={command:`get <ca-slug>`,describe:`Retrieves the requested CA information.`,builder:o(Hr),handler:async t=>{let n={format:t.format};if(t.dryRun){i({command:`cf radar ct authorities get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/authorities/${t[`ca-slug`]==null?`<ca-slug>`:encodeURIComponent(String(t[`ca-slug`]))}`,pathParams:{"ca-slug":String(t[`ca-slug`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ct.authorities.get({ca_slug:t[`ca-slug`],...n})),{successLabel:`Loaded`})}};function Wr(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 Gr={command:`list`,describe:`Retrieves a list of certificate authorities.`,builder:o(Wr),handler:async t=>{let n={limit:t.limit,offset:t.offset,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ct.authorities.list(n)),{successLabel:`Loaded`})}},Kr={command:`authorities`,describe:`Certificate Transparency log monitoring and newly-issued certificate discovery`,builder:e=>e.command(Ur).command(Gr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function qr(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 Jr={command:`get <log-slug>`,describe:`Retrieves the requested certificate log information.`,builder:o(qr),handler:async t=>{let n={format:t.format};if(t.dryRun){i({command:`cf radar ct logs get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/logs/${t[`log-slug`]==null?`<log-slug>`:encodeURIComponent(String(t[`log-slug`]))}`,pathParams:{"log-slug":String(t[`log-slug`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ct.logs.get({log_slug:t[`log-slug`],...n})),{successLabel:`Loaded`})}};function Yr(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 Xr={command:`list`,describe:`Retrieves a list of certificate logs.`,builder:o(Yr),handler:async t=>{let n={limit:t.limit,offset:t.offset,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ct.logs.list(n)),{successLabel:`Loaded`})}},Zr={command:`logs`,describe:`Certificate Transparency log monitoring and newly-issued certificate discovery`,builder:e=>e.command(Jr).command(Xr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Qr(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 $r={command:`summary <dimension>`,describe:`Retrieves an aggregated summary of certificates grouped by the specified dimension.`,builder:o(Qr),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],ca:t.ca,caOwner:t[`ca-owner`],duration:t.duration,entryType:t[`entry-type`],expirationStatus:t[`expiration-status`],hasIps:t[`has-ips`],hasWildcards:t[`has-wildcards`],log:t.log,logApi:t[`log-api`],logOperator:t[`log-operator`],publicKeyAlgorithm:t[`public-key-algorithm`],signatureAlgorithm:t[`signature-algorithm`],tld:t.tld,validationLevel:t[`validation-level`],uniqueEntries:t[`unique-entries`],normalization:t.normalization,format:t.format};if(t.dryRun){i({command:`cf radar ct summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ct.summary({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function ei(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 ti={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of certificates grouped by the specified dimension over time.`,builder:o(ei),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],ca:t.ca,caOwner:t[`ca-owner`],duration:t.duration,entryType:t[`entry-type`],expirationStatus:t[`expiration-status`],hasIps:t[`has-ips`],hasWildcards:t[`has-wildcards`],log:t.log,logApi:t[`log-api`],logOperator:t[`log-operator`],publicKeyAlgorithm:t[`public-key-algorithm`],signatureAlgorithm:t[`signature-algorithm`],validationLevel:t[`validation-level`],tld:t.tld,normalization:t.normalization,uniqueEntries:t[`unique-entries`],format:t.format};if(t.dryRun){i({command:`cf radar ct timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ct.timeseriesGroups({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function ni(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 ri={command:`timeseries`,describe:`Retrieves certificate volume over time.`,builder:o(ni),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],ca:t.ca,caOwner:t[`ca-owner`],duration:t.duration,entryType:t[`entry-type`],expirationStatus:t[`expiration-status`],hasIps:t[`has-ips`],hasWildcards:t[`has-wildcards`],log:t.log,logApi:t[`log-api`],logOperator:t[`log-operator`],publicKeyAlgorithm:t[`public-key-algorithm`],signatureAlgorithm:t[`signature-algorithm`],tld:t.tld,validationLevel:t[`validation-level`],uniqueEntries:t[`unique-entries`],format:t.format};if(t.dryRun){i({command:`cf radar ct timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ct/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ct.timeseries(n)),{successLabel:`Loaded`})}},ii={command:`ct`,describe:`Certificate Transparency log monitoring and newly-issued certificate discovery`,builder:e=>e.command($r).command(ri).command(ti).command(Kr).command(Zr).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ai(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 oi={command:`download`,describe:`Retrieves an URL to download a single dataset.`,builder:o(ai),handler:async o=>{let s={format:o.format};if(o.dryRun){i({command:`cf radar datasets download`,method:`POST`,url:`https://api.cloudflare.com/client/v4/radar/datasets/download`,pathParams:{},query:s,bodyKind:`json`,body:o.body===void 0?n({datasetId:o[`dataset-id`]}):t(o.body)});return}let c=await e(o);if(o.body){let e=t(o.body);new URLSearchParams(Object.entries(s).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),r(await a(`Creating`,async()=>c.radar.datasets.download({...e,...s})),{successLabel:`Created`});return}if(o[`dataset-id`]===void 0)throw Error(`--dataset-id is required (or pass --body with this field set).`);let l=n({datasetId:o[`dataset-id`]});new URLSearchParams(Object.entries(s).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),r(await a(`Creating`,async()=>c.radar.datasets.download({...l,...s})),{successLabel:`Created`})}};function si(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 ci={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:si,handler:async t=>{if(t.dryRun){i({command:`cf radar datasets get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/datasets/${t.alias==null?`<alias>`:encodeURIComponent(String(t.alias))}`,pathParams:{alias:String(t.alias??``)},bodyKind:`none`});return}await e(t),s((await a(`Loading`,async()=>c(`/radar/datasets/${encodeURIComponent(String(t.alias))}`,{method:`GET`,localEndpoint:t.local?t.localEndpoint:void 0}))).toString(`utf-8`))}};function li(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 ui={command:`list`,describe:`Retrieves a list of datasets.`,builder:o(li),handler:async t=>{let n={limit:t.limit,offset:t.offset,datasetType:t[`dataset-type`],date:t.date,format:t.format};if(t.dryRun){i({command:`cf radar datasets list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/datasets`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.datasets.list(n)),{successLabel:`Loaded`})}},di={command:`datasets`,describe:`Downloadable Radar datasets for offline analysis and research`,builder:e=>e.command(oi).command(ci).command(ui).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function fi(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 pi={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of DNS queries by the specified dimension.`,builder:o(fi),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,cacheHit:t[`cache-hit`],nodata:t.nodata,protocol:t.protocol,queryType:t[`query-type`],responseCode:t[`response-code`],responseTtl:t[`response-ttl`],dnssec:t.dnssec,dnssecAware:t[`dnssec-aware`],dnssecE2e:t[`dnssec-e2e`],ipVersion:t[`ip-version`],limitPerGroup:t[`limit-per-group`],matchingAnswer:t[`matching-answer`],tld:t.tld,format:t.format};if(t.dryRun){i({command:`cf radar dns summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function mi(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 hi={command:`cache-hit`,describe:`Retrieves the distribution of DNS queries by cache status.`,builder:o(mi),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.cacheHit(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 _i={command:`dnssec-aware`,describe:`Retrieves the distribution of DNS queries by DNSSEC (DNS Security Extensions) client awareness.`,builder:o(gi),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.dnssecAware(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(`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 yi={command:`dnssec-e2e`,describe:`Retrieves the distribution of DNSSEC-validated answers by end-to-end security status.`,builder:o(vi),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.dnssecE2E(n)),{successLabel:`Loaded`})}};function bi(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 xi={command:`dnssec`,describe:`Retrieves the distribution of DNS responses by DNSSEC (DNS Security Extensions) support.`,builder:o(bi),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.dnssec(n)),{successLabel:`Loaded`})}};function Si(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 Ci={command:`ip-version`,describe:`Retrieves the distribution of DNS queries by IP version.`,builder:o(Si),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.ipVersion(n)),{successLabel:`Loaded`})}};function wi(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 Ti={command:`matching-answer`,describe:`Retrieves the distribution of DNS queries by matching answers.`,builder:o(wi),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.matchingAnswer(n)),{successLabel:`Loaded`})}};function Ei(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 Di={command:`protocol`,describe:`Retrieves the distribution of DNS queries by DNS transport protocol.`,builder:o(Ei),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.protocol(n)),{successLabel:`Loaded`})}};function Oi(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 ki={command:`query-type`,describe:`Retrieves the distribution of DNS queries by type.`,builder:o(Oi),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.queryType(n)),{successLabel:`Loaded`})}};function Ai(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 ji={command:`response-code`,describe:`Retrieves the distribution of DNS queries by response code.`,builder:o(Ai),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,nodata:t.nodata,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.responseCode(n)),{successLabel:`Loaded`})}};function Mi(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 Ni={command:`response-ttl`,describe:`Retrieves the distribution of DNS queries by minimum response TTL.`,builder:o(Mi),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.summary.responseTtl(n)),{successLabel:`Loaded`})}},Pi={command:`summary`,describe:`Global DNS query trends — top domains, resolver stats, and DNSSEC adoption`,builder:e=>e.command(hi).command(xi).command(_i).command(yi).command(Ci).command(Ti).command(Di).command(ki).command(ji).command(Ni).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Fi(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`,`RANK`]}).option(`format`,{type:`string`,description:`Format in which 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:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of DNS queries grouped by dimension over time.`,builder:o(Fi),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,cacheHit:t[`cache-hit`],nodata:t.nodata,protocol:t.protocol,queryType:t[`query-type`],responseCode:t[`response-code`],responseTtl:t[`response-ttl`],dnssec:t.dnssec,dnssecAware:t[`dnssec-aware`],dnssecE2e:t[`dnssec-e2e`],ipVersion:t[`ip-version`],limitPerGroup:t[`limit-per-group`],matchingAnswer:t[`matching-answer`],tld:t.tld,normalization:t.normalization,format:t.format};if(t.dryRun){i({command:`cf radar dns timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroupsV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function Li(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 Ri={command:`cache-hit`,describe:`Retrieves the distribution of DNS queries by cache status over time.`,builder:o(Li),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.cacheHit(n)),{successLabel:`Loaded`})}};function zi(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 Bi={command:`dnssec-aware`,describe:`Retrieves the distribution of DNS queries by DNSSEC (DNS Security Extensions) client awareness over time.`,builder:o(zi),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.dnssecAware(n)),{successLabel:`Loaded`})}};function Vi(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 Hi={command:`dnssec-e2e`,describe:`Retrieves the distribution of DNSSEC-validated answers by end-to-end security status over time.`,builder:o(Vi),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.dnssecE2E(n)),{successLabel:`Loaded`})}};function Ui(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 Wi={command:`dnssec`,describe:`Retrieves the distribution of DNS responses by DNSSEC (DNS Security Extensions) support over time.`,builder:o(Ui),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.dnssec(n)),{successLabel:`Loaded`})}};function Gi(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 Ki={command:`ip-version`,describe:`Retrieves the distribution of DNS queries by IP version over time.`,builder:o(Gi),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.ipVersion(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 Ji={command:`matching-answer`,describe:`Retrieves the distribution of DNS queries by matching answers over time.`,builder:o(qi),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.matchingAnswer(n)),{successLabel:`Loaded`})}};function Yi(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 Xi={command:`protocol`,describe:`Retrieves the distribution of DNS queries by DNS transport protocol over time.`,builder:o(Yi),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.protocol(n)),{successLabel:`Loaded`})}};function Zi(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 Qi={command:`query-type`,describe:`Retrieves the distribution of DNS queries by type over time.`,builder:o(Zi),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.queryType(n)),{successLabel:`Loaded`})}};function $i(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 ea={command:`response-code`,describe:`Retrieves the distribution of DNS queries by response code over time.`,builder:o($i),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,nodata:t.nodata,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.responseCode(n)),{successLabel:`Loaded`})}};function ta(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 na={command:`response-ttl`,describe:`Retrieves the distribution of DNS queries by minimum answer TTL over time.`,builder:o(ta),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,tld:t.tld,queryType:t[`query-type`],protocol:t.protocol,responseCode:t[`response-code`],nodata:t.nodata,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseriesGroups.responseTtl(n)),{successLabel:`Loaded`})}},ra={command:`timeseries-groups`,describe:`Global DNS query trends — top domains, resolver stats, and DNSSEC adoption`,builder:e=>e.command(Ri).command(Wi).command(Bi).command(Hi).command(Ki).command(Ji).command(Xi).command(Qi).command(ea).command(na).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};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(`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 aa={command:`timeseries`,describe:`Retrieves normalized query volume to the 1.1.1.1 DNS resolver over time.`,builder:o(ia),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,cacheHit:t[`cache-hit`],nodata:t.nodata,protocol:t.protocol,queryType:t[`query-type`],responseCode:t[`response-code`],responseTtl:t[`response-ttl`],dnssec:t.dnssec,dnssecAware:t[`dnssec-aware`],dnssecE2e:t[`dnssec-e2e`],ipVersion:t[`ip-version`],matchingAnswer:t[`matching-answer`],tld:t.tld,format:t.format};if(t.dryRun){i({command:`cf radar dns timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/dns/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.timeseries(n)),{successLabel:`Loaded`})}};function oa(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 sa={command:`ases`,describe:`Retrieves the top autonomous systems by DNS queries made to 1.1.1.1 DNS resolver.`,builder:o(oa),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,domain:t.domain,cacheHit:t[`cache-hit`],nodata:t.nodata,protocol:t.protocol,queryType:t[`query-type`],responseCode:t[`response-code`],responseTtl:t[`response-ttl`],dnssec:t.dnssec,dnssecAware:t[`dnssec-aware`],dnssecE2e:t[`dnssec-e2e`],ipVersion:t[`ip-version`],matchingAnswer:t[`matching-answer`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.top.ases(n)),{successLabel:`Loaded`})}};function ca(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 la={command:`locations`,describe:`Retrieves the top locations by DNS queries made to 1.1.1.1 DNS resolver.`,builder:o(ca),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,domain:t.domain,cacheHit:t[`cache-hit`],nodata:t.nodata,protocol:t.protocol,queryType:t[`query-type`],responseCode:t[`response-code`],responseTtl:t[`response-ttl`],dnssec:t.dnssec,dnssecAware:t[`dnssec-aware`],dnssecE2e:t[`dnssec-e2e`],ipVersion:t[`ip-version`],matchingAnswer:t[`matching-answer`],tld:t.tld,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.dns.top.locations(n)),{successLabel:`Loaded`})}},ua={command:`top`,describe:`Global DNS query trends — top domains, resolver stats, and DNSSEC adoption`,builder:e=>e.command(sa).command(la).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},da={command:`dns`,describe:`Global DNS query trends — top domains, resolver stats, and DNSSEC adoption`,builder:e=>e.command(pi).command(aa).command(Ii).command(Pi).command(ra).command(ua).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function fa(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 pa={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of email routing metrics by the specified dimension.`,builder:o(fa),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,ipVersion:t[`ip-version`],encrypted:t.encrypted,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar email routing summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function ma(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 ha={command:`arc`,describe:`Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation.`,builder:o(ma),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,ipVersion:t[`ip-version`],encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.summary.arc(n)),{successLabel:`Loaded`})}};function ga(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 _a={command:`dkim`,describe:`Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation.`,builder:o(ga),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dmarc:t.dmarc,spf:t.spf,ipVersion:t[`ip-version`],encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.summary.dkim(n)),{successLabel:`Loaded`})}};function va(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 ya={command:`dmarc`,describe:`Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation.`,builder:o(va),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,spf:t.spf,ipVersion:t[`ip-version`],encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.summary.dmarc(n)),{successLabel:`Loaded`})}};function ba(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 xa={command:`encrypted`,describe:`Retrieves the distribution of emails by encryption status (encrypted vs. not-encrypted).`,builder:o(ba),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,ipVersion:t[`ip-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.summary.encrypted(n)),{successLabel:`Loaded`})}};function Sa(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 Ca={command:`ip-version`,describe:`Retrieves the distribution of emails by IP version.`,builder:o(Sa),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.summary.ipVersion(n)),{successLabel:`Loaded`})}};function wa(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 Ta={command:`spf`,describe:`Retrieves the distribution of emails by SPF (Sender Policy Framework) validation.`,builder:o(wa),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,ipVersion:t[`ip-version`],encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.summary.spf(n)),{successLabel:`Loaded`})}},Ea={command:`summary`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(ha).command(_a).command(ya).command(xa).command(Ca).command(Ta).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Da(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 Oa={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of email routing metrics grouped by dimension over time.`,builder:o(Da),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,ipVersion:t[`ip-version`],encrypted:t.encrypted,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar email routing timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/routing/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.timeseriesGroupsV2({dimension:t.dimension,...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(`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 Aa={command:`arc`,describe:`Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation over time.`,builder:o(ka),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,ipVersion:t[`ip-version`],encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.timeseriesGroups.arc(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(`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 Ma={command:`dkim`,describe:`Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation over time.`,builder:o(ja),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dmarc:t.dmarc,spf:t.spf,ipVersion:t[`ip-version`],encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.timeseriesGroups.dkim(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(`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 Pa={command:`dmarc`,describe:`Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation over time.`,builder:o(Na),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,spf:t.spf,ipVersion:t[`ip-version`],encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.timeseriesGroups.dmarc(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(`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 Ia={command:`encrypted`,describe:`Retrieves the distribution of emails by encryption status (encrypted vs. not-encrypted) over time.`,builder:o(Fa),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,ipVersion:t[`ip-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.timeseriesGroups.encrypted(n)),{successLabel:`Loaded`})}};function La(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 Ra={command:`ip-version`,describe:`Retrieves the distribution of emails by IP version over time.`,builder:o(La),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function za(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 Ba={command:`spf`,describe:`Retrieves the distribution of emails by SPF (Sender Policy Framework) validation over time.`,builder:o(za),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,ipVersion:t[`ip-version`],encrypted:t.encrypted,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.routing.timeseriesGroups.spf(n)),{successLabel:`Loaded`})}},Va={command:`timeseries-groups`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Aa).command(Ma).command(Pa).command(Ia).command(Ra).command(Ba).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ha={command:`routing`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(pa).command(Oa).command(Ea).command(Va).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ua(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 Wa={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of email security metrics by the specified dimension.`,builder:o(Ua),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar email security summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function Ga(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 Ka={command:`arc`,describe:`Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation.`,builder:o(Ga),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summary.arc(n)),{successLabel:`Loaded`})}};function qa(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 Ja={command:`dkim`,describe:`Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation.`,builder:o(qa),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summary.dkim(n)),{successLabel:`Loaded`})}};function Ya(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 Xa={command:`dmarc`,describe:`Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation.`,builder:o(Ya),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summary.dmarc(n)),{successLabel:`Loaded`})}};function Za(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 Qa={command:`malicious`,describe:`Retrieves the distribution of emails by malicious classification.`,builder:o(Za),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summary.malicious(n)),{successLabel:`Loaded`})}};function $a(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 $={command:`spam`,describe:`Retrieves the proportion of emails by spam classification (spam vs. non-spam).`,builder:o($a),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summary.spam(n)),{successLabel:`Loaded`})}};function eo(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 to={command:`spf`,describe:`Retrieves the distribution of emails by SPF (Sender Policy Framework) validation.`,builder:o(eo),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summary.spf(n)),{successLabel:`Loaded`})}};function no(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 ro={command:`spoof`,describe:`Retrieves the proportion of emails by spoof classification (spoof vs. non-spoof).`,builder:o(no),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summary.spoof(n)),{successLabel:`Loaded`})}};function io(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 ao={command:`threat-category`,describe:`Retrieves the distribution of emails by threat categories.`,builder:o(io),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summary.threatCategory(n)),{successLabel:`Loaded`})}};function oo(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 so={command:`tls-version`,describe:`Retrieves the distribution of emails by TLS version.`,builder:o(oo),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.summary.tlsVersion(n)),{successLabel:`Loaded`})}},co={command:`summary`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Ka).command(Ja).command(Xa).command(Qa).command($).command(to).command(ro).command(ao).command(so).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function lo(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 uo={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of email security metrics grouped by dimension over time.`,builder:o(lo),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar email security timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroupsV2({dimension:t.dimension,...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(`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:`arc`,describe:`Retrieves the distribution of emails by ARC (Authenticated Received Chain) validation over time.`,builder:o(fo),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroups.arc(n)),{successLabel:`Loaded`})}};function mo(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 ho={command:`dkim`,describe:`Retrieves the distribution of emails by DKIM (DomainKeys Identified Mail) validation over time.`,builder:o(mo),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroups.dkim(n)),{successLabel:`Loaded`})}};function go(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 _o={command:`dmarc`,describe:`Retrieves the distribution of emails by DMARC (Domain-based Message Authentication, Reporting and Conformance) validation over time.`,builder:o(go),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroups.dmarc(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(`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:`malicious`,describe:`Retrieves the distribution of emails by malicious classification over time.`,builder:o(vo),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroups.malicious(n)),{successLabel:`Loaded`})}};function bo(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 xo={command:`spam`,describe:`Retrieves the distribution of emails by spam classification (spam vs. non-spam) over time.`,builder:o(bo),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroups.spam(n)),{successLabel:`Loaded`})}};function So(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 Co={command:`spf`,describe:`Retrieves the distribution of emails by SPF (Sender Policy Framework) validation over time.`,builder:o(So),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroups.spf(n)),{successLabel:`Loaded`})}};function wo(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 To={command:`spoof`,describe:`Retrieves the distribution of emails by spoof classification (spoof vs. non-spoof) over time.`,builder:o(wo),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroups.spoof(n)),{successLabel:`Loaded`})}};function Eo(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 Do={command:`threat-category`,describe:`Retrieves the distribution of emails by threat category over time.`,builder:o(Eo),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroups.threatCategory(n)),{successLabel:`Loaded`})}};function Oo(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 ko={command:`tls-version`,describe:`Retrieves the distribution of emails by TLS version over time.`,builder:o(Oo),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.timeseriesGroups.tlsVersion(n)),{successLabel:`Loaded`})}},Ao={command:`timeseries-groups`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(po).command(ho).command(_o).command(yo).command(xo).command(Co).command(To).command(Do).command(ko).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function jo(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 Mo={command:`get`,describe:`Retrieves the top TLDs by number of email messages.`,builder:o(jo),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],tldCategory:t[`tld-category`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.top.tlds.get(n)),{successLabel:`Loaded`})}};function No(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 Po={command:`get <malicious>`,describe:`Retrieves the top TLDs by emails classified as malicious or not.`,builder:o(No),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],tldCategory:t[`tld-category`],format:t.format};if(t.dryRun){i({command:`cf radar email security top tlds malicious get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/top/tlds/malicious/${t.malicious==null?`<malicious>`:encodeURIComponent(String(t.malicious))}`,pathParams:{malicious:String(t.malicious??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.top.tlds.malicious.get({malicious:t.malicious,...n})),{successLabel:`Loaded`})}},Fo={command:`malicious`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Po).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Io(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 Lo={command:`get <spam>`,describe:`Retrieves the top TLDs by emails classified as spam or not.`,builder:o(Io),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],tldCategory:t[`tld-category`],format:t.format};if(t.dryRun){i({command:`cf radar email security top tlds spam get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/top/tlds/spam/${t.spam==null?`<spam>`:encodeURIComponent(String(t.spam))}`,pathParams:{spam:String(t.spam??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.top.tlds.spam.get({spam:t.spam,...n})),{successLabel:`Loaded`})}},Ro={command:`spam`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Lo).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function zo(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 Bo={command:`get <spoof>`,describe:`Retrieves the top TLDs by emails classified as spoof or not.`,builder:o(zo),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],arc:t.arc,dkim:t.dkim,dmarc:t.dmarc,spf:t.spf,tlsVersion:t[`tls-version`],tldCategory:t[`tld-category`],format:t.format};if(t.dryRun){i({command:`cf radar email security top tlds spoof get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/email/security/top/tlds/spoof/${t.spoof==null?`<spoof>`:encodeURIComponent(String(t.spoof))}`,pathParams:{spoof:String(t.spoof??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.email.security.top.tlds.spoof.get({spoof:t.spoof,...n})),{successLabel:`Loaded`})}},Vo={command:`spoof`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Bo).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ho={command:`tlds`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Mo).command(Fo).command(Ro).command(Vo).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Uo={command:`top`,describe:`Operations for email.security.top`,builder:e=>e.command(Ho).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Wo={command:`security`,describe:`Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics`,builder:e=>e.command(Wa).command(uo).command(co).command(Ao).command(Uo).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Go={command:`email`,describe:`Operations for email`,builder:e=>e.command(Ha).command(Wo).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ko(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 qo={command:`as-set <asn>`,describe:`Retrieves Internet Routing Registry AS-SETs that an AS is a member of.`,builder:o(Ko),handler:async t=>{let n={format:t.format};if(t.dryRun){i({command:`cf radar entities asns as-set`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/asns/${t.asn==null?`<asn>`:encodeURIComponent(String(t.asn))}/as_set`,pathParams:{asn:String(t.asn??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.entities.asns.asSet({asn:t.asn,...n})),{successLabel:`Loaded`})}};function Jo(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 Yo={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:o(Jo),handler:async t=>{let n={limit:t.limit,offset:t.offset,metric:t.metric,date:t.date,compareDateRange:t[`compare-date-range`],location:t.location,asn:t.asn,sortOrder:t[`sort-order`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.entities.asns.botnetThreatFeed(n)),{successLabel:`Loaded`})}};function Xo(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 Zo={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:o(Xo),handler:async t=>{let n={format:t.format};if(t.dryRun){i({command:`cf radar entities asns get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/asns/${t.asn==null?`<asn>`:encodeURIComponent(String(t.asn))}`,pathParams:{asn:String(t.asn??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.entities.asns.get({asn:t.asn,...n})),{successLabel:`Loaded`})}};function Qo(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 $o={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:o(Qo),handler:async t=>{let n={ip:t.ip,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.entities.asns.ip(n)),{successLabel:`Loaded`})}};function es(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 ts={command:`list`,describe:`Retrieves a list of autonomous systems.`,builder:o(es),handler:async t=>{let n={limit:t.limit,offset:t.offset,asn:t.asn,location:t.location,orderBy:t[`order-by`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.entities.asns.list(n)),{successLabel:`Loaded`})}};function ns(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 rs={command:`rel <asn>`,describe:`Retrieves AS-level relationship for given networks.`,builder:o(ns),handler:async t=>{let n={asn2:t.asn2,format:t.format};if(t.dryRun){i({command:`cf radar entities asns rel`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/asns/${t.asn==null?`<asn>`:encodeURIComponent(String(t.asn))}/rel`,pathParams:{asn:String(t.asn??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.entities.asns.rel({asn:t.asn,...n})),{successLabel:`Loaded`})}},is={command:`asns`,describe:`Look up ASNs, IPs, domains, and locations with metadata and traffic summaries`,builder:e=>e.command(qo).command(Yo).command(Zo).command($o).command(ts).command(rs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function as(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 os={command:`get`,describe:`Retrieves IP address information.`,builder:o(as),handler:async t=>{let n={ip:t.ip,format:t.format};if(t.dryRun){i({command:`cf radar entities get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/ip`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.entities.get(n)),{successLabel:`Loaded`})}};function ss(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 cs={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:o(ss),handler:async t=>{let n={format:t.format};if(t.dryRun){i({command:`cf radar entities locations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/entities/locations/${t.location==null?`<location>`:encodeURIComponent(String(t.location))}`,pathParams:{location:String(t.location??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.entities.locations.get({location:t.location,...n})),{successLabel:`Loaded`})}};function ls(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 us={command:`list`,describe:`Retrieves a list of locations.`,builder:o(ls),handler:async t=>{let n={limit:t.limit,offset:t.offset,location:t.location,region:t.region,subregion:t.subregion,continent:t.continent,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.entities.locations.list(n)),{successLabel:`Loaded`})}},ds={command:`locations`,describe:`Look up ASNs, IPs, domains, and locations with metadata and traffic summaries`,builder:e=>e.command(cs).command(us).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},fs={command:`entities`,describe:`Look up ASNs, IPs, domains, and locations with metadata and traffic summaries`,builder:e=>e.command(os).command(is).command(ds).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ps(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 ms={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:o(ps),handler:async t=>{let n={format:t.format};if(t.dryRun){i({command:`cf radar geolocations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/geolocations/${t[`geo-id`]==null?`<geo-id>`:encodeURIComponent(String(t[`geo-id`]))}`,pathParams:{"geo-id":String(t[`geo-id`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.geolocations.get({geo_id:t[`geo-id`],...n})),{successLabel:`Loaded`})}};function hs(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 gs={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:o(hs),handler:async t=>{let n={limit:t.limit,offset:t.offset,geoId:t[`geo-id`],location:t.location,format:t.format};if(t.dryRun){i({command:`cf radar geolocations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/geolocations`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.geolocations.list(n)),{successLabel:`Loaded`})}},_s={command:`geolocations`,describe:`Geographic location metadata used for regional traffic analysis`,builder:e=>e.command(ms).command(gs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function vs(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 ys={command:`get <bot-class>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested bot class.`,builder:o(vs),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http ases bot-class get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/bot_class/${t[`bot-class`]==null?`<bot-class>`:encodeURIComponent(String(t[`bot-class`]))}`,pathParams:{"bot-class":String(t[`bot-class`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.ases.botClass.get({bot_class:t[`bot-class`],...n})),{successLabel:`Loaded`})}},bs={command:`bot-class`,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 xs(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 Ss={command:`get <browser-family>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested browser family.`,builder:o(xs),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({command:`cf radar http ases browser-family get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/browser_family/${t[`browser-family`]==null?`<browser-family>`:encodeURIComponent(String(t[`browser-family`]))}`,pathParams:{"browser-family":String(t[`browser-family`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.ases.browserFamily.get({browser_family:t[`browser-family`],...n})),{successLabel:`Loaded`})}},Cs={command:`browser-family`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Ss).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ws(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 Ts={command:`get <device-type>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested device type.`,builder:o(ws),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http ases device-type get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/device_type/${t[`device-type`]==null?`<device-type>`:encodeURIComponent(String(t[`device-type`]))}`,pathParams:{"device-type":String(t[`device-type`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.ases.deviceType.get({device_type:t[`device-type`],...n})),{successLabel:`Loaded`})}},Es={command:`device-type`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Ts).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ds(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 Os={command:`get`,describe:`Retrieves the top autonomous systems by HTTP requests.`,builder:o(Ds),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.ases.get(n)),{successLabel:`Loaded`})}};function ks(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 As={command:`get <http-version>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested HTTP version.`,builder:o(ks),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http ases http-method get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/http_version/${t[`http-version`]==null?`<http-version>`:encodeURIComponent(String(t[`http-version`]))}`,pathParams:{"http-version":String(t[`http-version`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.ases.httpMethod.get({http_version:t[`http-version`],...n})),{successLabel:`Loaded`})}},js={command:`http-method`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(As).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ms(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 Ns={command:`get <http-protocol>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested HTTP protocol.`,builder:o(Ms),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http ases http-protocol get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/http_protocol/${t[`http-protocol`]==null?`<http-protocol>`:encodeURIComponent(String(t[`http-protocol`]))}`,pathParams:{"http-protocol":String(t[`http-protocol`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.ases.httpProtocol.get({http_protocol:t[`http-protocol`],...n})),{successLabel:`Loaded`})}},Ps={command:`http-protocol`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Ns).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Fs(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 Is={command:`get <ip-version>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested IP version.`,builder:o(Fs),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http ases ip-version get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/ip_version/${t[`ip-version`]==null?`<ip-version>`:encodeURIComponent(String(t[`ip-version`]))}`,pathParams:{"ip-version":String(t[`ip-version`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.ases.ipVersion.get({ip_version:t[`ip-version`],...n})),{successLabel:`Loaded`})}},Ls={command:`ip-version`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Is).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Rs(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 zs={command:`get <os>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested operating system.`,builder:o(Rs),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http ases os get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/os/${t.os==null?`<os>`:encodeURIComponent(String(t.os))}`,pathParams:{os:String(t.os??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.ases.os.get({os:t.os,...n})),{successLabel:`Loaded`})}},Bs={command:`os`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(zs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Vs(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 Hs={command:`get <tls-version>`,describe:`Retrieves the top autonomous systems, by HTTP requests, of the requested TLS protocol version.`,builder:o(Vs),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http ases tls-version get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/ases/tls_version/${t[`tls-version`]==null?`<tls-version>`:encodeURIComponent(String(t[`tls-version`]))}`,pathParams:{"tls-version":String(t[`tls-version`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.ases.tlsVersion.get({tls_version:t[`tls-version`],...n})),{successLabel:`Loaded`})}},Us={command:`tls-version`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Hs).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ws={command:`ases`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Os).command(bs).command(Cs).command(Es).command(js).command(Ps).command(Ls).command(Bs).command(Us).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Gs(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 Ks={command:`get <bot-class>`,describe:`Retrieves the top locations, by HTTP requests, of the requested bot class.`,builder:o(Gs),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http locations bot-class get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/bot_class/${t[`bot-class`]==null?`<bot-class>`:encodeURIComponent(String(t[`bot-class`]))}`,pathParams:{"bot-class":String(t[`bot-class`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.locations.botClass.get({bot_class:t[`bot-class`],...n})),{successLabel:`Loaded`})}},qs={command:`bot-class`,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(`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 Ys={command:`get <browser-family>`,describe:`Retrieves the top locations, by HTTP requests, of the requested browser family.`,builder:o(Js),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({command:`cf radar http locations browser-family get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/browser_family/${t[`browser-family`]==null?`<browser-family>`:encodeURIComponent(String(t[`browser-family`]))}`,pathParams:{"browser-family":String(t[`browser-family`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.locations.browserFamily.get({browser_family:t[`browser-family`],...n})),{successLabel:`Loaded`})}},Xs={command:`browser-family`,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(`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 Qs={command:`get <device-type>`,describe:`Retrieves the top locations, by HTTP requests, of the requested device type.`,builder:o(Zs),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http locations device-type get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/device_type/${t[`device-type`]==null?`<device-type>`:encodeURIComponent(String(t[`device-type`]))}`,pathParams:{"device-type":String(t[`device-type`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.locations.deviceType.get({device_type:t[`device-type`],...n})),{successLabel:`Loaded`})}},$s={command:`device-type`,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.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 tc={command:`get`,describe:`Retrieves the top locations by HTTP requests.`,builder:o(ec),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.locations.get(n)),{successLabel:`Loaded`})}};function nc(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 rc={command:`get <http-version>`,describe:`Retrieves the top locations, by HTTP requests, of the requested HTTP version.`,builder:o(nc),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http locations http-method get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/http_version/${t[`http-version`]==null?`<http-version>`:encodeURIComponent(String(t[`http-version`]))}`,pathParams:{"http-version":String(t[`http-version`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.locations.httpMethod.get({http_version:t[`http-version`],...n})),{successLabel:`Loaded`})}},ic={command:`http-method`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(rc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ac(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 oc={command:`get <http-protocol>`,describe:`Retrieves the top locations, by HTTP requests, of the requested HTTP protocol.`,builder:o(ac),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http locations http-protocol get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/http_protocol/${t[`http-protocol`]==null?`<http-protocol>`:encodeURIComponent(String(t[`http-protocol`]))}`,pathParams:{"http-protocol":String(t[`http-protocol`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.locations.httpProtocol.get({http_protocol:t[`http-protocol`],...n})),{successLabel:`Loaded`})}},sc={command:`http-protocol`,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:()=>{}};function cc(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 lc={command:`get <ip-version>`,describe:`Retrieves the top locations, by HTTP requests, of the requested IP version.`,builder:o(cc),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http locations ip-version get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/ip_version/${t[`ip-version`]==null?`<ip-version>`:encodeURIComponent(String(t[`ip-version`]))}`,pathParams:{"ip-version":String(t[`ip-version`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.locations.ipVersion.get({ip_version:t[`ip-version`],...n})),{successLabel:`Loaded`})}},uc={command:`ip-version`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(lc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function dc(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 fc={command:`get <os>`,describe:`Retrieves the top locations, by HTTP requests, of the requested operating system.`,builder:o(dc),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http locations os get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/os/${t.os==null?`<os>`:encodeURIComponent(String(t.os))}`,pathParams:{os:String(t.os??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.locations.os.get({os:t.os,...n})),{successLabel:`Loaded`})}},pc={command:`os`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(fc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function mc(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 hc={command:`get <tls-version>`,describe:`Retrieves the top locations, by HTTP requests, of the requested TLS protocol version.`,builder:o(mc),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http locations tls-version get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/top/locations/tls_version/${t[`tls-version`]==null?`<tls-version>`:encodeURIComponent(String(t[`tls-version`]))}`,pathParams:{"tls-version":String(t[`tls-version`]??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.locations.tlsVersion.get({tls_version:t[`tls-version`],...n})),{successLabel:`Loaded`})}},gc={command:`tls-version`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(hc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},_c={command:`locations`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(tc).command(qs).command(Xs).command($s).command(ic).command(sc).command(uc).command(pc).command(gc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function vc(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(`api-traffic`,{type:`string`,description:`Filters results by API traffic classification. API traffic is identified by JSON or XML response content types on dynamic (non-cacheable) HTTP requests.`}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`content-type`,{type:`string`,description:`Filters results by content type category.`}).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 yc={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of HTTP requests by the specified dimension.`,builder:o(vc),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],apiTraffic:t[`api-traffic`],botClass:t[`bot-class`],contentType:t[`content-type`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar http summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function bc(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 xc={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:o(bc),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.summary.botClass(n)),{successLabel:`Loaded`})}};function Sc(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 Cc={command:`device-type`,describe:`Retrieves the distribution of HTTP requests generated by mobile, desktop, and other types of devices.`,builder:o(Sc),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.summary.deviceType(n)),{successLabel:`Loaded`})}};function wc(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 Tc={command:`http-protocol`,describe:`Retrieves the distribution of HTTP requests by HTTP protocol (HTTP vs. HTTPS).`,builder:o(wc),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.summary.httpProtocol(n)),{successLabel:`Loaded`})}};function Ec(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 Dc={command:`http-version`,describe:`Retrieves the distribution of HTTP requests by HTTP version.`,builder:o(Ec),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.summary.httpVersion(n)),{successLabel:`Loaded`})}};function Oc(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 kc={command:`ip-version`,describe:`Retrieves the distribution of HTTP requests by IP version.`,builder:o(Oc),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.summary.ipVersion(n)),{successLabel:`Loaded`})}};function Ac(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 jc={command:`os`,describe:`Retrieves the distribution of HTTP requests by operating system (Windows, macOS, Android, iOS, and others).`,builder:o(Ac),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.summary.os(n)),{successLabel:`Loaded`})}};function Mc(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 Nc={command:`post-quantum`,describe:`Retrieves the distribution of HTTP requests by post-quantum support.`,builder:o(Mc),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.summary.postQuantum(n)),{successLabel:`Loaded`})}};function Pc(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 Fc={command:`tls-version`,describe:`Retrieves the distribution of HTTP requests by TLS version.`,builder:o(Pc),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.summary.tlsVersion(n)),{successLabel:`Loaded`})}},Ic={command:`summary`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(xc).command(Cc).command(Tc).command(Dc).command(kc).command(jc).command(Nc).command(Fc).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Lc(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(`api-traffic`,{type:`string`,description:`Filters results by API traffic classification. API traffic is identified by JSON or XML response content types on dynamic (non-cacheable) HTTP requests.`}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`content-type`,{type:`string`,description:`Filters results by content type 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(`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 Rc={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of HTTP requests grouped by dimension.`,builder:o(Lc),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],apiTraffic:t[`api-traffic`],botClass:t[`bot-class`],contentType:t[`content-type`],limitPerGroup:t[`limit-per-group`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],normalization:t.normalization,ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({command:`cf radar http timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroupsV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function zc(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 Bc={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:o(zc),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.botClass(n)),{successLabel:`Loaded`})}};function Vc(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 Hc={command:`browser-family`,describe:`Retrieves the distribution of HTTP requests by user agent family over time.`,builder:o(Vc),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.browserFamily(n)),{successLabel:`Loaded`})}};function Uc(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 Wc={command:`browser`,describe:`Retrieves the distribution of HTTP requests by user agent over time.`,builder:o(Uc),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.browser(n)),{successLabel:`Loaded`})}};function Gc(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 Kc={command:`device-type`,describe:`Retrieves the distribution of HTTP requests by device type over time.`,builder:o(Gc),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.deviceType(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(`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 Jc={command:`http-protocol`,describe:`Retrieves the distribution of HTTP requests by HTTP protocol (HTTP vs. HTTPS) over time.`,builder:o(qc),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.httpProtocol(n)),{successLabel:`Loaded`})}};function Yc(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 Xc={command:`http-version`,describe:`Retrieves the distribution of HTTP requests by HTTP version over time.`,builder:o(Yc),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.httpVersion(n)),{successLabel:`Loaded`})}};function Zc(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 Qc={command:`ip-version`,describe:`Retrieves the distribution of HTTP requests by IP version over time.`,builder:o(Zc),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.ipVersion(n)),{successLabel:`Loaded`})}};function $c(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 el={command:`os`,describe:`Retrieves the distribution of HTTP requests by operating system over time.`,builder:o($c),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.os(n)),{successLabel:`Loaded`})}};function tl(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 nl={command:`post-quantum`,describe:`Retrieves the distribution of HTTP requests by post-quantum support over time.`,builder:o(tl),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.postQuantum(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(`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 il={command:`tls-version`,describe:`Retrieves the distribution of HTTP requests by TLS version over time.`,builder:o(rl),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseriesGroups.tlsVersion(n)),{successLabel:`Loaded`})}},al={command:`timeseries-groups`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(Bc).command(Wc).command(Hc).command(Kc).command(Jc).command(Xc).command(Qc).command(el).command(nl).command(il).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};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(`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(`api-traffic`,{type:`string`,description:`Filters results by API traffic classification. API traffic is identified by JSON or XML response content types on dynamic (non-cacheable) HTTP requests.`}).option(`bot-class`,{type:`string`,description:`Filters results by bot class. Refer to [Bot classes](https://developers.cloudflare.com/radar/concepts/bot-classes/).`}).option(`content-type`,{type:`string`,description:`Filters results by content type category.`}).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 sl={command:`timeseries`,describe:`Retrieves the HTTP requests over time.`,builder:o(ol),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],normalization:t.normalization,apiTraffic:t[`api-traffic`],botClass:t[`bot-class`],contentType:t[`content-type`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({command:`cf radar http timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/http/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.http.timeseries(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(`format`,{type:`string`,description:`Format in which 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:`browser-family`,describe:`Retrieves the top user agents, aggregated in families, by HTTP requests.`,builder:o(cl),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.top.browserFamily(n)),{successLabel:`Loaded`})}};function ul(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 dl={command:`browser`,describe:`Retrieves the top user agents by HTTP requests.`,builder:o(ul),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],botClass:t[`bot-class`],deviceType:t[`device-type`],httpProtocol:t[`http-protocol`],httpVersion:t[`http-version`],ipVersion:t[`ip-version`],os:t.os,tlsVersion:t[`tls-version`],browserFamily:t[`browser-family`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.http.top.browser(n)),{successLabel:`Loaded`})}},fl={command:`top`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(dl).command(ll).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},pl={command:`http`,describe:`HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution`,builder:e=>e.command(yc).command(sl).command(Rc).command(Ws).command(_c).command(Ic).command(al).command(fl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ml(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 hl={command:`summary-v2 <dimension>`,describe:`Retrieves an aggregated summary of HTTP authentication requests grouped by the specified dimension.`,builder:o(ml),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,botClass:t[`bot-class`],compromised:t.compromised,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar leaked-credentials summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/leaked_credential_checks/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.leakedCredentials.summaryV2({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function gl(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 _l={command:`bot-class`,describe:`Retrieves the distribution of HTTP authentication requests by bot class.`,builder:o(gl),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],compromised:t.compromised,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.leakedCredentials.summary.botClass(n)),{successLabel:`Loaded`})}};function vl(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 yl={command:`compromised`,describe:`Retrieves the distribution of HTTP authentication requests by compromised credential status.`,builder:o(vl),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],botClass:t[`bot-class`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.leakedCredentials.summary.compromised(n)),{successLabel:`Loaded`})}},bl={command:`summary`,describe:`Leaked credential detection trends and exposure statistics`,builder:e=>e.command(_l).command(yl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function xl(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 Sl={command:`timeseries-groups-v2 <dimension>`,describe:`Retrieves the distribution of HTTP authentication requests, grouped by the specified dimension over time.`,builder:o(xl),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,botClass:t[`bot-class`],compromised:t.compromised,checkResult:t[`check-result`],limitPerGroup:t[`limit-per-group`],normalization:t.normalization,format:t.format};if(t.dryRun){i({command:`cf radar leaked-credentials timeseries-groups-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/leaked_credential_checks/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.leakedCredentials.timeseriesGroupsV2({dimension:t.dimension,...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(`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 wl={command:`bot-class`,describe:`Retrieves the distribution of HTTP authentication requests by bot class over time.`,builder:o(Cl),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],compromised:t.compromised,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.leakedCredentials.timeseriesGroups.botClass(n)),{successLabel:`Loaded`})}};function Tl(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 El={command:`compromised`,describe:`Retrieves the distribution of HTTP authentication requests by compromised credential status over time.`,builder:o(Tl),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],botClass:t[`bot-class`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.leakedCredentials.timeseriesGroups.compromised(n)),{successLabel:`Loaded`})}},Dl={command:`timeseries-groups`,describe:`Leaked credential detection trends and exposure statistics`,builder:e=>e.command(wl).command(El).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ol={command:`leaked-credentials`,describe:`Leaked credential detection trends and exposure statistics`,builder:e=>e.command(hl).command(Sl).command(bl).command(Dl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function kl(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 Al={command:`summary-v2 <dimension>`,describe:`Retrieves the distribution of network traffic (NetFlows) by the specified dimension.`,builder:o(kl),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],product:t.product,limitPerGroup:t[`limit-per-group`],format:t.format};if(t.dryRun){i({command:`cf radar netflows summary-v2`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.netflows.summaryV2({dimension:t.dimension,...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(`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 Ml={command:`summary`,describe:`Retrieves the distribution of network traffic (NetFlows) by HTTP vs other protocols.`,builder:o(jl),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],format:t.format};if(t.dryRun){i({command:`cf radar netflows summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/summary`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.netflows.summary(n)),{successLabel:`Loaded`})}};function Nl(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`,`PERCENTAGE_CHANGE`]}).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 Pl={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of NetFlows traffic, grouped by the specified dimension over time.`,builder:o(Nl),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],limitPerGroup:t[`limit-per-group`],normalization:t.normalization,product:t.product,format:t.format};if(t.dryRun){i({command:`cf radar netflows timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.netflows.timeseriesGroups({dimension:t.dimension,...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(`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 Il={command:`timeseries`,describe:`Retrieves network traffic (NetFlows) over time.`,builder:o(Fl),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],product:t.product,asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],normalization:t.normalization,format:t.format};if(t.dryRun){i({command:`cf radar netflows timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/netflows/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.netflows.timeseries(n)),{successLabel:`Loaded`})}};function Ll(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 Rl={command:`ases`,describe:`Retrieves the top autonomous systems by network traffic (NetFlows).`,builder:o(Ll),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.netflows.top.ases(n)),{successLabel:`Loaded`})}};function zl(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 Bl={command:`locations`,describe:`Retrieves the top locations by network traffic (NetFlows).`,builder:o(zl),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,geoId:t[`geo-id`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.netflows.top.locations(n)),{successLabel:`Loaded`})}},Vl={command:`top`,describe:`Network-layer traffic flow data and volumetric trend analysis`,builder:e=>e.command(Rl).command(Bl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Hl={command:`netflows`,describe:`Network-layer traffic flow data and volumetric trend analysis`,builder:e=>e.command(Ml).command(Al).command(Il).command(Pl).command(Vl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ul(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 Wl={command:`get <slug>`,describe:`Retrieves the requested origin information with its regions.`,builder:o(Ul),handler:async t=>{let n={format:t.format};if(t.dryRun){i({command:`cf radar origins get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins/${t.slug==null?`<slug>`:encodeURIComponent(String(t.slug))}`,pathParams:{slug:String(t.slug??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.origins.get({slug:t.slug,...n})),{successLabel:`Loaded`})}};function Gl(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 Kl={command:`list`,describe:`Retrieves a list of origins with their regions.`,builder:o(Gl),handler:async t=>{let n={limit:t.limit,offset:t.offset,format:t.format};if(t.dryRun){i({command:`cf radar origins list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.origins.list(n)),{successLabel:`Loaded`})}};function ql(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. Required for all dimensions except ORIGIN.`}).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 Jl={command:`summary <dimension>`,describe:`Retrieves an aggregated summary of origin metrics grouped by the specified dimension.`,builder:o(ql),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],origin:t.origin,metric:t.metric,region:t.region,format:t.format};if(t.dryRun){i({command:`cf radar origins summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.origins.summary({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function Yl(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. Required for all dimensions except ORIGIN.`}).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 Xl={command:`timeseries-groups <dimension>`,describe:`Retrieves the distribution of origin metrics grouped by the specified dimension over time.`,builder:o(Yl),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],limitPerGroup:t[`limit-per-group`],origin:t.origin,metric:t.metric,region:t.region,normalization:t.normalization,format:t.format};if(t.dryRun){i({command:`cf radar origins timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.origins.timeseriesGroups({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function Zl(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 Ql={command:`timeseries`,describe:`Retrieves the time series of origin metrics for the specified origin.`,builder:o(Zl),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],origin:t.origin,metric:t.metric,region:t.region,format:t.format};if(t.dryRun){i({command:`cf radar origins timeseries`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/origins/timeseries`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.origins.timeseries(n)),{successLabel:`Loaded`})}},$l={command:`origins`,describe:`Origins operations`,builder:e=>e.command(Wl).command(Kl).command(Jl).command(Ql).command(Xl).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function eu(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 tu={command:`summary <dimension>`,describe:`Returns a summary of origin post-quantum data grouped by the specified dimension.`,builder:o(eu),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],format:t.format};if(t.dryRun){i({command:`cf radar post-quantum origin summary`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/post_quantum/origin/summary/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.postQuantum.origin.summary({dimension:t.dimension,...n})),{successLabel:`Loaded`})}};function nu(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 ru={command:`timeseries-groups <dimension>`,describe:`Returns a timeseries of origin post-quantum data grouped by the specified dimension.`,builder:o(nu),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],format:t.format};if(t.dryRun){i({command:`cf radar post-quantum origin timeseries-groups`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/post_quantum/origin/timeseries_groups/${t.dimension==null?`<dimension>`:encodeURIComponent(String(t.dimension))}`,pathParams:{dimension:String(t.dimension??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.postQuantum.origin.timeseriesGroups({dimension:t.dimension,...n})),{successLabel:`Loaded`})}},iu={command:`origin`,describe:`Post-quantum encryption adoption and deployment trends across the Internet`,builder:e=>e.command(tu).command(ru).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function au(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 ou={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, whether it uses PQ cryptography, and any detected TLS implementation bugs (Split ClientHello, HRR failure, etc.).`,builder:au,handler:async t=>{let n={host:t.host};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.postQuantum.tls.support(n)),{successLabel:`Loaded`})}},su={command:`tls`,describe:`Post-quantum encryption adoption and deployment trends across the Internet`,builder:e=>e.command(ou).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},cu={command:`post-quantum`,describe:`Operations for post-quantum`,builder:e=>e.command(iu).command(su).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function lu(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 uu={command:`summary`,describe:`Retrieves a summary (percentiles) of bandwidth, latency, or DNS response time from the Radar Internet Quality Index (IQI).`,builder:o(lu),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,metric:t.metric,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.quality.iqi.summary(n)),{successLabel:`Loaded`})}};function du(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 fu={command:`timeseries-groups`,describe:`Retrieves a time series (percentiles) of bandwidth, latency, or DNS response time from the Radar Internet Quality Index (IQI).`,builder:o(du),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,interpolation:t.interpolation,metric:t.metric,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.quality.iqi.timeseriesGroups(n)),{successLabel:`Loaded`})}},pu={command:`iqi`,describe:`Internet connection quality metrics — speed, latency, and jitter by geography and ASN`,builder:e=>e.command(uu).command(fu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function mu(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 hu={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:o(mu),handler:async t=>{let n={name:t.name,dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,bucketSize:t[`bucket-size`],metricGroup:t[`metric-group`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.quality.speed.histogram(n)),{successLabel:`Loaded`})}};function gu(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 _u={command:`summary`,describe:`Retrieves a summary of bandwidth, latency, jitter, and packet loss, from the previous 90 days of Cloudflare Speed Test data.`,builder:o(gu),handler:async t=>{let n={name:t.name,dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.quality.speed.summary(n)),{successLabel:`Loaded`})}};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-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 yu={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:o(vu),handler:async t=>{let n={limit:t.limit,name:t.name,dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,orderBy:t[`order-by`],reverse:t.reverse,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.quality.speed.top.ases(n)),{successLabel:`Loaded`})}};function bu(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 xu={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:o(bu),handler:async t=>{let n={limit:t.limit,name:t.name,dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,orderBy:t[`order-by`],reverse:t.reverse,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.quality.speed.top.locations(n)),{successLabel:`Loaded`})}},Su={command:`top`,describe:`Internet connection quality metrics — speed, latency, and jitter by geography and ASN`,builder:e=>e.command(yu).command(xu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Cu={command:`speed`,describe:`Internet connection quality metrics — speed, latency, and jitter by geography and ASN`,builder:e=>e.command(hu).command(_u).command(Su).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},wu={command:`quality`,describe:`Operations for quality`,builder:e=>e.command(pu).command(Cu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Tu(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 Eu={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:o(Tu),handler:async t=>{let n={limit:t.limit,rankingType:t[`ranking-type`],name:t.name,includeTopLocations:t[`include-top-locations`],date:t.date,format:t.format};if(t.dryRun){i({command:`cf radar ranking domain get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ranking/domain/${t.domain==null?`<domain>`:encodeURIComponent(String(t.domain))}`,pathParams:{domain:String(t.domain??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ranking.domain.get({domain:t.domain,...n})),{successLabel:`Loaded`})}},Du={command:`domain`,describe:`Top domain rankings based on DNS query popularity across the Cloudflare network`,builder:e=>e.command(Eu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ou(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 ku={command:`categories`,describe:`Retrieves the list of Internet services categories.`,builder:o(Ou),handler:async t=>{let n={limit:t.limit,name:t.name,date:t.date,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ranking.internetServices.categories(n)),{successLabel:`Loaded`})}};function Au(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 ju={command:`timeseries-groups`,describe:`Retrieves Internet Services rank update changes over time.`,builder:o(Au),handler:async t=>{let n={serviceCategory:t[`service-category`],limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ranking.internetServices.timeseriesGroups(n)),{successLabel:`Loaded`})}};function Mu(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 Nu={command:`top`,describe:`Retrieves top Internet services based on their rank.`,builder:o(Mu),handler:async t=>{let n={serviceCategory:t[`service-category`],limit:t.limit,name:t.name,date:t.date,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ranking.internetServices.top(n)),{successLabel:`Loaded`})}},Pu={command:`internet-services`,describe:`Top domain rankings based on DNS query popularity across the Cloudflare network`,builder:e=>e.command(ku).command(ju).command(Nu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Fu(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 Iu={command:`timeseries-groups`,describe:`Retrieves domains rank over time.`,builder:o(Fu),handler:async t=>{let n={limit:t.limit,rankingType:t[`ranking-type`],name:t.name,location:t.location,domains:t.domains,domainCategory:t[`domain-category`],dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.ranking.timeseriesGroups(n)),{successLabel:`Loaded`})}};function Lu(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 Ru={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:o(Lu),handler:async t=>{let n={limit:t.limit,name:t.name,location:t.location,domainCategory:t[`domain-category`],date:t.date,rankingType:t[`ranking-type`],format:t.format};if(t.dryRun){i({command:`cf radar ranking top`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/ranking/top`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.ranking.top(n)),{successLabel:`Loaded`})}},zu={command:`ranking`,describe:`Top domain rankings based on DNS query popularity across the Cloudflare network`,builder:e=>e.command(Iu).command(Ru).command(Du).command(Pu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Bu(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 Vu={command:`domain-categories`,describe:`Retrieves the top domain categories by the number of robots.txt files parsed.`,builder:o(Bu),handler:async t=>{let n={limit:t.limit,name:t.name,userAgentCategory:t[`user-agent-category`],date:t.date,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.robotsTxt.top.domainCategories(n)),{successLabel:`Loaded`})}};function Hu(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 Uu={command:`directive`,describe:`Retrieves the top user agents on robots.txt files.`,builder:o(Hu),handler:async t=>{let n={limit:t.limit,name:t.name,userAgentCategory:t[`user-agent-category`],date:t.date,domainCategory:t[`domain-category`],directive:t.directive,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.robotsTxt.top.userAgents.directive(n)),{successLabel:`Loaded`})}},Wu={command:`user-agents`,describe:`Robots.txt adoption and crawler directive trends across the web`,builder:e=>e.command(Uu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Gu={command:`top`,describe:`Robots.txt adoption and crawler directive trends across the web`,builder:e=>e.command(Vu).command(Wu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ku={command:`robots-txt`,describe:`Operations for robots-txt`,builder:e=>e.command(Gu).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function qu(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 Ju={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:o(qu),handler:async t=>{let n={limit:t.limit,limitPerGroup:t[`limit-per-group`],query:t.query,include:t.include,exclude:t.exclude,format:t.format};if(t.dryRun){i({command:`cf radar search global`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/search/global`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.search.global(n)),{successLabel:`Loaded`})}},Yu={command:`search`,describe:`Search Radar data across IPs, ASNs, domains, and locations`,builder:e=>e.command(Ju).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Xu(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 Zu={command:`summary`,describe:`Retrieves the distribution of connection stage by TCP connections terminated within the first 10 packets by a reset or timeout.`,builder:o(Xu),handler:async t=>{let n={name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.tcpResetsTimeouts.summary(n)),{successLabel:`Loaded`})}};function Qu(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 $u={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:o(Qu),handler:async t=>{let n={aggInterval:t[`agg-interval`],name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.tcpResetsTimeouts.timeseriesGroups(n)),{successLabel:`Loaded`})}},ed={command:`tcp-resets-timeouts`,describe:`TCP connection reset and timeout statistics indicating network health issues`,builder:e=>e.command(Zu).command($u).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function td(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 nd={command:`get <tld>`,describe:`Retrieves the requested TLD information.`,builder:o(td),handler:async t=>{let n={format:t.format};if(t.dryRun){i({command:`cf radar tlds get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/tlds/${t.tld==null?`<tld>`:encodeURIComponent(String(t.tld))}`,pathParams:{tld:String(t.tld??``)},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.tlds.get({tld:t.tld,...n})),{successLabel:`Loaded`})}};function rd(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 id={command:`list`,describe:`Retrieves a list of TLDs.`,builder:o(rd),handler:async t=>{let n={limit:t.limit,offset:t.offset,tldManager:t[`tld-manager`],tldType:t[`tld-type`],tld:t.tld,format:t.format};if(t.dryRun){i({command:`cf radar tlds list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/radar/tlds`,pathParams:{},query:n,bodyKind:`none`});return}let o=await e(t);r(await a(`Loading`,async()=>o.radar.tlds.list(n)),{successLabel:`Loaded`})}},ad={command:`tlds`,describe:`Tlds operations`,builder:e=>e.command(nd).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(`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 sd={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:o(od),handler:async t=>{let n={limit:t.limit,offset:t.offset,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],status:t.status,type:t.type,asn:t.asn,location:t.location,origin:t.origin,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.trafficAnomalies.get(n)),{successLabel:`Loaded`})}};function cd(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 ld={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:o(cd),handler:async t=>{let n={limit:t.limit,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],status:t.status,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.trafficAnomalies.locations.get(n)),{successLabel:`Loaded`})}},ud={command:`locations`,describe:`Detected traffic anomalies and unusual patterns in Internet traffic flows`,builder:e=>e.command(ld).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},dd={command:`traffic-anomalies`,describe:`Detected traffic anomalies and unusual patterns in Internet traffic flows`,builder:e=>e.command(sd).command(ud).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function fd(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 pd={command:`bots`,describe:`Retrieves the top verified bots by HTTP requests, with owner and category.`,builder:o(fd),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.verifiedBots.top.bots(n)),{successLabel:`Loaded`})}};function md(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 hd={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:o(md),handler:async t=>{let n={limit:t.limit,name:t.name,dateRange:t[`date-range`],dateStart:t[`date-start`],dateEnd:t[`date-end`],asn:t.asn,location:t.location,continent:t.continent,format:t.format};if(t.dryRun){i({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 o=await e(t);r(await a(`Loading`,async()=>o.radar.verifiedBots.top.categories(n)),{successLabel:`Loaded`})}},gd={command:`top`,describe:`Catalog of known good bots (Googlebot, Bingbot, etc.) and their traffic patterns`,builder:e=>e.command(pd).command(hd).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},_d={command:`verified-bots`,describe:`Operations for verified-bots`,builder:e=>e.command(gd).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},vd={command:`radar`,describe:`Internet-wide traffic intelligence — BGP, DNS, HTTP trends, attack data, and network quality insights`,builder:e=>e.command(te).command(W).command(Q).command(Ue).command(Rn).command(Tr).command(Vr).command(ii).command(di).command(da).command(Go).command(fs).command(_s).command(pl).command(Ol).command(Hl).command($l).command(cu).command(wu).command(zu).command(Ku).command(Yu).command(ed).command(ad).command(dd).command(_d).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{vd as default};