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,225 @@
1
+ # Gotchas & Troubleshooting
2
+
3
+ ## Rate Limits & 429 Errors
4
+
5
+ **Actual Limits:**
6
+ - **1200 requests / 5 minutes** per user/token (global)
7
+ - **200 requests / second** per IP address
8
+ - **GraphQL: 320 / 5 minutes** (cost-based)
9
+
10
+ **SDK Behavior:**
11
+ - Auto-retry with exponential backoff (default 2 retries, Go: 10)
12
+ - Respects `Retry-After` header
13
+ - Throws `RateLimitError` after exhausting retries
14
+
15
+ **Solution:**
16
+
17
+ ```typescript
18
+ // Increase retries for rate-limit-heavy workflows
19
+ const client = new Cloudflare({ maxRetries: 5 });
20
+
21
+ // Add application-level throttling
22
+ import pLimit from 'p-limit';
23
+ const limit = pLimit(10); // Max 10 concurrent requests
24
+ ```
25
+
26
+ ## SDK-Specific Issues
27
+
28
+ ### Go: Required Field Wrapper
29
+
30
+ **Problem:** Go SDK requires `cloudflare.F()` wrapper for optional fields.
31
+
32
+ ```go
33
+ // ❌ WRONG - Won't compile or send field
34
+ client.Zones.New(ctx, cloudflare.ZoneNewParams{
35
+ Name: "example.com",
36
+ })
37
+
38
+ // ✅ CORRECT
39
+ client.Zones.New(ctx, cloudflare.ZoneNewParams{
40
+ Name: cloudflare.F("example.com"),
41
+ Account: cloudflare.F(cloudflare.ZoneNewParamsAccount{
42
+ ID: cloudflare.F("account-id"),
43
+ }),
44
+ })
45
+ ```
46
+
47
+ **Why:** Distinguishes between zero value, null, and omitted fields.
48
+
49
+ ### Python: Async vs Sync Clients
50
+
51
+ **Problem:** Using sync client in async context or vice versa.
52
+
53
+ ```python
54
+ # ❌ WRONG - Can't await sync client
55
+ from cloudflare import Cloudflare
56
+ client = Cloudflare()
57
+ await client.zones.list() # TypeError
58
+
59
+ # ✅ CORRECT - Use AsyncCloudflare
60
+ from cloudflare import AsyncCloudflare
61
+ client = AsyncCloudflare()
62
+ await client.zones.list()
63
+ ```
64
+
65
+ ## Token Permission Errors (403)
66
+
67
+ **Problem:** API returns 403 Forbidden despite valid token.
68
+
69
+ **Cause:** Token lacks required permissions (scope).
70
+
71
+ **Scopes Required:**
72
+
73
+ | Operation | Required Scope |
74
+ |-----------|----------------|
75
+ | List zones | Zone:Read (zone-level or account-level) |
76
+ | Create zone | Zone:Edit (account-level) |
77
+ | Edit DNS | DNS:Edit (zone-level) |
78
+ | Deploy Worker | Workers Script:Edit (account-level) |
79
+ | Read KV | Workers KV Storage:Read |
80
+ | Write KV | Workers KV Storage:Edit |
81
+
82
+ **Solution:** Re-create token with correct permissions in Dashboard → My Profile → API Tokens.
83
+
84
+ ## Pagination Truncation
85
+
86
+ **Problem:** Only getting first 20 results (default page size).
87
+
88
+ **Solution:** Use auto-pagination iterators.
89
+
90
+ ```typescript
91
+ // ❌ WRONG - Only first page (20 items)
92
+ const page = await client.zones.list();
93
+
94
+ // ✅ CORRECT - All results
95
+ const zones = [];
96
+ for await (const zone of client.zones.list()) {
97
+ zones.push(zone);
98
+ }
99
+ ```
100
+
101
+ ## Workers Subrequests
102
+
103
+ **Problem:** Rate limit hit faster than expected in Workers.
104
+
105
+ **Cause:** Workers subrequests count as separate API calls.
106
+
107
+ **Solution:** Use bindings instead of REST API in Workers (see ../bindings/).
108
+
109
+ ```typescript
110
+ // ❌ WRONG - REST API in Workers (counts against rate limit)
111
+ const client = new Cloudflare({ apiToken: env.CLOUDFLARE_API_TOKEN });
112
+ const zones = await client.zones.list();
113
+
114
+ // ✅ CORRECT - Use bindings (no rate limit)
115
+ // Access via env.MY_BINDING
116
+ ```
117
+
118
+ ## Authentication Errors (401)
119
+
120
+ **Problem:** "Authentication failed" or "Invalid token"
121
+
122
+ **Causes:**
123
+ - Token expired
124
+ - Token deleted/revoked
125
+ - Token not set in environment
126
+ - Wrong token format
127
+
128
+ **Solution:**
129
+
130
+ ```typescript
131
+ // Verify token is set
132
+ if (!process.env.CLOUDFLARE_API_TOKEN) {
133
+ throw new Error('CLOUDFLARE_API_TOKEN not set');
134
+ }
135
+
136
+ // Test token
137
+ const user = await client.user.tokens.verify();
138
+ console.log('Token valid:', user.status);
139
+ ```
140
+
141
+ ## Timeout Errors
142
+
143
+ **Problem:** Request times out (default 60s).
144
+
145
+ **Cause:** Large operations (bulk DNS, zone transfers).
146
+
147
+ **Solution:** Increase timeout or split operations.
148
+
149
+ ```typescript
150
+ // Increase timeout
151
+ const client = new Cloudflare({
152
+ timeout: 300000, // 5 minutes
153
+ });
154
+
155
+ // Or split operations
156
+ const batchSize = 100;
157
+ for (let i = 0; i < records.length; i += batchSize) {
158
+ const batch = records.slice(i, i + batchSize);
159
+ await processBatch(batch);
160
+ }
161
+ ```
162
+
163
+ ## Zone Not Found (404)
164
+
165
+ **Problem:** Zone ID valid but returns 404.
166
+
167
+ **Causes:**
168
+ - Zone not in account associated with token
169
+ - Zone deleted
170
+ - Wrong zone ID format
171
+
172
+ **Solution:**
173
+
174
+ ```typescript
175
+ // List all zones to find correct ID
176
+ for await (const zone of client.zones.list()) {
177
+ console.log(zone.id, zone.name);
178
+ }
179
+ ```
180
+
181
+ ## Limits Reference
182
+
183
+ | Resource/Limit | Value | Notes |
184
+ |----------------|-------|-------|
185
+ | API rate limit | 1200/5min | Per user/token |
186
+ | IP rate limit | 200/sec | Per IP |
187
+ | GraphQL rate limit | 320/5min | Cost-based |
188
+ | Parallel requests (recommended) | < 10 | Avoid overwhelming API |
189
+ | Default page size | 20 | Use auto-pagination |
190
+ | Max page size | 50 | Some endpoints |
191
+
192
+ ## Best Practices
193
+
194
+ **Security:**
195
+ - Never commit tokens
196
+ - Use minimal permissions
197
+ - Rotate tokens regularly
198
+ - Set token expiration
199
+
200
+ **Performance:**
201
+ - Batch operations
202
+ - Use pagination wisely
203
+ - Cache responses
204
+ - Handle rate limits
205
+
206
+ **Code Organization:**
207
+
208
+ ```typescript
209
+ // Create reusable client instance
210
+ export const cfClient = new Cloudflare({
211
+ apiToken: process.env.CLOUDFLARE_API_TOKEN,
212
+ maxRetries: 5,
213
+ });
214
+
215
+ // Wrap common operations
216
+ export async function getZoneDetails(zoneId: string) {
217
+ return await cfClient.zones.get({ zone_id: zoneId });
218
+ }
219
+ ```
220
+
221
+ ## See Also
222
+
223
+ - [api.md](./api.md) - Error types, authentication
224
+ - [configuration.md](./configuration.md) - Timeout/retry configuration
225
+ - [patterns.md](./patterns.md) - Error handling patterns
@@ -0,0 +1,204 @@
1
+ # Common Patterns
2
+
3
+ ## List All with Auto-Pagination
4
+
5
+ **Problem:** API returns paginated results. Default page size is 20.
6
+
7
+ **Solution:** Use SDK auto-pagination to iterate all results.
8
+
9
+ ```typescript
10
+ // TypeScript
11
+ for await (const zone of client.zones.list()) {
12
+ console.log(zone.name);
13
+ }
14
+ ```
15
+
16
+ ```python
17
+ # Python
18
+ for zone in client.zones.list():
19
+ print(zone.name)
20
+ ```
21
+
22
+ ```go
23
+ // Go
24
+ iter := client.Zones.ListAutoPaging(ctx, cloudflare.ZoneListParams{})
25
+ for iter.Next() {
26
+ fmt.Println(iter.Current().Name)
27
+ }
28
+ ```
29
+
30
+ ## Error Handling with Retry
31
+
32
+ **Problem:** Rate limits (429) and transient errors need retry.
33
+
34
+ **Solution:** SDKs auto-retry with exponential backoff. Customize as needed.
35
+
36
+ ```typescript
37
+ // Increase retries for rate-limit-heavy operations
38
+ const client = new Cloudflare({ maxRetries: 5 });
39
+
40
+ try {
41
+ const zone = await client.zones.create({ /* ... */ });
42
+ } catch (err) {
43
+ if (err instanceof Cloudflare.RateLimitError) {
44
+ // Already retried 5 times with backoff
45
+ const retryAfter = err.headers['retry-after'];
46
+ console.log(`Rate limited. Retry after ${retryAfter}s`);
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## Batch Parallel Operations
52
+
53
+ **Problem:** Need to create multiple resources quickly.
54
+
55
+ **Solution:** Use `Promise.all()` for parallel requests (respect rate limits).
56
+
57
+ ```typescript
58
+ // Create multiple DNS records in parallel
59
+ const records = ['www', 'api', 'cdn'].map(subdomain =>
60
+ client.dns.records.create({
61
+ zone_id: 'zone-id',
62
+ type: 'A',
63
+ name: `${subdomain}.example.com`,
64
+ content: '192.0.2.1',
65
+ })
66
+ );
67
+ await Promise.all(records);
68
+ ```
69
+
70
+ **Controlled concurrency** (avoid rate limits):
71
+
72
+ ```typescript
73
+ import pLimit from 'p-limit';
74
+ const limit = pLimit(10); // Max 10 concurrent
75
+
76
+ const subdomains = ['www', 'api', 'cdn', /* many more */];
77
+ const records = subdomains.map(subdomain =>
78
+ limit(() => client.dns.records.create({
79
+ zone_id: 'zone-id',
80
+ type: 'A',
81
+ name: `${subdomain}.example.com`,
82
+ content: '192.0.2.1',
83
+ }))
84
+ );
85
+ await Promise.all(records);
86
+ ```
87
+
88
+ ## Zone CRUD Workflow
89
+
90
+ ```typescript
91
+ // Create
92
+ const zone = await client.zones.create({
93
+ account: { id: 'account-id' },
94
+ name: 'example.com',
95
+ type: 'full',
96
+ });
97
+
98
+ // Read
99
+ const fetched = await client.zones.get({ zone_id: zone.id });
100
+
101
+ // Update
102
+ await client.zones.edit(zone.id, { paused: false });
103
+
104
+ // Delete
105
+ await client.zones.delete(zone.id);
106
+ ```
107
+
108
+ ## DNS Bulk Update
109
+
110
+ ```typescript
111
+ // Fetch all A records
112
+ const records = [];
113
+ for await (const record of client.dns.records.list({
114
+ zone_id: 'zone-id',
115
+ type: 'A',
116
+ })) {
117
+ records.push(record);
118
+ }
119
+
120
+ // Update all to new IP
121
+ await Promise.all(records.map(record =>
122
+ client.dns.records.update({
123
+ zone_id: 'zone-id',
124
+ dns_record_id: record.id,
125
+ type: 'A',
126
+ name: record.name,
127
+ content: '203.0.113.1', // New IP
128
+ proxied: record.proxied,
129
+ ttl: record.ttl,
130
+ })
131
+ ));
132
+ ```
133
+
134
+ ## Filter and Collect Results
135
+
136
+ ```typescript
137
+ // Find all proxied A records
138
+ const proxiedRecords = [];
139
+ for await (const record of client.dns.records.list({
140
+ zone_id: 'zone-id',
141
+ type: 'A',
142
+ })) {
143
+ if (record.proxied) {
144
+ proxiedRecords.push(record);
145
+ }
146
+ }
147
+ ```
148
+
149
+ ## Error Recovery Pattern
150
+
151
+ ```typescript
152
+ async function createZoneWithRetry(name: string, maxAttempts = 3) {
153
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
154
+ try {
155
+ return await client.zones.create({
156
+ account: { id: 'account-id' },
157
+ name,
158
+ type: 'full',
159
+ });
160
+ } catch (err) {
161
+ if (err instanceof Cloudflare.RateLimitError && attempt < maxAttempts) {
162
+ const retryAfter = parseInt(err.headers['retry-after'] || '5');
163
+ console.log(`Rate limited, waiting ${retryAfter}s (retry ${attempt}/${maxAttempts})`);
164
+ await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
165
+ } else {
166
+ throw err;
167
+ }
168
+ }
169
+ }
170
+ }
171
+ ```
172
+
173
+ ## Conditional Update Pattern
174
+
175
+ ```typescript
176
+ // Only update if zone is active
177
+ const zone = await client.zones.get({ zone_id: 'zone-id' });
178
+ if (zone.status === 'active') {
179
+ await client.zones.edit(zone.id, { paused: false });
180
+ }
181
+ ```
182
+
183
+ ## Batch with Error Handling
184
+
185
+ ```typescript
186
+ // Process multiple zones, continue on errors
187
+ const results = await Promise.allSettled(
188
+ zoneIds.map(id => client.zones.get({ zone_id: id }))
189
+ );
190
+
191
+ results.forEach((result, i) => {
192
+ if (result.status === 'fulfilled') {
193
+ console.log(`Zone ${i}: ${result.value.name}`);
194
+ } else {
195
+ console.error(`Zone ${i} failed:`, result.reason.message);
196
+ }
197
+ });
198
+ ```
199
+
200
+ ## See Also
201
+
202
+ - [api.md](./api.md) - SDK client initialization, basic operations
203
+ - [gotchas.md](./gotchas.md) - Rate limits, common errors
204
+ - [configuration.md](./configuration.md) - SDK configuration options
@@ -0,0 +1,44 @@
1
+ # Cloudflare API Shield Reference
2
+
3
+ Expert guidance for API Shield - comprehensive API security suite for discovery, protection, and monitoring.
4
+
5
+ ## Reading Order
6
+
7
+ | Task | Files to Read |
8
+ |------|---------------|
9
+ | Initial setup | README → configuration.md |
10
+ | Implement JWT validation | configuration.md → api.md |
11
+ | Add schema validation | configuration.md → patterns.md |
12
+ | Detect API attacks | patterns.md → api.md |
13
+ | Debug issues | gotchas.md |
14
+
15
+ ## Feature Selection
16
+
17
+ What protection do you need?
18
+
19
+ ```
20
+ ├─ Validate request/response structure → Schema Validation 2.0 (configuration.md)
21
+ ├─ Verify auth tokens → JWT Validation (configuration.md)
22
+ ├─ Client certificates → mTLS (configuration.md)
23
+ ├─ Detect BOLA attacks → BOLA Detection (patterns.md)
24
+ ├─ Track auth coverage → Auth Posture (patterns.md)
25
+ ├─ Stop volumetric abuse → Abuse Detection (patterns.md)
26
+ └─ Discover shadow APIs → API Discovery (api.md)
27
+ ```
28
+
29
+ ## In This Reference
30
+
31
+ - **[configuration.md](configuration.md)** - Setup, session identifiers, rules, token/mTLS configs
32
+ - **[api.md](api.md)** - Endpoint management, discovery, validation APIs, GraphQL operations
33
+ - **[patterns.md](patterns.md)** - Common patterns, progressive rollout, OWASP mappings, workflows
34
+ - **[gotchas.md](gotchas.md)** - Troubleshooting, false positives, performance, best practices
35
+
36
+ ## Quick Start
37
+
38
+ API Shield: Enterprise-grade API security (Discovery, Schema Validation 2.0, JWT, mTLS, BOLA Detection, Auth Posture). Available as Enterprise add-on with preview access.
39
+
40
+ ## See Also
41
+
42
+ - [API Shield Docs](https://developers.cloudflare.com/api-shield/)
43
+ - [API Reference](https://developers.cloudflare.com/api/resources/api_gateway/)
44
+ - [OWASP API Security Top 10](https://owasp.org/www-project-api-security/)
@@ -0,0 +1,141 @@
1
+ # API Reference
2
+
3
+ Base: `/zones/{zone_id}/api_gateway`
4
+
5
+ ## Endpoints
6
+
7
+ ```bash
8
+ GET /operations # List
9
+ GET /operations/{op_id} # Get single
10
+ POST /operations/item # Create: {endpoint,host,method}
11
+ POST /operations # Bulk: {operations:[{endpoint,host,method}]}
12
+ DELETE /operations/{op_id} # Delete
13
+ DELETE /operations # Bulk delete: {operation_ids:[...]}
14
+ ```
15
+
16
+ ## Discovery
17
+
18
+ ```bash
19
+ GET /discovery/operations # List discovered
20
+ PATCH /discovery/operations/{op_id} # Update: {state:"saved"|"ignored"}
21
+ PATCH /discovery/operations # Bulk: {operation_ids:{id:{state}}}
22
+ GET /discovery # OpenAPI export
23
+ ```
24
+
25
+ ## Config
26
+
27
+ ```bash
28
+ GET /configuration # Get session ID config
29
+ PUT /configuration # Update: {auth_id_characteristics:[{name,type:"header"|"cookie"}]}
30
+ ```
31
+
32
+ ## Token Validation
33
+
34
+ ```bash
35
+ GET /token_validation # List
36
+ POST /token_validation # Create: {name,location:{header:"..."},jwks:"..."}
37
+ POST /jwt_validation_rules # Rule: {name,hostname,token_validation_id,action:"block"}
38
+ ```
39
+
40
+ ## Workers Integration
41
+
42
+ ### Access JWT Claims
43
+ ```js
44
+ export default {
45
+ async fetch(req, env) {
46
+ // Access validated JWT payload
47
+ const jwt = req.cf?.jwt?.payload?.[env.JWT_CONFIG_ID]?.[0];
48
+ if (jwt) {
49
+ const userId = jwt.sub;
50
+ const role = jwt.role;
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ ### Access mTLS Info
57
+ ```js
58
+ export default {
59
+ async fetch(req, env) {
60
+ const tls = req.cf?.tlsClientAuth;
61
+ if (tls?.certVerified === 'SUCCESS') {
62
+ const fingerprint = tls.certFingerprintSHA256;
63
+ // Authenticated client
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ ### Dynamic JWKS Update
70
+ ```js
71
+ export default {
72
+ async scheduled(event, env) {
73
+ const jwks = await (await fetch('https://auth.example.com/.well-known/jwks.json')).json();
74
+ await fetch(`https://api.cloudflare.com/client/v4/zones/${env.ZONE_ID}/api_gateway/token_validation/${env.CONFIG_ID}`, {
75
+ method: 'PATCH',
76
+ headers: {'Authorization': `Bearer ${env.CF_API_TOKEN}`, 'Content-Type': 'application/json'},
77
+ body: JSON.stringify({jwks: JSON.stringify(jwks)})
78
+ });
79
+ }
80
+ }
81
+ ```
82
+
83
+ ## Firewall Fields
84
+
85
+ ### Core Fields
86
+ ```js
87
+ cf.api_gateway.auth_id_present // Session ID present
88
+ cf.api_gateway.request_violates_schema // Schema violation
89
+ cf.api_gateway.fallthrough_triggered // No endpoint match
90
+ cf.tls_client_auth.cert_verified // mTLS cert valid
91
+ cf.tls_client_auth.cert_fingerprint_sha256
92
+ ```
93
+
94
+ ### JWT Validation (2026)
95
+ ```js
96
+ // Modern validation syntax
97
+ is_jwt_valid(http.request.jwt.payload["{config_id}"][0])
98
+
99
+ // Legacy (still supported)
100
+ cf.api_gateway.jwt_claims_valid
101
+
102
+ // Extract claims
103
+ lookup_json_string(http.request.jwt.payload["{config_id}"][0], "claim_name")
104
+ ```
105
+
106
+ ### Risk Labels (2026)
107
+ ```js
108
+ // BOLA detection
109
+ cf.api_gateway.cf-risk-bola-enumeration // Sequential resource access detected
110
+ cf.api_gateway.cf-risk-bola-pollution // Parameter pollution detected
111
+
112
+ // Authentication posture
113
+ cf.api_gateway.cf-risk-missing-auth // Endpoint lacks authentication
114
+ cf.api_gateway.cf-risk-mixed-auth // Inconsistent auth patterns
115
+ ```
116
+
117
+ ## BOLA Detection
118
+
119
+ ```bash
120
+ GET /user_schemas/{schema_id}/bola # Get BOLA config
121
+ PATCH /user_schemas/{schema_id}/bola # Update: {enabled:true}
122
+ ```
123
+
124
+ ## Auth Posture
125
+
126
+ ```bash
127
+ GET /discovery/authentication_posture # List unprotected endpoints
128
+ ```
129
+
130
+ ## GraphQL Protection
131
+
132
+ ```bash
133
+ GET /settings/graphql_protection # Get limits
134
+ PUT /settings/graphql_protection # Set: {max_depth,max_size}
135
+ ```
136
+
137
+ ## See Also
138
+
139
+ - [configuration.md](configuration.md) - Setup guides for all features
140
+ - [patterns.md](patterns.md) - Firewall rules and common patterns
141
+ - [API Gateway API Docs](https://developers.cloudflare.com/api/resources/api_gateway/)