pi-cloudflare 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +67 -0
  3. package/bin/setup.mjs +103 -0
  4. package/dist/auth-flow.d.ts +15 -0
  5. package/dist/auth-flow.d.ts.map +1 -0
  6. package/dist/auth-flow.js +90 -0
  7. package/dist/auth-flow.js.map +1 -0
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +47 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/config.d.ts +13 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +10 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/index.d.ts +24 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +109 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/oauth.d.ts +44 -0
  21. package/dist/oauth.d.ts.map +1 -0
  22. package/dist/oauth.js +135 -0
  23. package/dist/oauth.js.map +1 -0
  24. package/dist/proxy.d.ts +29 -0
  25. package/dist/proxy.d.ts.map +1 -0
  26. package/dist/proxy.js +39 -0
  27. package/dist/proxy.js.map +1 -0
  28. package/dist/servers.d.ts +19 -0
  29. package/dist/servers.d.ts.map +1 -0
  30. package/dist/servers.js +40 -0
  31. package/dist/servers.js.map +1 -0
  32. package/dist/token-store.d.ts +23 -0
  33. package/dist/token-store.d.ts.map +1 -0
  34. package/dist/token-store.js +47 -0
  35. package/dist/token-store.js.map +1 -0
  36. package/package.json +67 -0
  37. package/skills/agents-sdk/SKILL.md +221 -0
  38. package/skills/agents-sdk/references/browse-the-web.md +63 -0
  39. package/skills/agents-sdk/references/callable.md +92 -0
  40. package/skills/agents-sdk/references/client-sdk.md +110 -0
  41. package/skills/agents-sdk/references/codemode.md +110 -0
  42. package/skills/agents-sdk/references/configuration.md +72 -0
  43. package/skills/agents-sdk/references/durable-execution.md +51 -0
  44. package/skills/agents-sdk/references/email.md +146 -0
  45. package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
  46. package/skills/agents-sdk/references/mcp.md +188 -0
  47. package/skills/agents-sdk/references/observability.md +44 -0
  48. package/skills/agents-sdk/references/queue-retries.md +79 -0
  49. package/skills/agents-sdk/references/routing.md +75 -0
  50. package/skills/agents-sdk/references/server-driven-messages.md +63 -0
  51. package/skills/agents-sdk/references/state-scheduling.md +171 -0
  52. package/skills/agents-sdk/references/streaming-chat.md +198 -0
  53. package/skills/agents-sdk/references/think.md +112 -0
  54. package/skills/agents-sdk/references/voice.md +68 -0
  55. package/skills/agents-sdk/references/webhooks-push.md +86 -0
  56. package/skills/agents-sdk/references/workflows.md +132 -0
  57. package/skills/cloudflare/SKILL.md +248 -0
  58. package/skills/cloudflare/references/agents-sdk/README.md +89 -0
  59. package/skills/cloudflare/references/agents-sdk/api.md +190 -0
  60. package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
  61. package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
  62. package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
  63. package/skills/cloudflare/references/ai-gateway/README.md +175 -0
  64. package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
  65. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
  66. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  67. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
  68. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
  69. package/skills/cloudflare/references/ai-search/README.md +138 -0
  70. package/skills/cloudflare/references/ai-search/api.md +87 -0
  71. package/skills/cloudflare/references/ai-search/configuration.md +88 -0
  72. package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
  73. package/skills/cloudflare/references/ai-search/patterns.md +85 -0
  74. package/skills/cloudflare/references/analytics-engine/README.md +94 -0
  75. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  76. package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
  77. package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
  78. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  79. package/skills/cloudflare/references/api/README.md +66 -0
  80. package/skills/cloudflare/references/api/api.md +204 -0
  81. package/skills/cloudflare/references/api/configuration.md +160 -0
  82. package/skills/cloudflare/references/api/gotchas.md +225 -0
  83. package/skills/cloudflare/references/api/patterns.md +204 -0
  84. package/skills/cloudflare/references/api-shield/README.md +44 -0
  85. package/skills/cloudflare/references/api-shield/api.md +141 -0
  86. package/skills/cloudflare/references/api-shield/configuration.md +192 -0
  87. package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
  88. package/skills/cloudflare/references/api-shield/patterns.md +180 -0
  89. package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
  90. package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
  91. package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
  92. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
  93. package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
  94. package/skills/cloudflare/references/artifacts/README.md +79 -0
  95. package/skills/cloudflare/references/artifacts/api.md +128 -0
  96. package/skills/cloudflare/references/artifacts/configuration.md +92 -0
  97. package/skills/cloudflare/references/bindings/README.md +122 -0
  98. package/skills/cloudflare/references/bindings/api.md +203 -0
  99. package/skills/cloudflare/references/bindings/configuration.md +188 -0
  100. package/skills/cloudflare/references/bindings/gotchas.md +208 -0
  101. package/skills/cloudflare/references/bindings/patterns.md +200 -0
  102. package/skills/cloudflare/references/bot-management/README.md +94 -0
  103. package/skills/cloudflare/references/bot-management/api.md +169 -0
  104. package/skills/cloudflare/references/bot-management/configuration.md +163 -0
  105. package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
  106. package/skills/cloudflare/references/bot-management/patterns.md +182 -0
  107. package/skills/cloudflare/references/browser-rendering/README.md +78 -0
  108. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  109. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  110. package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
  111. package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
  112. package/skills/cloudflare/references/c3/README.md +111 -0
  113. package/skills/cloudflare/references/c3/api.md +71 -0
  114. package/skills/cloudflare/references/c3/configuration.md +81 -0
  115. package/skills/cloudflare/references/c3/gotchas.md +92 -0
  116. package/skills/cloudflare/references/c3/patterns.md +82 -0
  117. package/skills/cloudflare/references/cache-reserve/README.md +147 -0
  118. package/skills/cloudflare/references/cache-reserve/api.md +194 -0
  119. package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
  120. package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
  121. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  122. package/skills/cloudflare/references/containers/README.md +85 -0
  123. package/skills/cloudflare/references/containers/api.md +187 -0
  124. package/skills/cloudflare/references/containers/configuration.md +188 -0
  125. package/skills/cloudflare/references/containers/gotchas.md +178 -0
  126. package/skills/cloudflare/references/containers/patterns.md +202 -0
  127. package/skills/cloudflare/references/cron-triggers/README.md +99 -0
  128. package/skills/cloudflare/references/cron-triggers/api.md +196 -0
  129. package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
  130. package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
  131. package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
  132. package/skills/cloudflare/references/d1/README.md +133 -0
  133. package/skills/cloudflare/references/d1/api.md +196 -0
  134. package/skills/cloudflare/references/d1/configuration.md +191 -0
  135. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  136. package/skills/cloudflare/references/d1/patterns.md +189 -0
  137. package/skills/cloudflare/references/ddos/README.md +41 -0
  138. package/skills/cloudflare/references/ddos/api.md +164 -0
  139. package/skills/cloudflare/references/ddos/configuration.md +93 -0
  140. package/skills/cloudflare/references/ddos/gotchas.md +107 -0
  141. package/skills/cloudflare/references/ddos/patterns.md +174 -0
  142. package/skills/cloudflare/references/do-storage/README.md +75 -0
  143. package/skills/cloudflare/references/do-storage/api.md +102 -0
  144. package/skills/cloudflare/references/do-storage/configuration.md +112 -0
  145. package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
  146. package/skills/cloudflare/references/do-storage/patterns.md +194 -0
  147. package/skills/cloudflare/references/do-storage/testing.md +183 -0
  148. package/skills/cloudflare/references/durable-objects/README.md +185 -0
  149. package/skills/cloudflare/references/durable-objects/api.md +187 -0
  150. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  151. package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
  152. package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
  153. package/skills/cloudflare/references/email-routing/README.md +89 -0
  154. package/skills/cloudflare/references/email-routing/api.md +195 -0
  155. package/skills/cloudflare/references/email-routing/configuration.md +186 -0
  156. package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
  157. package/skills/cloudflare/references/email-routing/patterns.md +229 -0
  158. package/skills/cloudflare/references/email-workers/README.md +151 -0
  159. package/skills/cloudflare/references/email-workers/api.md +237 -0
  160. package/skills/cloudflare/references/email-workers/configuration.md +112 -0
  161. package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
  162. package/skills/cloudflare/references/email-workers/patterns.md +102 -0
  163. package/skills/cloudflare/references/flagship/README.md +59 -0
  164. package/skills/cloudflare/references/flagship/api.md +390 -0
  165. package/skills/cloudflare/references/flagship/configuration.md +202 -0
  166. package/skills/cloudflare/references/flagship/gotchas.md +178 -0
  167. package/skills/cloudflare/references/flagship/patterns.md +469 -0
  168. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  169. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  170. package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
  171. package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
  172. package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
  173. package/skills/cloudflare/references/hyperdrive/README.md +82 -0
  174. package/skills/cloudflare/references/hyperdrive/api.md +143 -0
  175. package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
  176. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  177. package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
  178. package/skills/cloudflare/references/images/README.md +61 -0
  179. package/skills/cloudflare/references/images/api.md +96 -0
  180. package/skills/cloudflare/references/images/configuration.md +211 -0
  181. package/skills/cloudflare/references/images/gotchas.md +99 -0
  182. package/skills/cloudflare/references/images/patterns.md +115 -0
  183. package/skills/cloudflare/references/kv/README.md +89 -0
  184. package/skills/cloudflare/references/kv/api.md +160 -0
  185. package/skills/cloudflare/references/kv/configuration.md +144 -0
  186. package/skills/cloudflare/references/kv/gotchas.md +131 -0
  187. package/skills/cloudflare/references/kv/patterns.md +196 -0
  188. package/skills/cloudflare/references/miniflare/README.md +105 -0
  189. package/skills/cloudflare/references/miniflare/api.md +187 -0
  190. package/skills/cloudflare/references/miniflare/configuration.md +173 -0
  191. package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
  192. package/skills/cloudflare/references/miniflare/patterns.md +181 -0
  193. package/skills/cloudflare/references/network-interconnect/README.md +99 -0
  194. package/skills/cloudflare/references/network-interconnect/api.md +199 -0
  195. package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
  196. package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
  197. package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
  198. package/skills/cloudflare/references/observability/README.md +88 -0
  199. package/skills/cloudflare/references/observability/api.md +164 -0
  200. package/skills/cloudflare/references/observability/configuration.md +169 -0
  201. package/skills/cloudflare/references/observability/gotchas.md +115 -0
  202. package/skills/cloudflare/references/observability/patterns.md +105 -0
  203. package/skills/cloudflare/references/pages/README.md +88 -0
  204. package/skills/cloudflare/references/pages/api.md +204 -0
  205. package/skills/cloudflare/references/pages/configuration.md +201 -0
  206. package/skills/cloudflare/references/pages/gotchas.md +203 -0
  207. package/skills/cloudflare/references/pages/patterns.md +204 -0
  208. package/skills/cloudflare/references/pages-functions/README.md +98 -0
  209. package/skills/cloudflare/references/pages-functions/api.md +143 -0
  210. package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
  211. package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
  212. package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
  213. package/skills/cloudflare/references/pipelines/README.md +90 -0
  214. package/skills/cloudflare/references/pipelines/api.md +124 -0
  215. package/skills/cloudflare/references/pipelines/configuration.md +155 -0
  216. package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
  217. package/skills/cloudflare/references/pipelines/patterns.md +130 -0
  218. package/skills/cloudflare/references/pulumi/README.md +100 -0
  219. package/skills/cloudflare/references/pulumi/api.md +200 -0
  220. package/skills/cloudflare/references/pulumi/configuration.md +198 -0
  221. package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
  222. package/skills/cloudflare/references/pulumi/patterns.md +191 -0
  223. package/skills/cloudflare/references/queues/README.md +96 -0
  224. package/skills/cloudflare/references/queues/api.md +206 -0
  225. package/skills/cloudflare/references/queues/configuration.md +144 -0
  226. package/skills/cloudflare/references/queues/gotchas.md +206 -0
  227. package/skills/cloudflare/references/queues/patterns.md +220 -0
  228. package/skills/cloudflare/references/r2/README.md +95 -0
  229. package/skills/cloudflare/references/r2/api.md +200 -0
  230. package/skills/cloudflare/references/r2/configuration.md +165 -0
  231. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  232. package/skills/cloudflare/references/r2/patterns.md +193 -0
  233. package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
  234. package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
  235. package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
  236. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
  237. package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
  238. package/skills/cloudflare/references/r2-sql/README.md +64 -0
  239. package/skills/cloudflare/references/r2-sql/api.md +121 -0
  240. package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
  241. package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
  242. package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
  243. package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
  244. package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
  245. package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
  246. package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
  247. package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
  248. package/skills/cloudflare/references/realtimekit/README.md +113 -0
  249. package/skills/cloudflare/references/realtimekit/api.md +212 -0
  250. package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
  251. package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
  252. package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
  253. package/skills/cloudflare/references/sandbox/README.md +96 -0
  254. package/skills/cloudflare/references/sandbox/api.md +198 -0
  255. package/skills/cloudflare/references/sandbox/configuration.md +143 -0
  256. package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
  257. package/skills/cloudflare/references/sandbox/patterns.md +201 -0
  258. package/skills/cloudflare/references/secrets-store/README.md +74 -0
  259. package/skills/cloudflare/references/secrets-store/api.md +200 -0
  260. package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
  261. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  262. package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
  263. package/skills/cloudflare/references/smart-placement/README.md +138 -0
  264. package/skills/cloudflare/references/smart-placement/api.md +183 -0
  265. package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
  266. package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
  267. package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
  268. package/skills/cloudflare/references/snippets/README.md +68 -0
  269. package/skills/cloudflare/references/snippets/api.md +198 -0
  270. package/skills/cloudflare/references/snippets/configuration.md +227 -0
  271. package/skills/cloudflare/references/snippets/gotchas.md +86 -0
  272. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  273. package/skills/cloudflare/references/spectrum/README.md +52 -0
  274. package/skills/cloudflare/references/spectrum/api.md +181 -0
  275. package/skills/cloudflare/references/spectrum/configuration.md +194 -0
  276. package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
  277. package/skills/cloudflare/references/spectrum/patterns.md +196 -0
  278. package/skills/cloudflare/references/static-assets/README.md +65 -0
  279. package/skills/cloudflare/references/static-assets/api.md +199 -0
  280. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  281. package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
  282. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  283. package/skills/cloudflare/references/stream/README.md +114 -0
  284. package/skills/cloudflare/references/stream/api-live.md +195 -0
  285. package/skills/cloudflare/references/stream/api.md +199 -0
  286. package/skills/cloudflare/references/stream/configuration.md +141 -0
  287. package/skills/cloudflare/references/stream/gotchas.md +130 -0
  288. package/skills/cloudflare/references/stream/patterns.md +184 -0
  289. package/skills/cloudflare/references/tail-workers/README.md +89 -0
  290. package/skills/cloudflare/references/tail-workers/api.md +200 -0
  291. package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
  292. package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
  293. package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
  294. package/skills/cloudflare/references/terraform/README.md +102 -0
  295. package/skills/cloudflare/references/terraform/api.md +178 -0
  296. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  297. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  298. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  299. package/skills/cloudflare/references/tunnel/README.md +129 -0
  300. package/skills/cloudflare/references/tunnel/api.md +193 -0
  301. package/skills/cloudflare/references/tunnel/configuration.md +157 -0
  302. package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
  303. package/skills/cloudflare/references/tunnel/networking.md +168 -0
  304. package/skills/cloudflare/references/tunnel/patterns.md +192 -0
  305. package/skills/cloudflare/references/turn/README.md +82 -0
  306. package/skills/cloudflare/references/turn/api.md +239 -0
  307. package/skills/cloudflare/references/turn/configuration.md +179 -0
  308. package/skills/cloudflare/references/turn/gotchas.md +231 -0
  309. package/skills/cloudflare/references/turn/patterns.md +213 -0
  310. package/skills/cloudflare/references/turnstile/README.md +99 -0
  311. package/skills/cloudflare/references/turnstile/api.md +240 -0
  312. package/skills/cloudflare/references/turnstile/configuration.md +222 -0
  313. package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
  314. package/skills/cloudflare/references/turnstile/patterns.md +193 -0
  315. package/skills/cloudflare/references/vectorize/README.md +133 -0
  316. package/skills/cloudflare/references/vectorize/api.md +88 -0
  317. package/skills/cloudflare/references/vectorize/configuration.md +88 -0
  318. package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
  319. package/skills/cloudflare/references/vectorize/patterns.md +90 -0
  320. package/skills/cloudflare/references/waf/README.md +113 -0
  321. package/skills/cloudflare/references/waf/api.md +202 -0
  322. package/skills/cloudflare/references/waf/configuration.md +203 -0
  323. package/skills/cloudflare/references/waf/gotchas.md +204 -0
  324. package/skills/cloudflare/references/waf/patterns.md +197 -0
  325. package/skills/cloudflare/references/web-analytics/README.md +141 -0
  326. package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
  327. package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
  328. package/skills/cloudflare/references/web-analytics/integration.md +60 -0
  329. package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
  330. package/skills/cloudflare/references/workerd/README.md +78 -0
  331. package/skills/cloudflare/references/workerd/api.md +185 -0
  332. package/skills/cloudflare/references/workerd/configuration.md +183 -0
  333. package/skills/cloudflare/references/workerd/gotchas.md +139 -0
  334. package/skills/cloudflare/references/workerd/patterns.md +192 -0
  335. package/skills/cloudflare/references/workers/README.md +108 -0
  336. package/skills/cloudflare/references/workers/api.md +195 -0
  337. package/skills/cloudflare/references/workers/configuration.md +185 -0
  338. package/skills/cloudflare/references/workers/frameworks.md +197 -0
  339. package/skills/cloudflare/references/workers/gotchas.md +137 -0
  340. package/skills/cloudflare/references/workers/patterns.md +198 -0
  341. package/skills/cloudflare/references/workers-ai/README.md +197 -0
  342. package/skills/cloudflare/references/workers-ai/api.md +112 -0
  343. package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
  344. package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
  345. package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
  346. package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
  347. package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
  348. package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
  349. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  350. package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
  351. package/skills/cloudflare/references/workers-playground/README.md +127 -0
  352. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  353. package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
  354. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  355. package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
  356. package/skills/cloudflare/references/workers-vpc/README.md +127 -0
  357. package/skills/cloudflare/references/workers-vpc/api.md +202 -0
  358. package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
  359. package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
  360. package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
  361. package/skills/cloudflare/references/workflows/README.md +77 -0
  362. package/skills/cloudflare/references/workflows/api.md +218 -0
  363. package/skills/cloudflare/references/workflows/configuration.md +152 -0
  364. package/skills/cloudflare/references/workflows/gotchas.md +90 -0
  365. package/skills/cloudflare/references/workflows/patterns.md +175 -0
  366. package/skills/cloudflare/references/wrangler/README.md +135 -0
  367. package/skills/cloudflare/references/wrangler/api.md +188 -0
  368. package/skills/cloudflare/references/wrangler/configuration.md +197 -0
  369. package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
  370. package/skills/cloudflare/references/wrangler/patterns.md +209 -0
  371. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
  372. package/skills/cloudflare/references/zaraz/README.md +111 -0
  373. package/skills/cloudflare/references/zaraz/api.md +112 -0
  374. package/skills/cloudflare/references/zaraz/configuration.md +90 -0
  375. package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
  376. package/skills/cloudflare/references/zaraz/patterns.md +74 -0
  377. package/skills/cloudflare-email-service/SKILL.md +103 -0
  378. package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
  379. package/skills/cloudflare-email-service/references/deliverability.md +285 -0
  380. package/skills/cloudflare-email-service/references/rest-api.md +184 -0
  381. package/skills/cloudflare-email-service/references/routing.md +199 -0
  382. package/skills/cloudflare-email-service/references/sending.md +252 -0
  383. package/skills/cloudflare-one/SKILL.md +176 -0
  384. package/skills/cloudflare-one-migrations/SKILL.md +110 -0
  385. package/skills/durable-objects/SKILL.md +186 -0
  386. package/skills/durable-objects/references/rules.md +295 -0
  387. package/skills/durable-objects/references/testing.md +264 -0
  388. package/skills/durable-objects/references/workers.md +346 -0
  389. package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
  390. package/skills/sandbox-next/SKILL.md +91 -0
  391. package/skills/sandbox-next/references/api-quick-ref.md +94 -0
  392. package/skills/sandbox-next/references/examples.md +15 -0
  393. package/skills/sandbox-stable/SKILL.md +110 -0
  394. package/skills/turnstile-spin/README.md +51 -0
  395. package/skills/turnstile-spin/SKILL.md +330 -0
  396. package/skills/turnstile-spin/references/astro.md +199 -0
  397. package/skills/turnstile-spin/references/hugo.md +114 -0
  398. package/skills/turnstile-spin/references/nextjs-app.md +261 -0
  399. package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
  400. package/skills/turnstile-spin/references/sveltekit.md +191 -0
  401. package/skills/turnstile-spin/references/vanilla-html.md +157 -0
  402. package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
  403. package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
  404. package/skills/turnstile-spin/scripts/validate.sh +137 -0
  405. package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
  406. package/skills/turnstile-spin/tests/validation.md +62 -0
  407. package/skills/workers-best-practices/SKILL.md +127 -0
  408. package/skills/workers-best-practices/references/review.md +174 -0
  409. package/skills/workers-best-practices/references/rules.md +467 -0
  410. package/skills/wrangler/SKILL.md +922 -0
@@ -0,0 +1,147 @@
1
+ # Cloudflare GraphQL Analytics API
2
+
3
+ Query analytics data across all Cloudflare products via a single GraphQL endpoint. Covers HTTP requests, Workers metrics, DNS, Firewall events, Network Analytics, and 70+ other datasets.
4
+
5
+ ## Overview
6
+
7
+ - **Single endpoint** for all analytics: `https://api.cloudflare.com/client/v4/graphql`
8
+ - **1,400+ schema types** spanning every Cloudflare product
9
+ - **Two scopes**: zone-level (per-domain) and account-level (cross-domain)
10
+ - **Adaptive sampling** on high-traffic datasets with confidence intervals
11
+ - **No mutations** - read-only analytics (the Mutation type is a stub)
12
+ - **Cost-based rate limiting** - default 300 queries per 5 minutes per user (max 320, varies by query cost)
13
+
14
+ ## Quick Decision Tree
15
+
16
+ ```
17
+ Need analytics data from Cloudflare?
18
+ ├─ HTTP traffic (requests, bandwidth, cache) → httpRequestsAdaptiveGroups (zone or account)
19
+ ├─ Workers performance (CPU, wall time, errors) → workersInvocationsAdaptive (account)
20
+ ├─ Firewall/WAF events → firewallEventsAdaptive / firewallEventsAdaptiveGroups (zone or account)
21
+ ├─ DNS query analytics → dnsAnalyticsAdaptive / dnsAnalyticsAdaptiveGroups (zone or account)
22
+ ├─ Network layer (DDoS, Magic Transit) → *NetworkAnalyticsAdaptiveGroups (account)
23
+ ├─ Storage (R2, KV, D1, DO) → r2OperationsAdaptiveGroups / kvOperationsAdaptiveGroups / etc. (account)
24
+ ├─ AI (Workers AI, AI Gateway) → aiInferenceAdaptive / aiGatewayRequestsAdaptiveGroups (account)
25
+ ├─ Load Balancing → loadBalancingRequestsAdaptiveGroups (zone)
26
+ ├─ Custom high-cardinality metrics → Workers Analytics Engine (see ../analytics-engine/)
27
+ └─ Need raw logs, not aggregates → Logpush (see Cloudflare docs)
28
+ ```
29
+
30
+ ## Core Concepts
31
+
32
+ | Concept | Description |
33
+ |---------|-------------|
34
+ | **Endpoint** | `POST https://api.cloudflare.com/client/v4/graphql` |
35
+ | **Explorer** | [graphql.cloudflare.com](https://graphql.cloudflare.com/) - interactive query builder |
36
+ | **Viewer** | Root query object: `viewer { zones(...) { ... } }` or `viewer { accounts(...) { ... } }` |
37
+ | **Dataset (Node)** | A queryable table under a zone or account (e.g., `httpRequestsAdaptiveGroups`) |
38
+ | **Dimensions** | Fields to group by (time buckets, country, status code, script name, etc.) |
39
+ | **Metrics** | Aggregation fields: `count`, `sum { ... }`, `avg { ... }`, `quantiles { ... }`, `ratio { ... }` |
40
+ | **Filter** | Input object constraining results by time range, dimensions, etc. |
41
+ | **Limit** | Maximum rows returned per dataset node (required, max varies by dataset) |
42
+ | **OrderBy** | Enum-based sorting: `[field_ASC]` or `[field_DESC]` |
43
+ | **Adaptive Sampling** | Nodes with `Adaptive` in the name use ABR sampling; results are statistically representative |
44
+
45
+ ## Query Structure
46
+
47
+ Every query follows this pattern:
48
+
49
+ ```graphql
50
+ {
51
+ viewer {
52
+ # Zone-scoped
53
+ zones(filter: { zoneTag: "ZONE_ID" }) {
54
+ datasetName(
55
+ filter: { datetime_gt: "...", datetime_lt: "..." }
56
+ limit: 1000
57
+ orderBy: [datetimeFiveMinutes_DESC]
58
+ ) {
59
+ count
60
+ dimensions { ... }
61
+ sum { ... }
62
+ }
63
+ }
64
+ # Account-scoped
65
+ accounts(filter: { accountTag: "ACCOUNT_ID" }) {
66
+ datasetName(filter: { ... }, limit: 100) {
67
+ count
68
+ dimensions { ... }
69
+ sum { ... }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ ```
75
+
76
+ ## Dataset Naming Convention
77
+
78
+ Dataset names follow a consistent pattern visible in the schema:
79
+
80
+ | Pattern | Meaning | Example |
81
+ |---------|---------|---------|
82
+ | `*Adaptive` | Raw rows with adaptive sampling; some (e.g., `workersInvocationsAdaptive`) also support aggregation fields (`sum`, `quantiles`, `avg`) | `httpRequestsAdaptive`, `workersInvocationsAdaptive` |
83
+ | `*AdaptiveGroups` | Aggregated data with adaptive sampling | `httpRequestsAdaptiveGroups` |
84
+ | `*1hGroups` | Hourly rollups (pre-aggregated) | `httpRequests1hGroups` |
85
+ | `*1dGroups` | Daily rollups (pre-aggregated) | `httpRequests1dGroups` |
86
+ | `*1mGroups` | Minutely rollups | `httpRequests1mGroups` |
87
+ | `Zone*` prefix | Zone-scoped dataset | `ZoneHttpRequestsAdaptiveGroups` |
88
+ | `Account*` prefix | Account-scoped dataset | `AccountWorkersInvocationsAdaptive` |
89
+
90
+ **Prefer `*AdaptiveGroups` nodes** for most use cases - they support flexible time grouping via dimension fields (`datetimeFiveMinutes`, `datetimeHour`, etc.) and are the most commonly used.
91
+
92
+ ## Key Datasets by Product
93
+
94
+ ### Zone-Scoped (per-domain)
95
+
96
+ | Dataset | Description |
97
+ |---------|-------------|
98
+ | `httpRequestsAdaptiveGroups` | HTTP traffic: requests, bytes, cache status, bot scores, WAF scores |
99
+ | `httpRequests1hGroups` / `1dGroups` / `1mGroups` | Pre-aggregated HTTP rollups (hourly/daily/minutely) |
100
+ | `firewallEventsAdaptiveGroups` | WAF, rate limiting, bot management, firewall rule events |
101
+ | `dnsAnalyticsAdaptiveGroups` | DNS query volumes, response codes, query types |
102
+ | `loadBalancingRequestsAdaptiveGroups` | Load Balancer origin request metrics |
103
+ | `pageShieldReportsAdaptiveGroups` | Page Shield CSP reports |
104
+
105
+ ### Account-Scoped (cross-domain)
106
+
107
+ | Dataset | Description |
108
+ |---------|-------------|
109
+ | `workersInvocationsAdaptive` | Workers: requests, errors, CPU time, wall time, subrequests |
110
+ | `durableObjectsInvocationsAdaptiveGroups` | DO invocations |
111
+ | `durableObjectsStorageGroups` / `durableObjectsPeriodicGroups` | DO storage and periodic metrics |
112
+ | `d1AnalyticsAdaptiveGroups` / `d1QueriesAdaptiveGroups` | D1 database analytics |
113
+ | `r2OperationsAdaptiveGroups` / `r2StorageAdaptiveGroups` | R2 operations and storage |
114
+ | `kvOperationsAdaptiveGroups` / `kvStorageAdaptiveGroups` | KV operations and storage |
115
+ | `aiInferenceAdaptiveGroups` | Workers AI inference metrics |
116
+ | `aiGatewayRequestsAdaptiveGroups` | AI Gateway request analytics |
117
+ | `pagesFunctionsInvocationsAdaptiveGroups` | Pages Functions metrics |
118
+ | `magicTransitNetworkAnalyticsAdaptiveGroups` | Magic Transit packet/byte analytics |
119
+ | `spectrumNetworkAnalyticsAdaptiveGroups` | Spectrum TCP/UDP analytics |
120
+ | `gatewayL7RequestsAdaptiveGroups` | Zero Trust Gateway HTTP metrics |
121
+ | `gatewayResolverQueriesAdaptiveGroups` | Zero Trust Gateway DNS metrics |
122
+
123
+ ## Reading Order
124
+
125
+ | Task | Start Here | Then Read |
126
+ |------|------------|-----------|
127
+ | **First query** | [configuration.md](configuration.md) (auth) -> this README (structure) | [api.md](api.md) |
128
+ | **Build a dashboard** | [patterns.md](patterns.md) (time-series, top-N) | [api.md](api.md) (aggregation fields) |
129
+ | **Debug query issues** | [gotchas.md](gotchas.md) | [api.md](api.md) (filtering) |
130
+ | **Understand sampling** | [gotchas.md](gotchas.md) (sampling section) | [api.md](api.md) (confidence intervals) |
131
+ | **Product-specific metrics** | [patterns.md](patterns.md) (per-product examples) | [api.md](api.md) (dataset reference) |
132
+
133
+ ## In This Reference
134
+
135
+ - **[api.md](api.md)** - Query structure, aggregation fields (sum/avg/quantiles/count), filtering operators, dimensions, dataset details
136
+ - **[configuration.md](configuration.md)** - Authentication, API tokens, client setup (curl, JS, Python), introspection
137
+ - **[patterns.md](patterns.md)** - Common queries: time-series, top-N, Workers metrics, HTTP analytics, firewall events, multi-zone
138
+ - **[gotchas.md](gotchas.md)** - Rate limits, sampling caveats, query cost, common errors, plan-based limits
139
+
140
+ ## See Also
141
+
142
+ - [GraphQL Analytics API Docs](https://developers.cloudflare.com/analytics/graphql-api/)
143
+ - [GraphQL API Explorer](https://graphql.cloudflare.com/)
144
+ - [Observability Reference](../observability/) - Workers Logs, Tail Workers, console logging
145
+ - [Analytics Engine Reference](../analytics-engine/) - Custom high-cardinality analytics via Workers
146
+ - [Web Analytics Reference](../web-analytics/) - Client-side (RUM) analytics
147
+ - [API Reference](../api/) - REST API, SDKs, authentication basics
@@ -0,0 +1,175 @@
1
+ # GraphQL Analytics API Reference
2
+
3
+ ## Query Root
4
+
5
+ The schema has a single entry point: `Query.viewer`. Mutations are not supported.
6
+
7
+ ```graphql
8
+ {
9
+ cost # uint64 -- query cost (returned in response)
10
+ viewer {
11
+ budget # uint64 -- remaining budget
12
+ zones(filter: { zoneTag: "..." }) { ... }
13
+ accounts(filter: { accountTag: "..." }) { ... }
14
+ }
15
+ }
16
+ ```
17
+
18
+ ## Aggregation Fields
19
+
20
+ Aggregated dataset nodes (`*Groups`) return these field categories. Not every node has all — use introspection to check.
21
+
22
+ ### count
23
+
24
+ Total events in the group. Available on `*Groups` nodes but **not** on raw `*Adaptive` nodes (e.g., `workersInvocationsAdaptive` — use `sum { requests }` instead).
25
+
26
+ ### sum
27
+
28
+ Cumulative metrics. Fields vary by dataset:
29
+
30
+ ```graphql
31
+ # HTTP requests
32
+ sum { edgeResponseBytes edgeRequestBytes visits edgeTimeToFirstByteMs originResponseDurationMs }
33
+
34
+ # Workers invocations
35
+ sum { requests errors subrequests cpuTimeUs wallTime duration responseBodySize clientDisconnects requestDuration }
36
+ ```
37
+
38
+ ### quantiles
39
+
40
+ Percentile distributions (on datasets like `workersInvocationsAdaptive`). Available percentiles: P25, P50, P75, P90, P95, P99, P999 for `cpuTime`, `wallTime`, `requestDuration`, `duration`, `responseBodySize`.
41
+
42
+ ```graphql
43
+ quantiles { cpuTimeP50 cpuTimeP99 wallTimeP50 wallTimeP99 }
44
+ ```
45
+
46
+ ### ratio, avg, uniq, confidence
47
+
48
+ ```graphql
49
+ ratio { status4xx status5xx } # float64 (0 to 1) -- HTTP datasets only
50
+ avg { sampleInterval } # useful for understanding sampling resolution
51
+ uniq { uniques } # unique IP count -- rollup datasets (*1hGroups, *1dGroups) only
52
+ confidence(level: 0.95) { # Adaptive datasets only; works on count and sum fields
53
+ count { estimate lower upper sampleSize }
54
+ }
55
+ ```
56
+
57
+ ## Dimensions
58
+
59
+ Dimensions are fields you can group by via the `dimensions` sub-selection.
60
+
61
+ ### Time Dimensions
62
+
63
+ | Dimension | Granularity |
64
+ |-----------|------------|
65
+ | `date` | Day |
66
+ | `datetime` | Exact timestamp |
67
+ | `datetimeMinute` | 1 minute |
68
+ | `datetimeFiveMinutes` | 5 minutes |
69
+ | `datetimeFifteenMinutes` | 15 minutes |
70
+ | `datetimeHour` | 1 hour |
71
+
72
+ Workers datasets also support `datetimeSixHours`.
73
+
74
+ ### HTTP Request Dimensions (httpRequestsAdaptiveGroups)
75
+
76
+ 83 dimensions available. Key ones:
77
+
78
+ | Dimension | Description |
79
+ |-----------|-------------|
80
+ | `clientCountryName` | Country of origin |
81
+ | `clientRequestHTTPHost` | Requested hostname |
82
+ | `clientRequestHTTPMethodName` | HTTP method |
83
+ | `clientRequestPath` | URI path |
84
+ | `edgeResponseStatus` | Edge HTTP status code |
85
+ | `cacheStatus` | Cache status (hit, miss, dynamic, etc.) |
86
+ | `coloCode` | Cloudflare datacenter IATA code |
87
+ | `clientIP` / `clientAsn` | Client IP address / ASN |
88
+ | `botScore` / `botManagementDecision` | Bot management score (0-99) / verdict |
89
+ | `wafAttackScore` / `securityAction` | WAF score / firewall action taken |
90
+ | `ja3Hash` / `ja4` | TLS fingerprints |
91
+ | `sampleInterval` | ABR sample interval |
92
+
93
+ ### Workers Dimensions (workersInvocationsAdaptive)
94
+
95
+ `scriptName`, `scriptTag`, `scriptVersion`, `environmentName`, `status`, `usageModel`, `coloCode`, `dispatchNamespaceName`, `isDispatcher`
96
+
97
+ ### Firewall Dimensions (firewallEventsAdaptive)
98
+
99
+ `action`, `source`, `ruleId`, `clientCountryName`, `clientIP`, `clientAsn`, `userAgent`
100
+
101
+ ## Filtering
102
+
103
+ ### Scope Filters
104
+
105
+ ```graphql
106
+ zones(filter: { zoneTag: "ZONE_ID" }) # up to 10 zones
107
+ zones(filter: { zoneTag_in: ["Z1", "Z2"] })
108
+ accounts(filter: { accountTag: "ACCOUNT_ID" }) # exactly 1 account
109
+ ```
110
+
111
+ ### Dataset Filters
112
+
113
+ **Always include a time range filter.** Multiple filters at the same level are implicitly AND-ed.
114
+
115
+ ```graphql
116
+ httpRequestsAdaptiveGroups(
117
+ filter: { datetime_gt: "2025-01-01T00:00:00Z", datetime_lt: "2025-01-02T00:00:00Z", clientCountryName: "US" }
118
+ limit: 1000
119
+ )
120
+ ```
121
+
122
+ ### Filter Operators
123
+
124
+ | Operator | Meaning | Example |
125
+ |----------|---------|---------|
126
+ | (none) | equals | `clientCountryName: "US"` |
127
+ | `_gt` / `_lt` | greater / less than | `datetime_gt: "..."` |
128
+ | `_geq` / `_leq` | greater/less or equal | `datetime_geq: "..."` |
129
+ | `_neq` | not equal | `cacheStatus_neq: "hit"` |
130
+ | `_in` / `_notin` | in / not in list | `clientCountryName_in: ["US", "GB"]` |
131
+ | `_like` / `_notlike` | SQL LIKE with `%` | `clientRequestPath_like: "/api/%"` |
132
+ | `_has` / `_hasall` / `_hasany` | array contains | `botDetectionIds_has: "abc"` |
133
+
134
+ > `_notin` and `_notlike` are in the schema but not in official docs. Confirmed via introspection.
135
+
136
+ ### Boolean Operators (AND / OR)
137
+
138
+ ```graphql
139
+ # Explicit AND
140
+ filter: { AND: [{ datetime_gt: "..." }, { datetime_lt: "..." }, { clientCountryName: "US" }] }
141
+
142
+ # Explicit OR
143
+ filter: { datetime_gt: "...", OR: [{ edgeResponseStatus: 403 }, { edgeResponseStatus: 429 }] }
144
+ ```
145
+
146
+ ## Pagination & Sorting
147
+
148
+ No cursor-based pagination. Use `limit`, `orderBy`, and filter-based offsets:
149
+
150
+ ```graphql
151
+ # First page
152
+ httpRequestsAdaptiveGroups(filter: { datetime_gt: "..." }, limit: 100, orderBy: [datetime_ASC])
153
+
154
+ # Next page: filter by last seen value from previous page
155
+ httpRequestsAdaptiveGroups(filter: { datetime_gt: "2025-01-01T01:35:00Z" }, limit: 100, orderBy: [datetime_ASC])
156
+ ```
157
+
158
+ Sort with `orderBy: [field_ASC]` or `[field_DESC]`. Multiple sort fields supported.
159
+
160
+ ## Settings Node
161
+
162
+ Query per-node limits and availability:
163
+
164
+ ```graphql
165
+ viewer { zones(filter: { zoneTag: "..." }) { settings {
166
+ httpRequestsAdaptiveGroups { enabled maxDuration maxNumberOfFields maxPageSize notOlderThan }
167
+ } } }
168
+ ```
169
+
170
+ ## See Also
171
+
172
+ - [README.md](README.md) - Overview, decision tree, dataset index
173
+ - [configuration.md](configuration.md) - Authentication, client setup, introspection queries
174
+ - [patterns.md](patterns.md) - Common query patterns (time-series, top-N, per-product)
175
+ - [gotchas.md](gotchas.md) - Rate limits, sampling, troubleshooting
@@ -0,0 +1,118 @@
1
+ # GraphQL Analytics API Configuration
2
+
3
+ ## Authentication
4
+
5
+ ### API Token (Recommended)
6
+
7
+ | Permission | Scope | Use Case |
8
+ |------------|-------|----------|
9
+ | **Account Analytics: Read** | Account-wide | Workers, R2, KV, D1, DO, AI, Network Analytics |
10
+ | **Zone Analytics: Read** | Per-zone | HTTP requests, Firewall, DNS, Load Balancing |
11
+ | **All zones - Analytics: Read** | All zones | Multi-zone HTTP/Firewall/DNS queries |
12
+
13
+ Create tokens at: [dash.cloudflare.com > Account API Tokens](https://dash.cloudflare.com/?to=/:account/api-tokens)
14
+
15
+ ```bash
16
+ # Verify token
17
+ curl -s https://api.cloudflare.com/client/v4/graphql \
18
+ -H "Authorization: Bearer $CF_API_TOKEN" \
19
+ -H "Content-Type: application/json" \
20
+ --data '{"query":"{ viewer { zones(filter: {zoneTag: \"ZONE_ID\"}) { httpRequestsAdaptiveGroups(limit: 1, filter: {datetime_gt: \"2025-01-01T00:00:00Z\"}) { count } } } }"}'
21
+ ```
22
+
23
+ ### API Key + Email (Legacy)
24
+
25
+ Not recommended. Use `X-Auth-Email` + `X-Auth-Key` headers instead of `Authorization: Bearer`.
26
+
27
+ ## Client Setup
28
+
29
+ ### curl
30
+
31
+ ```bash
32
+ curl -s https://api.cloudflare.com/client/v4/graphql \
33
+ -H "Authorization: Bearer $CF_API_TOKEN" \
34
+ -H "Content-Type: application/json" \
35
+ --data '{
36
+ "query": "query($zoneTag: string!, $start: Time!, $end: Time!) { viewer { zones(filter: {zoneTag: $zoneTag}) { httpRequestsAdaptiveGroups(filter: {datetime_gt: $start, datetime_lt: $end}, limit: 10, orderBy: [datetimeFiveMinutes_DESC]) { count dimensions { datetimeFiveMinutes } } } } }",
37
+ "variables": { "zoneTag": "ZONE_ID", "start": "2025-01-01T00:00:00Z", "end": "2025-01-02T00:00:00Z" }
38
+ }' | jq .
39
+ ```
40
+
41
+ ### TypeScript / JavaScript
42
+
43
+ ```typescript
44
+ const GRAPHQL_ENDPOINT = "https://api.cloudflare.com/client/v4/graphql";
45
+
46
+ async function queryGraphQL<T>(query: string, variables: Record<string, unknown> = {}): Promise<T> {
47
+ const response = await fetch(GRAPHQL_ENDPOINT, {
48
+ method: "POST",
49
+ headers: { Authorization: `Bearer ${process.env.CF_API_TOKEN}`, "Content-Type": "application/json" },
50
+ body: JSON.stringify({ query, variables }),
51
+ });
52
+ if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`);
53
+ const json = await response.json() as { data: T | null; errors?: { message: string }[] };
54
+ if (json.errors?.length) throw new Error(json.errors.map((e) => e.message).join("; "));
55
+ return json.data!;
56
+ }
57
+ ```
58
+
59
+ ### Python
60
+
61
+ ```python
62
+ import requests, os
63
+
64
+ def query_graphql(query: str, variables: dict = None) -> dict:
65
+ r = requests.post("https://api.cloudflare.com/client/v4/graphql",
66
+ headers={"Authorization": f"Bearer {os.environ['CF_API_TOKEN']}", "Content-Type": "application/json"},
67
+ json={"query": query, "variables": variables or {}})
68
+ r.raise_for_status()
69
+ result = r.json()
70
+ if result.get("errors"):
71
+ raise Exception("; ".join(e["message"] for e in result["errors"]))
72
+ return result["data"]
73
+ ```
74
+
75
+ ### From a Cloudflare Worker
76
+
77
+ Store the API token as a secret (`CF_API_TOKEN`). Use standard `fetch` to POST to `https://api.cloudflare.com/client/v4/graphql` with the same JSON body format as above. Always check `response.errors` — GraphQL returns 200 even on query failures.
78
+
79
+ ## GraphQL API Explorer
80
+
81
+ Interactive explorer at [graphql.cloudflare.com](https://graphql.cloudflare.com/) — provides schema docs, autocomplete, variable panel, and shareable queries. Authenticates via your Cloudflare dashboard session.
82
+
83
+ ## Schema Introspection
84
+
85
+ ```graphql
86
+ # List zone-scoped datasets
87
+ { __type(name: "zone") { fields { name description } } }
88
+
89
+ # List account-scoped datasets
90
+ { __type(name: "account") { fields { name description } } }
91
+
92
+ # Discover dimensions for a dataset
93
+ { __type(name: "ZoneHttpRequestsAdaptiveGroupsDimensions") {
94
+ fields { name type { name kind } }
95
+ } }
96
+
97
+ # Discover filter operators for a dataset
98
+ { __type(name: "ZoneHttpRequestsAdaptiveGroupsFilter_InputObject") {
99
+ inputFields { name type { name kind } }
100
+ } }
101
+ ```
102
+
103
+ ## Finding Your Zone and Account IDs
104
+
105
+ - **Zone ID**: Dashboard > select zone > Overview (right sidebar), or via API
106
+ - **Account ID**: Dashboard > Account Home URL, or via API
107
+
108
+ ```bash
109
+ curl -s https://api.cloudflare.com/client/v4/zones -H "Authorization: Bearer $CF_API_TOKEN" | jq '.result[] | {name, id}'
110
+ curl -s https://api.cloudflare.com/client/v4/accounts -H "Authorization: Bearer $CF_API_TOKEN" | jq '.result[] | {name, id}'
111
+ ```
112
+
113
+ ## See Also
114
+
115
+ - [README.md](README.md) - Overview, decision tree, dataset index
116
+ - [api.md](api.md) - Query structure, aggregation fields, filtering operators
117
+ - [patterns.md](patterns.md) - Common query patterns (time-series, top-N, per-product)
118
+ - [gotchas.md](gotchas.md) - Rate limits, sampling, troubleshooting
@@ -0,0 +1,110 @@
1
+ # GraphQL Analytics API Gotchas & Troubleshooting
2
+
3
+ ## Rate Limits
4
+
5
+ | Limit | Value |
6
+ |-------|-------|
7
+ | GraphQL queries per user | **Default 300 per 5 minutes** (max 320, at least 1/sec) |
8
+ | General API rate limit | 1200 requests per 5 minutes (shared across all API calls) |
9
+ | Zone scope per query | Up to **10 zones** |
10
+ | Account scope per query | Exactly **1 account** |
11
+
12
+ The GraphQL rate limit is separate from the general API limit. Exceeding either results in `HTTP 429` and blocks all API calls for 5 minutes. Enterprise customers can contact support to raise limits.
13
+
14
+ ### "429 Too Many Requests"
15
+
16
+ **Cause:** Exceeded rate limit.
17
+
18
+ **Solution:** Batch multiple datasets into single queries, cache results, increase intervals between queries. Use `{ viewer { budget } }` to monitor remaining budget.
19
+
20
+ ## Sampling & Data Accuracy
21
+
22
+ ### Adaptive Bit Rate (ABR) Sampling
23
+
24
+ Datasets with `Adaptive` in the name use adaptive sampling:
25
+ - Results are **statistically representative**, not exact
26
+ - Same query may return **slightly different numbers** each run
27
+ - Higher traffic = higher sampling rate = more accurate
28
+ - `sampleInterval` dimension shows the ratio (1 = no sampling, 10 = ~1-in-10 sampled)
29
+
30
+ For high-confidence numbers, use `confidence(level: 0.95)` to get estimate bounds. For exact counts, use rollup nodes (`httpRequests1hGroups`, `httpRequests1dGroups`) which are pre-aggregated without sampling.
31
+
32
+ ### Rollup vs. Adaptive
33
+
34
+ | Feature | Rollup (`*1hGroups`, `*1dGroups`) | Adaptive (`*AdaptiveGroups`) |
35
+ |---------|-----------------------------------|-----------------------------|
36
+ | Sampling | No (pre-aggregated) | Yes (ABR) |
37
+ | Flexibility | Fixed time buckets | Any granularity |
38
+ | Dimensions | Fewer | Many more |
39
+ | Accuracy | Exact | Statistical estimate |
40
+
41
+ ## Common Errors
42
+
43
+ ### "Access denied" / "authentication error"
44
+
45
+ **Cause:** Token lacks required permission or wrong scope.
46
+
47
+ **Solution:** Account-scoped queries need **Account Analytics: Read**. Zone-scoped queries need **Zone Analytics: Read**. Verify: `curl -s https://api.cloudflare.com/client/v4/user/tokens/verify -H "Authorization: Bearer $TOKEN"`
48
+
49
+ ### "field not found" / "Cannot query field"
50
+
51
+ **Cause:** Wrong dataset name, nonexistent field, or wrong scope (zone vs. account).
52
+
53
+ **Solution:** Names are case-sensitive camelCase (`httpRequestsAdaptiveGroups`). Zone datasets go under `zones(...)`, account datasets under `accounts(...)`. Use introspection to verify.
54
+
55
+ ### "filter is required" / empty results
56
+
57
+ **Cause:** Missing required time range filter or incorrect zone/account tag.
58
+
59
+ **Solution:** Always include `datetime_gt` / `datetime_lt` (or `_geq` / `_leq`).
60
+
61
+ ### "limit is required" / "limit exceeds maximum"
62
+
63
+ **Cause:** Missing `limit` or exceeding node's max page size.
64
+
65
+ **Solution:** Always specify `limit`. Max varies by dataset (typically 10,000 for groups, 100 for raw events). Check via settings query.
66
+
67
+ ### "query is too complex" / "query exceeds budget"
68
+
69
+ **Cause:** Too many fields, datasets, or too broad a time range.
70
+
71
+ **Solution:** Reduce time range, request fewer dimensions/metrics, break into smaller queries. Monitor `cost` and `budget` in responses.
72
+
73
+ ### 200 Response with Errors
74
+
75
+ GraphQL returns HTTP 200 even on failures. **Always check `response.errors`:**
76
+
77
+ ```json
78
+ { "data": null, "errors": [{ "message": "filter is required for httpRequestsAdaptiveGroups" }] }
79
+ ```
80
+
81
+ ## Plan-Based Availability
82
+
83
+ Not all datasets are available on all plans. Higher plans get more datasets, longer retention (`notOlderThan`), wider time ranges (`maxDuration`), more fields, and larger page sizes.
84
+
85
+ ### "node is not available" / "node is disabled"
86
+
87
+ **Cause:** Dataset not on your plan, or product not enabled.
88
+
89
+ **Solution:** Check `settings { <nodeName> { enabled } }`. Some datasets require specific subscriptions (e.g., Network Analytics requires Magic Transit/Spectrum).
90
+
91
+ ## DateTime & Timezone Handling
92
+
93
+ - All times are **UTC only** (ISO 8601: `"2025-01-15T10:30:00Z"`)
94
+ - `Date` type: `"2025-01-15"` (used in `date_geq`/`date_leq` for storage datasets)
95
+ - `Time` type: `"2025-01-15T10:30:00Z"` (used in `datetime_gt`/`datetime_lt`)
96
+ - Filters are start-inclusive: events that start within the window are included
97
+
98
+ ## Performance Tips
99
+
100
+ - **Narrow time ranges** are faster and cheaper
101
+ - **Select only needed dimensions** — each additional dimension increases cost
102
+ - **Use rollup nodes** (`*1dGroups`) for simple daily totals without dimension breakdowns
103
+ - **Batch datasets** into one query instead of separate HTTP requests
104
+
105
+ ## See Also
106
+
107
+ - [README.md](README.md) - Overview, decision tree, dataset index
108
+ - [api.md](api.md) - Query structure, aggregation fields, filtering operators
109
+ - [configuration.md](configuration.md) - Authentication, client setup, introspection queries
110
+ - [patterns.md](patterns.md) - Common query patterns (time-series, top-N, per-product)