memory-journal-mcp 7.7.1 → 8.0.1
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.
- package/README.md +126 -56
- package/dist/chunk-6OHRCNYW.js +3231 -0
- package/dist/chunk-JFMITANR.js +5168 -0
- package/dist/{chunk-ARLYSFSI.js → chunk-UHSO65A4.js} +4242 -6092
- package/dist/{chunk-6LPTBIB6.js → chunk-V3UTFQQK.js} +318 -4330
- package/dist/cli.js +21 -3
- package/dist/index.d.ts +16 -13
- package/dist/index.js +4 -2
- package/dist/resources-IJVKDFGS.js +2 -0
- package/dist/tools-44DGXE3V.js +2 -0
- package/dist/worker-script.js +201 -20
- package/package.json +6 -4
- package/skills/README.md +62 -25
- package/skills/adversarial-performance/SKILL.md +139 -0
- package/skills/adversarial-performance/references/audit-categories.md +462 -0
- package/skills/adversarial-performance/references/copilot-performance-prompts.md +44 -0
- package/skills/adversarial-performance/references/copilot-usage.md +16 -0
- package/skills/adversarial-performance/references/feedback-loop.md +177 -0
- package/skills/adversarial-performance/references/multi-pass-performance-protocol.md +398 -0
- package/skills/adversarial-planner/SKILL.md +23 -54
- package/skills/adversarial-planner/references/copilot-integration.md +25 -40
- package/skills/adversarial-planner/references/copilot-usage.md +16 -0
- package/skills/adversarial-planner/references/multi-pass-protocol.md +4 -0
- package/skills/adversarial-security/SKILL.md +149 -0
- package/skills/adversarial-security/references/adversarial-base-protocol.md +44 -0
- package/skills/adversarial-security/references/audit-categories.md +723 -0
- package/skills/adversarial-security/references/copilot-security-prompts.md +142 -0
- package/skills/adversarial-security/references/copilot-usage.md +16 -0
- package/skills/adversarial-security/references/feedback-loop.md +206 -0
- package/skills/adversarial-security/references/journal-opt-out.md +7 -0
- package/skills/adversarial-security/references/multi-pass-security-protocol.md +403 -0
- package/skills/adversarial-skill-audit/SKILL.md +118 -0
- package/skills/adversarial-skill-audit/references/audit-categories.md +308 -0
- package/skills/adversarial-skill-audit/references/copilot-skill-prompts.md +68 -0
- package/skills/adversarial-skill-audit/references/copilot-usage.md +16 -0
- package/skills/adversarial-skill-audit/references/feedback-loop.md +155 -0
- package/skills/adversarial-skill-audit/references/multi-pass-skill-protocol.md +367 -0
- package/skills/adversarial-skill-audit/scripts/check-skills.ps1 +48 -0
- package/skills/adversarial-skill-audit/scripts/run-copilot.ps1 +52 -0
- package/skills/adversarial-workflow-audit/SKILL.md +82 -0
- package/skills/adversarial-workflow-audit/references/audit-categories.md +28 -0
- package/skills/adversarial-workflow-audit/references/copilot-usage.md +16 -0
- package/skills/adversarial-workflow-audit/scripts/check-workflows.ps1 +24 -0
- package/skills/agents-sdk/SKILL.md +220 -0
- package/skills/agents-sdk/references/callable.md +92 -0
- package/skills/agents-sdk/references/codemode.md +209 -0
- package/skills/agents-sdk/references/email.md +144 -0
- package/skills/agents-sdk/references/mcp/SKILL.md +65 -0
- package/skills/agents-sdk/references/mcp/code-mode-reference.md +245 -0
- package/skills/agents-sdk/references/mcp/oauth-reference.md +359 -0
- package/skills/agents-sdk/references/mcp/references/architecture-reference.md +208 -0
- package/skills/agents-sdk/references/mcp/references/cloudflare-quickstart.md +156 -0
- package/skills/agents-sdk/references/mcp/references/error-handling.md +343 -0
- package/skills/agents-sdk/references/mcp/references/http-security.md +164 -0
- package/skills/agents-sdk/references/mcp/references/implementation-guide.md +507 -0
- package/skills/agents-sdk/references/mcp/references/testing-reference.md +171 -0
- package/skills/agents-sdk/references/mcp.md +157 -0
- package/skills/agents-sdk/references/state-scheduling.md +164 -0
- package/skills/agents-sdk/references/streaming-chat.md +168 -0
- package/skills/agents-sdk/references/workflows.md +136 -0
- package/skills/auth-identity/SKILL.md +48 -0
- package/skills/autonomous-dev/SKILL.md +46 -23
- package/skills/autonomous-dev/references/workflow_orchestration.md +22 -0
- package/skills/aws/SKILL.md +39 -0
- package/skills/azure/SKILL.md +38 -0
- package/skills/bin/sync.js +7 -1
- package/skills/biome/SKILL.md +59 -0
- package/skills/bun/SKILL.md +8 -2
- package/skills/cloudflare/SKILL.md +37 -0
- package/skills/cloudflare/references/agents-sdk/README.md +95 -0
- package/skills/cloudflare/references/agents-sdk/api.md +195 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +178 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +173 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +215 -0
- package/skills/cloudflare/references/ai-gateway/README.md +176 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +117 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +88 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +110 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +90 -0
- package/skills/cloudflare/references/ai-search/README.md +145 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +91 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +92 -0
- package/skills/cloudflare/references/ai-search/patterns.md +87 -0
- package/skills/cloudflare/references/analytics-engine/README.md +96 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +107 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +87 -0
- package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
- package/skills/cloudflare/references/api/README.md +66 -0
- package/skills/cloudflare/references/api/api.md +205 -0
- package/skills/cloudflare/references/api/configuration.md +158 -0
- package/skills/cloudflare/references/api/gotchas.md +231 -0
- package/skills/cloudflare/references/api/patterns.md +208 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +153 -0
- package/skills/cloudflare/references/api-shield/configuration.md +210 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +132 -0
- package/skills/cloudflare/references/api-shield/patterns.md +185 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +96 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +253 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +205 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +115 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +107 -0
- package/skills/cloudflare/references/bindings/README.md +127 -0
- package/skills/cloudflare/references/bindings/api.md +214 -0
- package/skills/cloudflare/references/bindings/configuration.md +200 -0
- package/skills/cloudflare/references/bindings/gotchas.md +210 -0
- package/skills/cloudflare/references/bindings/patterns.md +205 -0
- package/skills/cloudflare/references/bot-management/README.md +95 -0
- package/skills/cloudflare/references/bot-management/api.md +175 -0
- package/skills/cloudflare/references/bot-management/configuration.md +175 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +116 -0
- package/skills/cloudflare/references/bot-management/patterns.md +181 -0
- package/skills/cloudflare/references/browser-rendering/README.md +84 -0
- package/skills/cloudflare/references/browser-rendering/api.md +108 -0
- package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
- package/skills/cloudflare/references/browser-rendering/gotchas.md +91 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +93 -0
- package/skills/cloudflare/references/c3/README.md +111 -0
- package/skills/cloudflare/references/c3/api.md +71 -0
- package/skills/cloudflare/references/c3/configuration.md +85 -0
- package/skills/cloudflare/references/c3/gotchas.md +97 -0
- package/skills/cloudflare/references/c3/patterns.md +84 -0
- package/skills/cloudflare/references/cache-reserve/README.md +150 -0
- package/skills/cloudflare/references/cache-reserve/api.md +184 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +170 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +136 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +87 -0
- package/skills/cloudflare/references/containers/api.md +197 -0
- package/skills/cloudflare/references/containers/configuration.md +191 -0
- package/skills/cloudflare/references/containers/gotchas.md +182 -0
- package/skills/cloudflare/references/containers/patterns.md +204 -0
- package/skills/cloudflare/references/cron-triggers/README.md +101 -0
- package/skills/cloudflare/references/cron-triggers/api.md +224 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +190 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +207 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +274 -0
- package/skills/cloudflare/references/d1/README.md +137 -0
- package/skills/cloudflare/references/d1/api.md +213 -0
- package/skills/cloudflare/references/d1/configuration.md +198 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +240 -0
- package/skills/cloudflare/references/ddos/README.md +42 -0
- package/skills/cloudflare/references/ddos/api.md +158 -0
- package/skills/cloudflare/references/ddos/configuration.md +94 -0
- package/skills/cloudflare/references/ddos/gotchas.md +114 -0
- package/skills/cloudflare/references/ddos/patterns.md +220 -0
- package/skills/cloudflare/references/decision-trees.md +95 -0
- package/skills/cloudflare/references/do-storage/README.md +79 -0
- package/skills/cloudflare/references/do-storage/api.md +107 -0
- package/skills/cloudflare/references/do-storage/configuration.md +114 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +153 -0
- package/skills/cloudflare/references/do-storage/patterns.md +210 -0
- package/skills/cloudflare/references/do-storage/testing.md +186 -0
- package/skills/cloudflare/references/durable-objects/README.md +194 -0
- package/skills/cloudflare/references/durable-objects/api.md +205 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +200 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +205 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +192 -0
- package/skills/cloudflare/references/email-routing/configuration.md +187 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +203 -0
- package/skills/cloudflare/references/email-routing/patterns.md +241 -0
- package/skills/cloudflare/references/email-workers/README.md +153 -0
- package/skills/cloudflare/references/email-workers/api.md +227 -0
- package/skills/cloudflare/references/email-workers/configuration.md +115 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +133 -0
- package/skills/cloudflare/references/email-workers/patterns.md +108 -0
- package/skills/cloudflare/references/graphql-api/README.md +147 -0
- package/skills/cloudflare/references/graphql-api/api.md +175 -0
- package/skills/cloudflare/references/graphql-api/configuration.md +151 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +111 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +276 -0
- package/skills/cloudflare/references/hyperdrive/README.md +84 -0
- package/skills/cloudflare/references/hyperdrive/api.md +149 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +166 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +203 -0
- package/skills/cloudflare/references/images/README.md +65 -0
- package/skills/cloudflare/references/images/api.md +101 -0
- package/skills/cloudflare/references/images/configuration.md +206 -0
- package/skills/cloudflare/references/images/gotchas.md +106 -0
- package/skills/cloudflare/references/images/patterns.md +126 -0
- package/skills/cloudflare/references/kv/README.md +90 -0
- package/skills/cloudflare/references/kv/api.md +163 -0
- package/skills/cloudflare/references/kv/configuration.md +148 -0
- package/skills/cloudflare/references/kv/gotchas.md +133 -0
- package/skills/cloudflare/references/kv/patterns.md +195 -0
- package/skills/cloudflare/references/miniflare/README.md +113 -0
- package/skills/cloudflare/references/miniflare/api.md +204 -0
- package/skills/cloudflare/references/miniflare/configuration.md +174 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +179 -0
- package/skills/cloudflare/references/miniflare/patterns.md +187 -0
- package/skills/cloudflare/references/network-interconnect/README.md +104 -0
- package/skills/cloudflare/references/network-interconnect/api.md +220 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +123 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +175 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +174 -0
- package/skills/cloudflare/references/observability/README.md +93 -0
- package/skills/cloudflare/references/observability/api.md +168 -0
- package/skills/cloudflare/references/observability/configuration.md +178 -0
- package/skills/cloudflare/references/observability/gotchas.md +125 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +92 -0
- package/skills/cloudflare/references/pages/api.md +205 -0
- package/skills/cloudflare/references/pages/configuration.md +216 -0
- package/skills/cloudflare/references/pages/gotchas.md +218 -0
- package/skills/cloudflare/references/pages/patterns.md +215 -0
- package/skills/cloudflare/references/pages-functions/README.md +104 -0
- package/skills/cloudflare/references/pages-functions/api.md +159 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +130 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +102 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +148 -0
- package/skills/cloudflare/references/pipelines/README.md +109 -0
- package/skills/cloudflare/references/pipelines/api.md +214 -0
- package/skills/cloudflare/references/pipelines/configuration.md +98 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +84 -0
- package/skills/cloudflare/references/pipelines/patterns.md +87 -0
- package/skills/cloudflare/references/product-index.md +112 -0
- package/skills/cloudflare/references/pulumi/README.md +113 -0
- package/skills/cloudflare/references/pulumi/api.md +230 -0
- package/skills/cloudflare/references/pulumi/configuration.md +213 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +205 -0
- package/skills/cloudflare/references/pulumi/patterns.md +260 -0
- package/skills/cloudflare/references/queues/README.md +99 -0
- package/skills/cloudflare/references/queues/api.md +211 -0
- package/skills/cloudflare/references/queues/configuration.md +151 -0
- package/skills/cloudflare/references/queues/gotchas.md +210 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +97 -0
- package/skills/cloudflare/references/r2/api.md +235 -0
- package/skills/cloudflare/references/r2/configuration.md +176 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +203 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +157 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +199 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +205 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +170 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +191 -0
- package/skills/cloudflare/references/r2-sql/README.md +138 -0
- package/skills/cloudflare/references/r2-sql/SKILL.md.backup +512 -0
- package/skills/cloudflare/references/r2-sql/api.md +159 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +152 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +228 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +230 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +66 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +164 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +141 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +138 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +187 -0
- package/skills/cloudflare/references/realtimekit/README.md +118 -0
- package/skills/cloudflare/references/realtimekit/api.md +234 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +226 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +206 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +240 -0
- package/skills/cloudflare/references/sandbox/README.md +104 -0
- package/skills/cloudflare/references/sandbox/api.md +200 -0
- package/skills/cloudflare/references/sandbox/configuration.md +154 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +201 -0
- package/skills/cloudflare/references/sandbox/patterns.md +195 -0
- package/skills/cloudflare/references/secrets-store/README.md +77 -0
- package/skills/cloudflare/references/secrets-store/api.md +199 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +187 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +218 -0
- package/skills/cloudflare/references/smart-placement/README.md +143 -0
- package/skills/cloudflare/references/smart-placement/api.md +192 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +202 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +180 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +190 -0
- package/skills/cloudflare/references/snippets/README.md +74 -0
- package/skills/cloudflare/references/snippets/api.md +214 -0
- package/skills/cloudflare/references/snippets/configuration.md +239 -0
- package/skills/cloudflare/references/snippets/gotchas.md +104 -0
- package/skills/cloudflare/references/snippets/patterns.md +135 -0
- package/skills/cloudflare/references/spectrum/README.md +52 -0
- package/skills/cloudflare/references/spectrum/api.md +184 -0
- package/skills/cloudflare/references/spectrum/configuration.md +203 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +155 -0
- package/skills/cloudflare/references/spectrum/patterns.md +206 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +201 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +164 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +123 -0
- package/skills/cloudflare/references/stream/api-live.md +202 -0
- package/skills/cloudflare/references/stream/api.md +206 -0
- package/skills/cloudflare/references/stream/configuration.md +151 -0
- package/skills/cloudflare/references/stream/gotchas.md +139 -0
- package/skills/cloudflare/references/stream/patterns.md +217 -0
- package/skills/cloudflare/references/tail-workers/README.md +92 -0
- package/skills/cloudflare/references/tail-workers/api.md +203 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +178 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +206 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +190 -0
- package/skills/cloudflare/references/terraform/README.md +100 -0
- package/skills/cloudflare/references/terraform/api.md +178 -0
- package/skills/cloudflare/references/terraform/configuration.md +197 -0
- package/skills/cloudflare/references/terraform/gotchas.md +150 -0
- package/skills/cloudflare/references/terraform/patterns.md +174 -0
- package/skills/cloudflare/references/tunnel/README.md +137 -0
- package/skills/cloudflare/references/tunnel/api.md +205 -0
- package/skills/cloudflare/references/tunnel/configuration.md +163 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +159 -0
- package/skills/cloudflare/references/tunnel/networking.md +174 -0
- package/skills/cloudflare/references/tunnel/patterns.md +199 -0
- package/skills/cloudflare/references/turn/README.md +86 -0
- package/skills/cloudflare/references/turn/api.md +236 -0
- package/skills/cloudflare/references/turn/configuration.md +181 -0
- package/skills/cloudflare/references/turn/gotchas.md +236 -0
- package/skills/cloudflare/references/turn/patterns.md +228 -0
- package/skills/cloudflare/references/turnstile/README.md +102 -0
- package/skills/cloudflare/references/turnstile/api.md +253 -0
- package/skills/cloudflare/references/turnstile/configuration.md +242 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +253 -0
- package/skills/cloudflare/references/turnstile/patterns.md +195 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +89 -0
- package/skills/cloudflare/references/vectorize/configuration.md +91 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +83 -0
- package/skills/cloudflare/references/vectorize/patterns.md +92 -0
- package/skills/cloudflare/references/waf/README.md +125 -0
- package/skills/cloudflare/references/waf/api.md +203 -0
- package/skills/cloudflare/references/waf/configuration.md +215 -0
- package/skills/cloudflare/references/waf/gotchas.md +208 -0
- package/skills/cloudflare/references/waf/patterns.md +236 -0
- package/skills/cloudflare/references/web-analytics/README.md +149 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +81 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +86 -0
- package/skills/cloudflare/references/web-analytics/integration.md +63 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +98 -0
- package/skills/cloudflare/references/workerd/README.md +85 -0
- package/skills/cloudflare/references/workerd/api.md +219 -0
- package/skills/cloudflare/references/workerd/configuration.md +200 -0
- package/skills/cloudflare/references/workerd/gotchas.md +151 -0
- package/skills/cloudflare/references/workerd/patterns.md +205 -0
- package/skills/cloudflare/references/workers/README.md +110 -0
- package/skills/cloudflare/references/workers/api.md +197 -0
- package/skills/cloudflare/references/workers/configuration.md +184 -0
- package/skills/cloudflare/references/workers/frameworks.md +200 -0
- package/skills/cloudflare/references/workers/gotchas.md +145 -0
- package/skills/cloudflare/references/workers/patterns.md +220 -0
- package/skills/cloudflare/references/workers-ai/README.md +206 -0
- package/skills/cloudflare/references/workers-ai/api.md +115 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +98 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +130 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +122 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +95 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +212 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +178 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +210 -0
- package/skills/cloudflare/references/workers-playground/README.md +131 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +169 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +134 -0
- package/skills/cloudflare/references/workers-vpc/README.md +130 -0
- package/skills/cloudflare/references/workers-vpc/api.md +196 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +151 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +171 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +235 -0
- package/skills/cloudflare/references/workflows/README.md +72 -0
- package/skills/cloudflare/references/workflows/api.md +237 -0
- package/skills/cloudflare/references/workflows/configuration.md +158 -0
- package/skills/cloudflare/references/workflows/gotchas.md +97 -0
- package/skills/cloudflare/references/workflows/patterns.md +245 -0
- package/skills/cloudflare/references/wrangler/README.md +143 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +198 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +212 -0
- package/skills/cloudflare/references/wrangler/patterns.md +211 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
- package/skills/cloudflare/references/zaraz/README.md +114 -0
- package/skills/cloudflare/references/zaraz/api.md +118 -0
- package/skills/cloudflare/references/zaraz/configuration.md +94 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +88 -0
- package/skills/cloudflare/references/zaraz/patterns.md +77 -0
- package/skills/docker/SKILL.md +7 -101
- package/skills/docker/references/advanced-examples.md +71 -0
- package/skills/docker/references/templates.md +34 -0
- package/skills/docs-marketer/SKILL.md +178 -0
- package/skills/docs-marketer/references/audit-categories.md +328 -0
- package/skills/docs-marketer/references/copilot-docs-prompts.md +88 -0
- package/skills/docs-marketer/references/copilot-usage.md +16 -0
- package/skills/docs-marketer/references/feedback-loop.md +155 -0
- package/skills/docs-marketer/references/multi-pass-docs-protocol.md +410 -0
- package/skills/drizzle-orm/SKILL.md +82 -0
- package/skills/durable-objects/SKILL.md +167 -0
- package/skills/durable-objects/references/advanced_features.md +29 -0
- package/skills/durable-objects/references/rules.md +300 -0
- package/skills/durable-objects/references/testing.md +261 -0
- package/skills/durable-objects/references/workers.md +336 -0
- package/skills/gcp/SKILL.md +37 -0
- package/skills/github-actions/SKILL.md +5 -58
- package/skills/github-actions/references/templates.md +65 -0
- package/skills/github-commander/SKILL.md +13 -21
- package/skills/github-commander/workflows/copilot-audit.md +12 -12
- package/skills/github-copilot-cli/SKILL.md +21 -26
- package/skills/github-repo-setup/SKILL.md +136 -0
- package/skills/github-repo-setup/references/community-standards.md +136 -0
- package/skills/github-repo-setup/references/github-automation.md +490 -0
- package/skills/github-repo-setup/references/inline-templates.md +205 -0
- package/skills/github-repo-setup/references/project-config.md +320 -0
- package/skills/gitlab/SKILL.md +7 -2
- package/skills/gitlab/package-lock.json +389 -389
- package/skills/golang/SKILL.md +8 -1
- package/skills/graphql/SKILL.md +30 -0
- package/skills/hono/SKILL.md +82 -0
- package/skills/journal-optimizer/SKILL.md +206 -0
- package/skills/journal-optimizer/references/optimizer-scripts.md +169 -0
- package/skills/llm-app-engineering/SKILL.md +18 -0
- package/skills/monorepo/SKILL.md +56 -0
- package/skills/multi-agent-orchestration/SKILL.md +14 -0
- package/skills/mysql/SKILL.md +6 -2
- package/skills/next-best-practices/SKILL.md +86 -0
- package/skills/next-best-practices/references/cache-components-examples.md +234 -0
- package/skills/next-best-practices/references/cache-components.md +210 -0
- package/skills/next-best-practices/references/upgrade-decision-tree.md +33 -0
- package/skills/next-best-practices/references/upgrade.md +43 -0
- package/skills/next-cache-components/SKILL.md +441 -0
- package/skills/next-upgrade/SKILL.md +43 -0
- package/skills/next-upgrade/references/decision-tree.md +33 -0
- package/skills/nodejs/SKILL.md +46 -0
- package/skills/opentelemetry/SKILL.md +62 -0
- package/skills/package.json +39 -4
- package/skills/playwright-standard/SKILL.md +6 -11
- package/skills/playwright-standard/references/locators.md +7 -0
- package/skills/postgres/SKILL.md +6 -1
- package/skills/python/SKILL.md +8 -70
- package/skills/python/references/advanced-patterns.md +37 -0
- package/skills/python/references/config-templates.md +48 -0
- package/skills/rag-pipelines/SKILL.md +14 -0
- package/skills/redis/SKILL.md +31 -0
- package/skills/render/SKILL.md +35 -0
- package/skills/rust/SKILL.md +15 -25
- package/skills/rust/references/borrow-checker.md +13 -0
- package/skills/rust/references/ecosystem.md +11 -0
- package/skills/sandbox-sdk/SKILL.md +186 -0
- package/skills/sandbox-sdk/references/api-quick-ref.md +113 -0
- package/skills/sandbox-sdk/references/examples.md +52 -0
- package/skills/shadcn-ui/SKILL.md +22 -57
- package/skills/skill-builder/SKILL.md +23 -424
- package/skills/skill-builder/references/tutorial.md +457 -0
- package/skills/sqlite/SKILL.md +16 -5
- package/skills/table.md +59 -0
- package/skills/tailwind-css/SKILL.md +11 -60
- package/skills/tailwind-css/references/component-patterns.md +52 -0
- package/skills/trpc/SKILL.md +56 -0
- package/skills/typescript/SKILL.md +30 -433
- package/skills/typescript/references/tutorial.md +453 -0
- package/skills/vercel-ai-sdk/SKILL.md +48 -0
- package/skills/vitest-standard/SKILL.md +5 -11
- package/skills/vitest-standard/references/assertions.md +11 -0
- package/skills/web-perf/SKILL.md +207 -0
- package/skills/workers-best-practices/SKILL.md +120 -0
- package/skills/workers-best-practices/references/anti-patterns.md +18 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +485 -0
- package/skills/wrangler/SKILL.md +43 -0
- package/skills/wrangler/references/cli-commands.md +861 -0
- package/skills/zod/SKILL.md +48 -0
- package/dist/tools-P4VGG4FH.js +0 -1
- package/skills/react-best-practices/AGENTS.md +0 -2883
- package/skills/react-best-practices/SKILL.md +0 -138
- /package/skills/{react-best-practices → next-best-practices}/README.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/metadata.json +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/_sections.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/_template.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-event-handler-refs.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-init-once.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-use-latest.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-api-routes.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-defer-await.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-dependencies.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-parallel.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-suspense-boundaries.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-barrel-imports.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-conditional.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-defer-third-party.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-dynamic-imports.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-preload.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-event-listeners.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-localstorage-schema.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-passive-event-listeners.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-swr-dedup.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-batch-dom-css.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-function-results.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-property-access.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-storage.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-combine-iterations.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-early-exit.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-hoist-regexp.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-index-maps.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-length-check-first.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-min-max-loop.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-set-map-lookups.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-tosorted-immutable.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-activity.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-animate-svg-wrapper.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-conditional-render.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-content-visibility.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hoist-jsx.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-no-flicker.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-suppress-warning.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-svg-precision.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-usetransition-loading.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-defer-reads.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-dependencies.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state-no-effect.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-functional-setstate.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-lazy-state-init.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo-with-default-value.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-move-effect-to-event.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-simple-expression-in-memo.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-transitions.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-use-ref-transient-values.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-after-nonblocking.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-auth-actions.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-lru.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-react.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-dedup-props.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-parallel-fetching.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-serialization.md +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Email Workers Patterns
|
|
2
|
+
|
|
3
|
+
## Parse Email
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
import PostalMime from 'postal-mime'
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
async email(message, env, ctx) {
|
|
10
|
+
const buffer = await new Response(message.raw).arrayBuffer()
|
|
11
|
+
const email = await PostalMime.parse(buffer)
|
|
12
|
+
console.log(email.from, email.subject, email.text, email.attachments.length)
|
|
13
|
+
await message.forward('inbox@example.com')
|
|
14
|
+
},
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Filtering
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
// Allowlist from KV
|
|
22
|
+
const allowList = (await env.ALLOWED_SENDERS.get('list', 'json')) || []
|
|
23
|
+
if (!allowList.includes(message.from)) {
|
|
24
|
+
message.setReject('Not allowed')
|
|
25
|
+
return
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Size check (avoid parsing large emails)
|
|
29
|
+
if (message.rawSize > 5_000_000) {
|
|
30
|
+
await message.forward('inbox@example.com') // Forward without parsing
|
|
31
|
+
return
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Auto-Reply with Threading
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { EmailMessage } from 'cloudflare:email'
|
|
39
|
+
import { createMimeMessage } from 'mimetext'
|
|
40
|
+
|
|
41
|
+
const msg = createMimeMessage()
|
|
42
|
+
msg.setSender({ addr: 'support@example.com' })
|
|
43
|
+
msg.setRecipient(message.from)
|
|
44
|
+
msg.setSubject(`Re: ${message.headers.get('Subject')}`)
|
|
45
|
+
msg.setHeader('In-Reply-To', message.headers.get('Message-ID') || '')
|
|
46
|
+
msg.addMessage({ contentType: 'text/plain', data: 'Thank you. We will respond.' })
|
|
47
|
+
|
|
48
|
+
await message.reply(new EmailMessage('support@example.com', message.from, msg.asRaw()))
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Rate-Limited Auto-Reply
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
const rateKey = `rate:${message.from}`
|
|
55
|
+
if (!(await env.RATE_LIMIT.get(rateKey))) {
|
|
56
|
+
// Send reply...
|
|
57
|
+
ctx.waitUntil(env.RATE_LIMIT.put(rateKey, '1', { expirationTtl: 3600 }))
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Subject-Based Routing
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
const subject = (message.headers.get('Subject') || '').toLowerCase()
|
|
65
|
+
if (subject.includes('billing')) await message.forward('billing@example.com')
|
|
66
|
+
else if (subject.includes('support')) await message.forward('support@example.com')
|
|
67
|
+
else await message.forward('general@example.com')
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Multi-Tenant Routing
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// support+tenant123@example.com → tenant123
|
|
74
|
+
const tenantId = message.to.split('@')[0].match(/\+(.+)$/)?.[1] || 'default'
|
|
75
|
+
const config = await env.TENANT_CONFIG.get(tenantId, 'json')
|
|
76
|
+
config?.forwardTo ? await message.forward(config.forwardTo) : message.setReject('Unknown')
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Archive & Extract Attachments
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
// Archive to KV
|
|
83
|
+
ctx.waitUntil(
|
|
84
|
+
env.ARCHIVE.put(
|
|
85
|
+
`email:${Date.now()}`,
|
|
86
|
+
JSON.stringify({
|
|
87
|
+
from: message.from,
|
|
88
|
+
subject: email.subject,
|
|
89
|
+
})
|
|
90
|
+
)
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
// Attachments to R2
|
|
94
|
+
for (const att of email.attachments) {
|
|
95
|
+
ctx.waitUntil(env.R2.put(`${Date.now()}-${att.filename}`, att.content))
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Webhook Integration
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
ctx.waitUntil(
|
|
103
|
+
fetch(env.WEBHOOK_URL, {
|
|
104
|
+
method: 'POST',
|
|
105
|
+
body: JSON.stringify({ from: message.from, subject: message.headers.get('Subject') }),
|
|
106
|
+
}).catch((err) => console.error(err))
|
|
107
|
+
)
|
|
108
|
+
```
|
|
@@ -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,151 @@
|
|
|
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: {
|
|
50
|
+
Authorization: `Bearer ${process.env.CF_API_TOKEN}`,
|
|
51
|
+
'Content-Type': 'application/json',
|
|
52
|
+
},
|
|
53
|
+
body: JSON.stringify({ query, variables }),
|
|
54
|
+
})
|
|
55
|
+
if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`)
|
|
56
|
+
const json = (await response.json()) as { data: T | null; errors?: { message: string }[] }
|
|
57
|
+
if (json.errors?.length) throw new Error(json.errors.map((e) => e.message).join('; '))
|
|
58
|
+
return json.data!
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Python
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
import requests, os
|
|
66
|
+
|
|
67
|
+
def query_graphql(query: str, variables: dict = None) -> dict:
|
|
68
|
+
r = requests.post("https://api.cloudflare.com/client/v4/graphql",
|
|
69
|
+
headers={"Authorization": f"Bearer {os.environ['CF_API_TOKEN']}", "Content-Type": "application/json"},
|
|
70
|
+
json={"query": query, "variables": variables or {}})
|
|
71
|
+
r.raise_for_status()
|
|
72
|
+
result = r.json()
|
|
73
|
+
if result.get("errors"):
|
|
74
|
+
raise Exception("; ".join(e["message"] for e in result["errors"]))
|
|
75
|
+
return result["data"]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### From a Cloudflare Worker
|
|
79
|
+
|
|
80
|
+
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.
|
|
81
|
+
|
|
82
|
+
## GraphQL API Explorer
|
|
83
|
+
|
|
84
|
+
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.
|
|
85
|
+
|
|
86
|
+
## Schema Introspection
|
|
87
|
+
|
|
88
|
+
```graphql
|
|
89
|
+
# List zone-scoped datasets
|
|
90
|
+
{
|
|
91
|
+
__type(name: "zone") {
|
|
92
|
+
fields {
|
|
93
|
+
name
|
|
94
|
+
description
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
# List account-scoped datasets
|
|
100
|
+
{
|
|
101
|
+
__type(name: "account") {
|
|
102
|
+
fields {
|
|
103
|
+
name
|
|
104
|
+
description
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
# Discover dimensions for a dataset
|
|
110
|
+
{
|
|
111
|
+
__type(name: "ZoneHttpRequestsAdaptiveGroupsDimensions") {
|
|
112
|
+
fields {
|
|
113
|
+
name
|
|
114
|
+
type {
|
|
115
|
+
name
|
|
116
|
+
kind
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
# Discover filter operators for a dataset
|
|
123
|
+
{
|
|
124
|
+
__type(name: "ZoneHttpRequestsAdaptiveGroupsFilter_InputObject") {
|
|
125
|
+
inputFields {
|
|
126
|
+
name
|
|
127
|
+
type {
|
|
128
|
+
name
|
|
129
|
+
kind
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Finding Your Zone and Account IDs
|
|
137
|
+
|
|
138
|
+
- **Zone ID**: Dashboard > select zone > Overview (right sidebar), or via API
|
|
139
|
+
- **Account ID**: Dashboard > Account Home URL, or via API
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
curl -s https://api.cloudflare.com/client/v4/zones -H "Authorization: Bearer $CF_API_TOKEN" | jq '.result[] | {name, id}'
|
|
143
|
+
curl -s https://api.cloudflare.com/client/v4/accounts -H "Authorization: Bearer $CF_API_TOKEN" | jq '.result[] | {name, id}'
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## See Also
|
|
147
|
+
|
|
148
|
+
- [README.md](README.md) - Overview, decision tree, dataset index
|
|
149
|
+
- [api.md](api.md) - Query structure, aggregation fields, filtering operators
|
|
150
|
+
- [patterns.md](patterns.md) - Common query patterns (time-series, top-N, per-product)
|
|
151
|
+
- [gotchas.md](gotchas.md) - Rate limits, sampling, troubleshooting
|