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.
- package/LICENSE +674 -0
- package/README.md +67 -0
- package/bin/setup.mjs +103 -0
- package/dist/auth-flow.d.ts +15 -0
- package/dist/auth-flow.d.ts.map +1 -0
- package/dist/auth-flow.js +90 -0
- package/dist/auth-flow.js.map +1 -0
- package/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +47 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth.d.ts +44 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +135 -0
- package/dist/oauth.js.map +1 -0
- package/dist/proxy.d.ts +29 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +39 -0
- package/dist/proxy.js.map +1 -0
- package/dist/servers.d.ts +19 -0
- package/dist/servers.d.ts.map +1 -0
- package/dist/servers.js +40 -0
- package/dist/servers.js.map +1 -0
- package/dist/token-store.d.ts +23 -0
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +47 -0
- package/dist/token-store.js.map +1 -0
- package/package.json +67 -0
- package/skills/agents-sdk/SKILL.md +221 -0
- package/skills/agents-sdk/references/browse-the-web.md +63 -0
- package/skills/agents-sdk/references/callable.md +92 -0
- package/skills/agents-sdk/references/client-sdk.md +110 -0
- package/skills/agents-sdk/references/codemode.md +110 -0
- package/skills/agents-sdk/references/configuration.md +72 -0
- package/skills/agents-sdk/references/durable-execution.md +51 -0
- package/skills/agents-sdk/references/email.md +146 -0
- package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
- package/skills/agents-sdk/references/mcp.md +188 -0
- package/skills/agents-sdk/references/observability.md +44 -0
- package/skills/agents-sdk/references/queue-retries.md +79 -0
- package/skills/agents-sdk/references/routing.md +75 -0
- package/skills/agents-sdk/references/server-driven-messages.md +63 -0
- package/skills/agents-sdk/references/state-scheduling.md +171 -0
- package/skills/agents-sdk/references/streaming-chat.md +198 -0
- package/skills/agents-sdk/references/think.md +112 -0
- package/skills/agents-sdk/references/voice.md +68 -0
- package/skills/agents-sdk/references/webhooks-push.md +86 -0
- package/skills/agents-sdk/references/workflows.md +132 -0
- package/skills/cloudflare/SKILL.md +248 -0
- package/skills/cloudflare/references/agents-sdk/README.md +89 -0
- package/skills/cloudflare/references/agents-sdk/api.md +190 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
- package/skills/cloudflare/references/ai-gateway/README.md +175 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
- package/skills/cloudflare/references/ai-search/README.md +138 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +88 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
- package/skills/cloudflare/references/ai-search/patterns.md +85 -0
- package/skills/cloudflare/references/analytics-engine/README.md +94 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -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 +204 -0
- package/skills/cloudflare/references/api/configuration.md +160 -0
- package/skills/cloudflare/references/api/gotchas.md +225 -0
- package/skills/cloudflare/references/api/patterns.md +204 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +141 -0
- package/skills/cloudflare/references/api-shield/configuration.md +192 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
- package/skills/cloudflare/references/api-shield/patterns.md +180 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
- package/skills/cloudflare/references/artifacts/README.md +79 -0
- package/skills/cloudflare/references/artifacts/api.md +128 -0
- package/skills/cloudflare/references/artifacts/configuration.md +92 -0
- package/skills/cloudflare/references/bindings/README.md +122 -0
- package/skills/cloudflare/references/bindings/api.md +203 -0
- package/skills/cloudflare/references/bindings/configuration.md +188 -0
- package/skills/cloudflare/references/bindings/gotchas.md +208 -0
- package/skills/cloudflare/references/bindings/patterns.md +200 -0
- package/skills/cloudflare/references/bot-management/README.md +94 -0
- package/skills/cloudflare/references/bot-management/api.md +169 -0
- package/skills/cloudflare/references/bot-management/configuration.md +163 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
- package/skills/cloudflare/references/bot-management/patterns.md +182 -0
- package/skills/cloudflare/references/browser-rendering/README.md +78 -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 +88 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +91 -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 +81 -0
- package/skills/cloudflare/references/c3/gotchas.md +92 -0
- package/skills/cloudflare/references/c3/patterns.md +82 -0
- package/skills/cloudflare/references/cache-reserve/README.md +147 -0
- package/skills/cloudflare/references/cache-reserve/api.md +194 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +85 -0
- package/skills/cloudflare/references/containers/api.md +187 -0
- package/skills/cloudflare/references/containers/configuration.md +188 -0
- package/skills/cloudflare/references/containers/gotchas.md +178 -0
- package/skills/cloudflare/references/containers/patterns.md +202 -0
- package/skills/cloudflare/references/cron-triggers/README.md +99 -0
- package/skills/cloudflare/references/cron-triggers/api.md +196 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
- package/skills/cloudflare/references/d1/README.md +133 -0
- package/skills/cloudflare/references/d1/api.md +196 -0
- package/skills/cloudflare/references/d1/configuration.md +191 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +189 -0
- package/skills/cloudflare/references/ddos/README.md +41 -0
- package/skills/cloudflare/references/ddos/api.md +164 -0
- package/skills/cloudflare/references/ddos/configuration.md +93 -0
- package/skills/cloudflare/references/ddos/gotchas.md +107 -0
- package/skills/cloudflare/references/ddos/patterns.md +174 -0
- package/skills/cloudflare/references/do-storage/README.md +75 -0
- package/skills/cloudflare/references/do-storage/api.md +102 -0
- package/skills/cloudflare/references/do-storage/configuration.md +112 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
- package/skills/cloudflare/references/do-storage/patterns.md +194 -0
- package/skills/cloudflare/references/do-storage/testing.md +183 -0
- package/skills/cloudflare/references/durable-objects/README.md +185 -0
- package/skills/cloudflare/references/durable-objects/api.md +187 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +195 -0
- package/skills/cloudflare/references/email-routing/configuration.md +186 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
- package/skills/cloudflare/references/email-routing/patterns.md +229 -0
- package/skills/cloudflare/references/email-workers/README.md +151 -0
- package/skills/cloudflare/references/email-workers/api.md +237 -0
- package/skills/cloudflare/references/email-workers/configuration.md +112 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
- package/skills/cloudflare/references/email-workers/patterns.md +102 -0
- package/skills/cloudflare/references/flagship/README.md +59 -0
- package/skills/cloudflare/references/flagship/api.md +390 -0
- package/skills/cloudflare/references/flagship/configuration.md +202 -0
- package/skills/cloudflare/references/flagship/gotchas.md +178 -0
- package/skills/cloudflare/references/flagship/patterns.md +469 -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 +118 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
- package/skills/cloudflare/references/hyperdrive/README.md +82 -0
- package/skills/cloudflare/references/hyperdrive/api.md +143 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
- package/skills/cloudflare/references/images/README.md +61 -0
- package/skills/cloudflare/references/images/api.md +96 -0
- package/skills/cloudflare/references/images/configuration.md +211 -0
- package/skills/cloudflare/references/images/gotchas.md +99 -0
- package/skills/cloudflare/references/images/patterns.md +115 -0
- package/skills/cloudflare/references/kv/README.md +89 -0
- package/skills/cloudflare/references/kv/api.md +160 -0
- package/skills/cloudflare/references/kv/configuration.md +144 -0
- package/skills/cloudflare/references/kv/gotchas.md +131 -0
- package/skills/cloudflare/references/kv/patterns.md +196 -0
- package/skills/cloudflare/references/miniflare/README.md +105 -0
- package/skills/cloudflare/references/miniflare/api.md +187 -0
- package/skills/cloudflare/references/miniflare/configuration.md +173 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
- package/skills/cloudflare/references/miniflare/patterns.md +181 -0
- package/skills/cloudflare/references/network-interconnect/README.md +99 -0
- package/skills/cloudflare/references/network-interconnect/api.md +199 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
- package/skills/cloudflare/references/observability/README.md +88 -0
- package/skills/cloudflare/references/observability/api.md +164 -0
- package/skills/cloudflare/references/observability/configuration.md +169 -0
- package/skills/cloudflare/references/observability/gotchas.md +115 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +88 -0
- package/skills/cloudflare/references/pages/api.md +204 -0
- package/skills/cloudflare/references/pages/configuration.md +201 -0
- package/skills/cloudflare/references/pages/gotchas.md +203 -0
- package/skills/cloudflare/references/pages/patterns.md +204 -0
- package/skills/cloudflare/references/pages-functions/README.md +98 -0
- package/skills/cloudflare/references/pages-functions/api.md +143 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
- package/skills/cloudflare/references/pipelines/README.md +90 -0
- package/skills/cloudflare/references/pipelines/api.md +124 -0
- package/skills/cloudflare/references/pipelines/configuration.md +155 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
- package/skills/cloudflare/references/pipelines/patterns.md +130 -0
- package/skills/cloudflare/references/pulumi/README.md +100 -0
- package/skills/cloudflare/references/pulumi/api.md +200 -0
- package/skills/cloudflare/references/pulumi/configuration.md +198 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
- package/skills/cloudflare/references/pulumi/patterns.md +191 -0
- package/skills/cloudflare/references/queues/README.md +96 -0
- package/skills/cloudflare/references/queues/api.md +206 -0
- package/skills/cloudflare/references/queues/configuration.md +144 -0
- package/skills/cloudflare/references/queues/gotchas.md +206 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +95 -0
- package/skills/cloudflare/references/r2/api.md +200 -0
- package/skills/cloudflare/references/r2/configuration.md +165 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +193 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
- package/skills/cloudflare/references/r2-sql/README.md +64 -0
- package/skills/cloudflare/references/r2-sql/api.md +121 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
- package/skills/cloudflare/references/realtimekit/README.md +113 -0
- package/skills/cloudflare/references/realtimekit/api.md +212 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
- package/skills/cloudflare/references/sandbox/README.md +96 -0
- package/skills/cloudflare/references/sandbox/api.md +198 -0
- package/skills/cloudflare/references/sandbox/configuration.md +143 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
- package/skills/cloudflare/references/sandbox/patterns.md +201 -0
- package/skills/cloudflare/references/secrets-store/README.md +74 -0
- package/skills/cloudflare/references/secrets-store/api.md +200 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
- package/skills/cloudflare/references/smart-placement/README.md +138 -0
- package/skills/cloudflare/references/smart-placement/api.md +183 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
- package/skills/cloudflare/references/snippets/README.md +68 -0
- package/skills/cloudflare/references/snippets/api.md +198 -0
- package/skills/cloudflare/references/snippets/configuration.md +227 -0
- package/skills/cloudflare/references/snippets/gotchas.md +86 -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 +181 -0
- package/skills/cloudflare/references/spectrum/configuration.md +194 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
- package/skills/cloudflare/references/spectrum/patterns.md +196 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +199 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +114 -0
- package/skills/cloudflare/references/stream/api-live.md +195 -0
- package/skills/cloudflare/references/stream/api.md +199 -0
- package/skills/cloudflare/references/stream/configuration.md +141 -0
- package/skills/cloudflare/references/stream/gotchas.md +130 -0
- package/skills/cloudflare/references/stream/patterns.md +184 -0
- package/skills/cloudflare/references/tail-workers/README.md +89 -0
- package/skills/cloudflare/references/tail-workers/api.md +200 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
- package/skills/cloudflare/references/terraform/README.md +102 -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 +129 -0
- package/skills/cloudflare/references/tunnel/api.md +193 -0
- package/skills/cloudflare/references/tunnel/configuration.md +157 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
- package/skills/cloudflare/references/tunnel/networking.md +168 -0
- package/skills/cloudflare/references/tunnel/patterns.md +192 -0
- package/skills/cloudflare/references/turn/README.md +82 -0
- package/skills/cloudflare/references/turn/api.md +239 -0
- package/skills/cloudflare/references/turn/configuration.md +179 -0
- package/skills/cloudflare/references/turn/gotchas.md +231 -0
- package/skills/cloudflare/references/turn/patterns.md +213 -0
- package/skills/cloudflare/references/turnstile/README.md +99 -0
- package/skills/cloudflare/references/turnstile/api.md +240 -0
- package/skills/cloudflare/references/turnstile/configuration.md +222 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
- package/skills/cloudflare/references/turnstile/patterns.md +193 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +88 -0
- package/skills/cloudflare/references/vectorize/configuration.md +88 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
- package/skills/cloudflare/references/vectorize/patterns.md +90 -0
- package/skills/cloudflare/references/waf/README.md +113 -0
- package/skills/cloudflare/references/waf/api.md +202 -0
- package/skills/cloudflare/references/waf/configuration.md +203 -0
- package/skills/cloudflare/references/waf/gotchas.md +204 -0
- package/skills/cloudflare/references/waf/patterns.md +197 -0
- package/skills/cloudflare/references/web-analytics/README.md +141 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
- package/skills/cloudflare/references/web-analytics/integration.md +60 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
- package/skills/cloudflare/references/workerd/README.md +78 -0
- package/skills/cloudflare/references/workerd/api.md +185 -0
- package/skills/cloudflare/references/workerd/configuration.md +183 -0
- package/skills/cloudflare/references/workerd/gotchas.md +139 -0
- package/skills/cloudflare/references/workerd/patterns.md +192 -0
- package/skills/cloudflare/references/workers/README.md +108 -0
- package/skills/cloudflare/references/workers/api.md +195 -0
- package/skills/cloudflare/references/workers/configuration.md +185 -0
- package/skills/cloudflare/references/workers/frameworks.md +197 -0
- package/skills/cloudflare/references/workers/gotchas.md +137 -0
- package/skills/cloudflare/references/workers/patterns.md +198 -0
- package/skills/cloudflare/references/workers-ai/README.md +197 -0
- package/skills/cloudflare/references/workers-ai/api.md +112 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
- package/skills/cloudflare/references/workers-playground/README.md +127 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
- package/skills/cloudflare/references/workers-vpc/README.md +127 -0
- package/skills/cloudflare/references/workers-vpc/api.md +202 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
- package/skills/cloudflare/references/workflows/README.md +77 -0
- package/skills/cloudflare/references/workflows/api.md +218 -0
- package/skills/cloudflare/references/workflows/configuration.md +152 -0
- package/skills/cloudflare/references/workflows/gotchas.md +90 -0
- package/skills/cloudflare/references/workflows/patterns.md +175 -0
- package/skills/cloudflare/references/wrangler/README.md +135 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +197 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
- package/skills/cloudflare/references/wrangler/patterns.md +209 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
- package/skills/cloudflare/references/zaraz/README.md +111 -0
- package/skills/cloudflare/references/zaraz/api.md +112 -0
- package/skills/cloudflare/references/zaraz/configuration.md +90 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
- package/skills/cloudflare/references/zaraz/patterns.md +74 -0
- package/skills/cloudflare-email-service/SKILL.md +103 -0
- package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
- package/skills/cloudflare-email-service/references/deliverability.md +285 -0
- package/skills/cloudflare-email-service/references/rest-api.md +184 -0
- package/skills/cloudflare-email-service/references/routing.md +199 -0
- package/skills/cloudflare-email-service/references/sending.md +252 -0
- package/skills/cloudflare-one/SKILL.md +176 -0
- package/skills/cloudflare-one-migrations/SKILL.md +110 -0
- package/skills/durable-objects/SKILL.md +186 -0
- package/skills/durable-objects/references/rules.md +295 -0
- package/skills/durable-objects/references/testing.md +264 -0
- package/skills/durable-objects/references/workers.md +346 -0
- package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
- package/skills/sandbox-next/SKILL.md +91 -0
- package/skills/sandbox-next/references/api-quick-ref.md +94 -0
- package/skills/sandbox-next/references/examples.md +15 -0
- package/skills/sandbox-stable/SKILL.md +110 -0
- package/skills/turnstile-spin/README.md +51 -0
- package/skills/turnstile-spin/SKILL.md +330 -0
- package/skills/turnstile-spin/references/astro.md +199 -0
- package/skills/turnstile-spin/references/hugo.md +114 -0
- package/skills/turnstile-spin/references/nextjs-app.md +261 -0
- package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
- package/skills/turnstile-spin/references/sveltekit.md +191 -0
- package/skills/turnstile-spin/references/vanilla-html.md +157 -0
- package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
- package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
- package/skills/turnstile-spin/scripts/validate.sh +137 -0
- package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
- package/skills/turnstile-spin/tests/validation.md +62 -0
- package/skills/workers-best-practices/SKILL.md +127 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +467 -0
- package/skills/wrangler/SKILL.md +922 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Gotchas & Troubleshooting
|
|
2
|
+
|
|
3
|
+
## Miniflare Limitations
|
|
4
|
+
|
|
5
|
+
**Not supported:**
|
|
6
|
+
- Analytics Engine (use mocks)
|
|
7
|
+
- Cloudflare Images/Stream
|
|
8
|
+
- Browser Rendering API
|
|
9
|
+
- Tail Workers
|
|
10
|
+
- Workers for Platforms (partial support)
|
|
11
|
+
|
|
12
|
+
**Behavior differences from production:**
|
|
13
|
+
- Runs workerd locally, not Cloudflare edge
|
|
14
|
+
- Storage is local (filesystem/memory), not distributed
|
|
15
|
+
- `Request.cf` is cached/mocked, not real edge data
|
|
16
|
+
- Performance differs from edge
|
|
17
|
+
- Caching implementation may vary slightly
|
|
18
|
+
|
|
19
|
+
## Common Errors
|
|
20
|
+
|
|
21
|
+
### "Cannot find module"
|
|
22
|
+
**Cause:** Module path wrong or `modulesRules` not configured
|
|
23
|
+
**Solution:**
|
|
24
|
+
```js
|
|
25
|
+
new Miniflare({
|
|
26
|
+
modules: true,
|
|
27
|
+
modulesRules: [{ type: "ESModule", include: ["**/*.js"] }],
|
|
28
|
+
});
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### "Data not persisting"
|
|
32
|
+
**Cause:** Persist paths are files, not directories
|
|
33
|
+
**Solution:**
|
|
34
|
+
```js
|
|
35
|
+
kvPersist: "./data/kv", // Directory, not file
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### "Cannot run TypeScript"
|
|
39
|
+
**Cause:** Miniflare doesn't transpile TypeScript
|
|
40
|
+
**Solution:** Build first with esbuild/tsc, then run compiled JS
|
|
41
|
+
|
|
42
|
+
### "`request.cf` is undefined"
|
|
43
|
+
**Cause:** CF data not configured
|
|
44
|
+
**Solution:**
|
|
45
|
+
```js
|
|
46
|
+
new Miniflare({ cf: true }); // Or cf: "./cf.json"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### "EADDRINUSE" port conflict
|
|
50
|
+
**Cause:** Multiple instances using same port
|
|
51
|
+
**Solution:** Use `dispatchFetch()` (no HTTP server) or `port: 0` for auto-assign
|
|
52
|
+
|
|
53
|
+
### "Durable Object not found"
|
|
54
|
+
**Cause:** Class export doesn't match config name
|
|
55
|
+
**Solution:**
|
|
56
|
+
```js
|
|
57
|
+
export class Counter {} // Must match
|
|
58
|
+
new Miniflare({ durableObjects: { COUNTER: "Counter" } });
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Debugging
|
|
62
|
+
|
|
63
|
+
**Enable verbose logging:**
|
|
64
|
+
```js
|
|
65
|
+
import { Log, LogLevel } from "miniflare";
|
|
66
|
+
new Miniflare({ log: new Log(LogLevel.DEBUG) });
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Chrome DevTools:**
|
|
70
|
+
```js
|
|
71
|
+
const url = await mf.getInspectorURL();
|
|
72
|
+
console.log(`DevTools: ${url}`); // Open in Chrome
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Inspect bindings:**
|
|
76
|
+
```js
|
|
77
|
+
const env = await mf.getBindings();
|
|
78
|
+
console.log(Object.keys(env));
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Verify storage:**
|
|
82
|
+
```js
|
|
83
|
+
const ns = await mf.getKVNamespace("TEST");
|
|
84
|
+
const { keys } = await ns.list();
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Best Practices
|
|
88
|
+
|
|
89
|
+
**✓ Do:**
|
|
90
|
+
- Use `dispatchFetch()` for tests (no HTTP server)
|
|
91
|
+
- In-memory storage for CI (omit persist options)
|
|
92
|
+
- New instances per test for isolation
|
|
93
|
+
- Type-safe bindings with interfaces
|
|
94
|
+
- `await mf.dispose()` in cleanup
|
|
95
|
+
|
|
96
|
+
**✗ Avoid:**
|
|
97
|
+
- HTTP server in tests
|
|
98
|
+
- Shared instances without cleanup
|
|
99
|
+
- Old compatibility dates (use 2026+)
|
|
100
|
+
|
|
101
|
+
## Migration Guides
|
|
102
|
+
|
|
103
|
+
### From Miniflare 2.x to 3+
|
|
104
|
+
|
|
105
|
+
Breaking changes in v3+:
|
|
106
|
+
|
|
107
|
+
| v2 | v3+ |
|
|
108
|
+
|----|-----|
|
|
109
|
+
| `getBindings()` sync | `getBindings()` returns Promise |
|
|
110
|
+
| `ready` is void | `ready` returns `Promise<URL>` |
|
|
111
|
+
| service-worker-mock | Built on workerd |
|
|
112
|
+
| Different options | Restructured constructor |
|
|
113
|
+
|
|
114
|
+
**Example migration:**
|
|
115
|
+
```js
|
|
116
|
+
// v2
|
|
117
|
+
const bindings = mf.getBindings();
|
|
118
|
+
mf.ready; // void
|
|
119
|
+
|
|
120
|
+
// v3+
|
|
121
|
+
const bindings = await mf.getBindings();
|
|
122
|
+
const url = await mf.ready; // Promise<URL>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### From unstable_dev to Miniflare
|
|
126
|
+
|
|
127
|
+
```js
|
|
128
|
+
// Old (deprecated)
|
|
129
|
+
import { unstable_dev } from "wrangler";
|
|
130
|
+
const worker = await unstable_dev("src/index.ts");
|
|
131
|
+
|
|
132
|
+
// New
|
|
133
|
+
import { Miniflare } from "miniflare";
|
|
134
|
+
const mf = new Miniflare({ scriptPath: "src/index.ts" });
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### From Wrangler Dev
|
|
138
|
+
|
|
139
|
+
Miniflare doesn't auto-read `wrangler.toml`:
|
|
140
|
+
|
|
141
|
+
```js
|
|
142
|
+
// Translate manually:
|
|
143
|
+
new Miniflare({
|
|
144
|
+
scriptPath: "dist/worker.js",
|
|
145
|
+
compatibilityDate: "2026-01-01",
|
|
146
|
+
kvNamespaces: ["KV"],
|
|
147
|
+
bindings: { API_KEY: process.env.API_KEY },
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Resource Limits
|
|
152
|
+
|
|
153
|
+
| Limit | Value | Notes |
|
|
154
|
+
|-------|-------|-------|
|
|
155
|
+
| CPU time | 30s default | Configurable via `scriptTimeout` |
|
|
156
|
+
| Storage | Filesystem | Performance varies by disk |
|
|
157
|
+
| Memory | System dependent | No artificial limits |
|
|
158
|
+
| Request.cf | Cached/mocked | Not live edge data |
|
|
159
|
+
|
|
160
|
+
See [patterns.md](./patterns.md) for testing examples.
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Testing Patterns
|
|
2
|
+
|
|
3
|
+
## Choosing a Testing Approach
|
|
4
|
+
|
|
5
|
+
| Approach | Use Case | Speed | Setup | Runtime |
|
|
6
|
+
|----------|----------|-------|-------|---------|
|
|
7
|
+
| **getPlatformProxy** | Unit tests, logic testing | Fast | Low | Miniflare |
|
|
8
|
+
| **Miniflare API** | Integration tests, full control | Medium | Medium | Miniflare |
|
|
9
|
+
| **vitest-pool-workers** | Vitest runner integration | Medium | Medium | workerd |
|
|
10
|
+
|
|
11
|
+
**Quick guide:**
|
|
12
|
+
- Unit tests → getPlatformProxy
|
|
13
|
+
- Integration tests → Miniflare API
|
|
14
|
+
- Vitest workflows → vitest-pool-workers
|
|
15
|
+
|
|
16
|
+
## getPlatformProxy
|
|
17
|
+
|
|
18
|
+
Lightweight unit testing - provides bindings without full Worker runtime.
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
// vitest.config.js
|
|
22
|
+
export default { test: { environment: "node" } };
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```js
|
|
26
|
+
import { env } from "cloudflare:test";
|
|
27
|
+
import { describe, it, expect } from "vitest";
|
|
28
|
+
|
|
29
|
+
describe("Business logic", () => {
|
|
30
|
+
it("processes data with KV", async () => {
|
|
31
|
+
await env.KV.put("test", "value");
|
|
32
|
+
expect(await env.KV.get("test")).toBe("value");
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Pros:** Fast, simple
|
|
38
|
+
**Cons:** No full runtime, can't test fetch handler
|
|
39
|
+
|
|
40
|
+
## vitest-pool-workers
|
|
41
|
+
|
|
42
|
+
Full Workers runtime in Vitest. Reads `wrangler.toml`.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm i -D @cloudflare/vitest-pool-workers
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
// vitest.config.js
|
|
50
|
+
import { defineWorkersConfig } from "@cloudflare/vitest-pool-workers/config";
|
|
51
|
+
|
|
52
|
+
export default defineWorkersConfig({
|
|
53
|
+
test: {
|
|
54
|
+
poolOptions: { workers: { wrangler: { configPath: "./wrangler.toml" } } },
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
import { env, SELF } from "cloudflare:test";
|
|
61
|
+
import { it, expect } from "vitest";
|
|
62
|
+
|
|
63
|
+
it("handles fetch", async () => {
|
|
64
|
+
const res = await SELF.fetch("http://example.com/");
|
|
65
|
+
expect(res.status).toBe(200);
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Pros:** Full runtime, uses wrangler.toml
|
|
70
|
+
**Cons:** Requires Wrangler config
|
|
71
|
+
|
|
72
|
+
## Miniflare API (node:test)
|
|
73
|
+
|
|
74
|
+
```js
|
|
75
|
+
import assert from "node:assert";
|
|
76
|
+
import test, { after, before } from "node:test";
|
|
77
|
+
import { Miniflare } from "miniflare";
|
|
78
|
+
|
|
79
|
+
let mf;
|
|
80
|
+
before(() => {
|
|
81
|
+
mf = new Miniflare({ scriptPath: "src/index.js", kvNamespaces: ["TEST_KV"] });
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
test("fetch", async () => {
|
|
85
|
+
const res = await mf.dispatchFetch("http://localhost/");
|
|
86
|
+
assert.strictEqual(await res.text(), "Hello");
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
after(() => mf.dispose());
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Testing Durable Objects & Events
|
|
93
|
+
|
|
94
|
+
```js
|
|
95
|
+
// Durable Objects
|
|
96
|
+
const ns = await mf.getDurableObjectNamespace("COUNTER");
|
|
97
|
+
const stub = ns.get(ns.idFromName("test-counter"));
|
|
98
|
+
await stub.fetch("http://localhost/increment");
|
|
99
|
+
|
|
100
|
+
// Direct storage
|
|
101
|
+
const storage = await mf.getDurableObjectStorage(ns.idFromName("test-counter"));
|
|
102
|
+
const count = await storage.get("count");
|
|
103
|
+
|
|
104
|
+
// Queue
|
|
105
|
+
const worker = await mf.getWorker();
|
|
106
|
+
await worker.queue("my-queue", [
|
|
107
|
+
{ id: "msg1", timestamp: new Date(), body: { userId: 123 }, attempts: 1 },
|
|
108
|
+
]);
|
|
109
|
+
|
|
110
|
+
// Scheduled
|
|
111
|
+
await worker.scheduled({ cron: "0 0 * * *" });
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Test Isolation & Mocking
|
|
115
|
+
|
|
116
|
+
```js
|
|
117
|
+
// Per-test isolation
|
|
118
|
+
beforeEach(() => { mf = new Miniflare({ kvNamespaces: ["TEST"] }); });
|
|
119
|
+
afterEach(() => mf.dispose());
|
|
120
|
+
|
|
121
|
+
// Mock external APIs
|
|
122
|
+
new Miniflare({
|
|
123
|
+
workers: [
|
|
124
|
+
{ name: "main", serviceBindings: { API: "mock-api" }, script: `...` },
|
|
125
|
+
{ name: "mock-api", script: `export default { async fetch() { return Response.json({mock: true}); } }` },
|
|
126
|
+
],
|
|
127
|
+
});
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Type Safety
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
import type { KVNamespace } from "@cloudflare/workers-types";
|
|
134
|
+
|
|
135
|
+
interface Env {
|
|
136
|
+
KV: KVNamespace;
|
|
137
|
+
API_KEY: string;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const env = await mf.getBindings<Env>();
|
|
141
|
+
await env.KV.put("key", "value"); // Typed!
|
|
142
|
+
|
|
143
|
+
export default {
|
|
144
|
+
async fetch(req: Request, env: Env) {
|
|
145
|
+
return new Response(await env.KV.get("key"));
|
|
146
|
+
}
|
|
147
|
+
} satisfies ExportedHandler<Env>;
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## WebSocket Testing
|
|
151
|
+
|
|
152
|
+
```js
|
|
153
|
+
const res = await mf.dispatchFetch("http://localhost/ws", {
|
|
154
|
+
headers: { Upgrade: "websocket" },
|
|
155
|
+
});
|
|
156
|
+
assert.strictEqual(res.status, 101);
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Migration from unstable_dev
|
|
160
|
+
|
|
161
|
+
```js
|
|
162
|
+
// Old (deprecated)
|
|
163
|
+
import { unstable_dev } from "wrangler";
|
|
164
|
+
const worker = await unstable_dev("src/index.ts");
|
|
165
|
+
|
|
166
|
+
// New
|
|
167
|
+
import { Miniflare } from "miniflare";
|
|
168
|
+
const mf = new Miniflare({ scriptPath: "src/index.ts" });
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## CI/CD Tips
|
|
172
|
+
|
|
173
|
+
```js
|
|
174
|
+
// In-memory storage (faster)
|
|
175
|
+
new Miniflare({ kvNamespaces: ["TEST"] }); // No persist = in-memory
|
|
176
|
+
|
|
177
|
+
// Use dispatchFetch (no port conflicts)
|
|
178
|
+
await mf.dispatchFetch("http://localhost/");
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
See [gotchas.md](./gotchas.md) for troubleshooting.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Cloudflare Network Interconnect (CNI)
|
|
2
|
+
|
|
3
|
+
Private, high-performance connectivity to Cloudflare's network. **Enterprise-only**.
|
|
4
|
+
|
|
5
|
+
## Connection Types
|
|
6
|
+
|
|
7
|
+
**Direct**: Physical fiber in shared datacenter. 10/100 Gbps. You order cross-connect.
|
|
8
|
+
|
|
9
|
+
**Partner**: Virtual via Console Connect, Equinix, Megaport, etc. Managed via partner SDN.
|
|
10
|
+
|
|
11
|
+
**Cloud**: AWS Direct Connect or GCP Cloud Interconnect. Magic WAN only.
|
|
12
|
+
|
|
13
|
+
## Dataplane Versions
|
|
14
|
+
|
|
15
|
+
**v1 (Classic)**: GRE tunnel support, VLAN/BFD/LACP, asymmetric MTU (1500↓/1476↑), peering support.
|
|
16
|
+
|
|
17
|
+
**v2 (Beta)**: No GRE, 1500 MTU both ways, no VLAN/BFD/LACP yet, ECMP instead.
|
|
18
|
+
|
|
19
|
+
## Use Cases
|
|
20
|
+
|
|
21
|
+
- **Magic Transit DSR**: DDoS protection, egress via ISP (v1/v2)
|
|
22
|
+
- **Magic Transit + Egress**: DDoS + egress via CF (v1/v2)
|
|
23
|
+
- **Magic WAN + Zero Trust**: Private backbone (v1 needs GRE, v2 native)
|
|
24
|
+
- **Peering**: Public routes at PoP (v1 only)
|
|
25
|
+
- **App Security**: WAF/Cache/LB (v1/v2 over Magic Transit)
|
|
26
|
+
|
|
27
|
+
## Prerequisites
|
|
28
|
+
|
|
29
|
+
- Enterprise plan
|
|
30
|
+
- IPv4 /24+ or IPv6 /48+ prefixes
|
|
31
|
+
- BGP ASN for v1
|
|
32
|
+
- See [locations PDF](https://developers.cloudflare.com/network-interconnect/static/cni-locations-2026-01.pdf)
|
|
33
|
+
|
|
34
|
+
## Specs
|
|
35
|
+
|
|
36
|
+
- /31 point-to-point subnets
|
|
37
|
+
- 10km max optical distance
|
|
38
|
+
- 10G: 10GBASE-LR single-mode
|
|
39
|
+
- 100G: 100GBASE-LR4 single-mode
|
|
40
|
+
- **No SLA** (free service)
|
|
41
|
+
- Backup Internet required
|
|
42
|
+
|
|
43
|
+
## Throughput
|
|
44
|
+
|
|
45
|
+
| Direction | 10G | 100G |
|
|
46
|
+
|-----------|-----|------|
|
|
47
|
+
| CF → Customer | 10 Gbps | 100 Gbps |
|
|
48
|
+
| Customer → CF (peering) | 10 Gbps | 100 Gbps |
|
|
49
|
+
| Customer → CF (Magic) | 1 Gbps/tunnel or CNI | 1 Gbps/tunnel or CNI |
|
|
50
|
+
|
|
51
|
+
## Timeline
|
|
52
|
+
|
|
53
|
+
2-4 weeks typical. Steps: request → config review → order connection → configure → test → enable health checks → activate → monitor.
|
|
54
|
+
|
|
55
|
+
## In This Reference
|
|
56
|
+
- [configuration.md](./configuration.md) - BGP, routing, setup
|
|
57
|
+
- [api.md](./api.md) - API endpoints, SDKs
|
|
58
|
+
- [patterns.md](./patterns.md) - HA, hybrid cloud, failover
|
|
59
|
+
- [gotchas.md](./gotchas.md) - Troubleshooting, limits
|
|
60
|
+
|
|
61
|
+
## Reading Order by Task
|
|
62
|
+
|
|
63
|
+
| Task | Files to Load |
|
|
64
|
+
|------|---------------|
|
|
65
|
+
| Initial setup | README → configuration.md → api.md |
|
|
66
|
+
| Create interconnect via API | api.md → gotchas.md |
|
|
67
|
+
| Design HA architecture | patterns.md → README |
|
|
68
|
+
| Troubleshoot connection | gotchas.md → configuration.md |
|
|
69
|
+
| Cloud integration (AWS/GCP) | configuration.md → patterns.md |
|
|
70
|
+
| Monitor + alerts | configuration.md |
|
|
71
|
+
|
|
72
|
+
## Automation Boundary
|
|
73
|
+
|
|
74
|
+
**API-Automatable:**
|
|
75
|
+
- List/create/delete interconnects (Direct, Partner)
|
|
76
|
+
- List available slots
|
|
77
|
+
- Get interconnect status
|
|
78
|
+
- Download LOA PDF
|
|
79
|
+
- Create/update CNI objects (BGP config)
|
|
80
|
+
- Query settings
|
|
81
|
+
|
|
82
|
+
**Requires Account Team:**
|
|
83
|
+
- Initial request approval
|
|
84
|
+
- AWS Direct Connect setup (send LOA+VLAN to CF)
|
|
85
|
+
- GCP Cloud Interconnect final activation
|
|
86
|
+
- Partner interconnect acceptance (Equinix, Megaport)
|
|
87
|
+
- VLAN assignment (v1)
|
|
88
|
+
- Configuration document generation (v1)
|
|
89
|
+
- Escalations + troubleshooting support
|
|
90
|
+
|
|
91
|
+
**Cannot Be Automated:**
|
|
92
|
+
- Physical cross-connect installation (Direct)
|
|
93
|
+
- Partner portal operations (virtual circuit ordering)
|
|
94
|
+
- AWS/GCP portal operations
|
|
95
|
+
- Maintenance window coordination
|
|
96
|
+
|
|
97
|
+
## See Also
|
|
98
|
+
- [tunnel](../tunnel/) - Alternative for private network connectivity
|
|
99
|
+
- [spectrum](../spectrum/) - Layer 4 proxy for TCP/UDP traffic
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# CNI API Reference
|
|
2
|
+
|
|
3
|
+
See [README.md](README.md) for overview.
|
|
4
|
+
|
|
5
|
+
## Base
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
https://api.cloudflare.com/client/v4
|
|
9
|
+
Auth: Authorization: Bearer <token>
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## SDK Namespaces
|
|
13
|
+
|
|
14
|
+
**Primary (recommended):**
|
|
15
|
+
```typescript
|
|
16
|
+
client.networkInterconnects.interconnects.*
|
|
17
|
+
client.networkInterconnects.cnis.*
|
|
18
|
+
client.networkInterconnects.slots.*
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Alternate (deprecated):**
|
|
22
|
+
```typescript
|
|
23
|
+
client.magicTransit.cfInterconnects.*
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Use `networkInterconnects` namespace for all new code.
|
|
27
|
+
|
|
28
|
+
## Interconnects
|
|
29
|
+
|
|
30
|
+
```http
|
|
31
|
+
GET /accounts/{account_id}/cni/interconnects # Query: page, per_page
|
|
32
|
+
POST /accounts/{account_id}/cni/interconnects # Query: validate_only=true (optional)
|
|
33
|
+
GET /accounts/{account_id}/cni/interconnects/{icon}
|
|
34
|
+
GET /accounts/{account_id}/cni/interconnects/{icon}/status
|
|
35
|
+
GET /accounts/{account_id}/cni/interconnects/{icon}/loa # Returns PDF
|
|
36
|
+
DELETE /accounts/{account_id}/cni/interconnects/{icon}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Create Body:** `account`, `slot_id`, `type`, `facility`, `speed`, `name`, `description`
|
|
40
|
+
**Status Values:** `active` | `healthy` | `unhealthy` | `pending` | `down`
|
|
41
|
+
|
|
42
|
+
**Response Example:**
|
|
43
|
+
```json
|
|
44
|
+
{"result": [{"id": "icon_abc", "name": "prod", "type": "direct", "facility": "EWR1", "speed": "10G", "status": "active"}]}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## CNI Objects (BGP config)
|
|
48
|
+
|
|
49
|
+
```http
|
|
50
|
+
GET /accounts/{account_id}/cni/cnis
|
|
51
|
+
POST /accounts/{account_id}/cni/cnis
|
|
52
|
+
GET /accounts/{account_id}/cni/cnis/{cni}
|
|
53
|
+
PUT /accounts/{account_id}/cni/cnis/{cni}
|
|
54
|
+
DELETE /accounts/{account_id}/cni/cnis/{cni}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Body: `account`, `cust_ip`, `cf_ip`, `bgp_asn`, `bgp_password`, `vlan`
|
|
58
|
+
|
|
59
|
+
## Slots
|
|
60
|
+
|
|
61
|
+
```http
|
|
62
|
+
GET /accounts/{account_id}/cni/slots
|
|
63
|
+
GET /accounts/{account_id}/cni/slots/{slot}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Query: `facility`, `occupied`, `speed`
|
|
67
|
+
|
|
68
|
+
## Health Checks
|
|
69
|
+
|
|
70
|
+
Configure via Magic Transit/WAN tunnel endpoints (CNI v2).
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
await client.magicTransit.tunnels.update(accountId, tunnelId, {
|
|
74
|
+
health_check: { enabled: true, target: '192.0.2.1', rate: 'high', type: 'request' },
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Rates: `high` | `medium` | `low`. Types: `request` | `reply`. See [Magic Transit docs](https://developers.cloudflare.com/magic-transit/how-to/configure-tunnel-endpoints/#add-tunnels).
|
|
79
|
+
|
|
80
|
+
## Settings
|
|
81
|
+
|
|
82
|
+
```http
|
|
83
|
+
GET /accounts/{account_id}/cni/settings
|
|
84
|
+
PUT /accounts/{account_id}/cni/settings
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Body: `default_asn`
|
|
88
|
+
|
|
89
|
+
## TypeScript SDK
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import Cloudflare from 'cloudflare';
|
|
93
|
+
|
|
94
|
+
const client = new Cloudflare({ apiToken: process.env.CF_TOKEN });
|
|
95
|
+
|
|
96
|
+
// List
|
|
97
|
+
await client.networkInterconnects.interconnects.list({ account_id: id });
|
|
98
|
+
|
|
99
|
+
// Create with validation
|
|
100
|
+
await client.networkInterconnects.interconnects.create({
|
|
101
|
+
account_id: id,
|
|
102
|
+
account: id,
|
|
103
|
+
slot_id: 'slot_abc',
|
|
104
|
+
type: 'direct',
|
|
105
|
+
facility: 'EWR1',
|
|
106
|
+
speed: '10G',
|
|
107
|
+
name: 'prod-interconnect',
|
|
108
|
+
}, {
|
|
109
|
+
query: { validate_only: true }, // Dry-run validation
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// Create without validation
|
|
113
|
+
await client.networkInterconnects.interconnects.create({
|
|
114
|
+
account_id: id,
|
|
115
|
+
account: id,
|
|
116
|
+
slot_id: 'slot_abc',
|
|
117
|
+
type: 'direct',
|
|
118
|
+
facility: 'EWR1',
|
|
119
|
+
speed: '10G',
|
|
120
|
+
name: 'prod-interconnect',
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// Status
|
|
124
|
+
await client.networkInterconnects.interconnects.get(accountId, iconId);
|
|
125
|
+
|
|
126
|
+
// LOA (use fetch)
|
|
127
|
+
const res = await fetch(`https://api.cloudflare.com/client/v4/accounts/${id}/cni/interconnects/${iconId}/loa`, {
|
|
128
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
129
|
+
});
|
|
130
|
+
await fs.writeFile('loa.pdf', Buffer.from(await res.arrayBuffer()));
|
|
131
|
+
|
|
132
|
+
// CNI object
|
|
133
|
+
await client.networkInterconnects.cnis.create({
|
|
134
|
+
account_id: id,
|
|
135
|
+
account: id,
|
|
136
|
+
cust_ip: '192.0.2.1/31',
|
|
137
|
+
cf_ip: '192.0.2.0/31',
|
|
138
|
+
bgp_asn: 65000,
|
|
139
|
+
vlan: 100,
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Slots (filter by facility and speed)
|
|
143
|
+
await client.networkInterconnects.slots.list({
|
|
144
|
+
account_id: id,
|
|
145
|
+
occupied: false,
|
|
146
|
+
facility: 'EWR1',
|
|
147
|
+
speed: '10G',
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Python SDK
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
from cloudflare import Cloudflare
|
|
155
|
+
|
|
156
|
+
client = Cloudflare(api_token=os.environ["CF_TOKEN"])
|
|
157
|
+
|
|
158
|
+
# List, create, status (same pattern as TypeScript)
|
|
159
|
+
client.network_interconnects.interconnects.list(account_id=id)
|
|
160
|
+
client.network_interconnects.interconnects.create(account_id=id, account=id, slot_id="slot_abc", type="direct", facility="EWR1", speed="10G")
|
|
161
|
+
client.network_interconnects.interconnects.get(account_id=id, icon=icon_id)
|
|
162
|
+
|
|
163
|
+
# CNI objects and slots
|
|
164
|
+
client.network_interconnects.cnis.create(account_id=id, cust_ip="192.0.2.1/31", cf_ip="192.0.2.0/31", bgp_asn=65000)
|
|
165
|
+
client.network_interconnects.slots.list(account_id=id, occupied=False)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## cURL
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# List interconnects
|
|
172
|
+
curl "https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/cni/interconnects" \
|
|
173
|
+
-H "Authorization: Bearer ${CF_TOKEN}"
|
|
174
|
+
|
|
175
|
+
# Create interconnect
|
|
176
|
+
curl -X POST "https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/cni/interconnects?validate_only=true" \
|
|
177
|
+
-H "Authorization: Bearer ${CF_TOKEN}" -H "Content-Type: application/json" \
|
|
178
|
+
-d '{"account": "id", "slot_id": "slot_abc", "type": "direct", "facility": "EWR1", "speed": "10G"}'
|
|
179
|
+
|
|
180
|
+
# LOA PDF
|
|
181
|
+
curl "https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/cni/interconnects/${ICON_ID}/loa" \
|
|
182
|
+
-H "Authorization: Bearer ${CF_TOKEN}" --output loa.pdf
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Not Available via API
|
|
186
|
+
|
|
187
|
+
**Missing Capabilities:**
|
|
188
|
+
- BGP session state query (use Dashboard or BGP logs)
|
|
189
|
+
- Bandwidth utilization metrics (use external monitoring)
|
|
190
|
+
- Traffic statistics per interconnect
|
|
191
|
+
- Historical uptime/downtime data
|
|
192
|
+
- Light level readings (contact account team)
|
|
193
|
+
- Maintenance window scheduling (notifications only)
|
|
194
|
+
|
|
195
|
+
## Resources
|
|
196
|
+
|
|
197
|
+
- [API Docs](https://developers.cloudflare.com/api/resources/network_interconnects/)
|
|
198
|
+
- [TypeScript SDK](https://github.com/cloudflare/cloudflare-typescript)
|
|
199
|
+
- [Python SDK](https://github.com/cloudflare/cloudflare-python)
|