Cloudflare/pages
Cloudflare Pages — projects, deployments, domains, build configs
2026.10.21.1
Changed: The README and the apiToken description now lead with a vault.
Store the token with swamp vault put cloudflare API_TOKEN and set apiToken
to ${{ vault.get("cloudflare", "API_TOKEN") }}. The CLOUDFLARE_API_TOKEN
environment variable still works as a fallback, but swamp does not redact it, so
it is no longer recommended. The missing-token error now says the same.
Changed: Method arguments that carry a secret are now marked sensitive, so
swamp redacts them from logs and run records. Pass them as vault.get
expressions. Affected: create_project and update_project. The README's new
"Secrets" section lists them per method.
Changed: Secrets returned by get_upload_token are now stored in a vault,
and the stored resource holds a vault.get reference instead of the value.
Because the model now declares secret output, swamp refuses to run any of the
model's methods, reads included, until a vault exists
(swamp vault create local_encryption cloudflare). The README's "Secrets"
section lists what each method stores.
Changed: Secrets inside list items, maps or unions, which swamp cannot move
into a vault, are now removed before the result is stored. Affected:
get_projects, create_project, get_project, update_project,
get_deployments, get_deployment_info and 3 more.
Upgrade note: Resources stored by earlier versions of the methods in the
README's "Secrets" section may hold plaintext secrets; delete them with
swamp data delete and rotate the affected credentials.
Global Arguments
| Argument | Type | Description |
|---|---|---|
| apiToken? | string | Cloudflare API token. Wire it with ${{ vault.get("cloudflare", "API_TOKEN") }}; never pass the literal token. The CLOUDFLARE_API_TOKEN environment variable is read as a fallback, but it is not redacted and is not recommended. |
| accountId | string | Cloudflare account ID |
| Argument | Type | Description |
|---|---|---|
| page? | number | |
| per_page? | number |
| Argument | Type | Description |
|---|---|---|
| build_config? | object | Configs for the project build process. |
| deployment_configs? | object | Configs for deployments in a project. |
| name | string | Name of the project. |
| production_branch | string | Production branch of the project. Used to identify production deployments. |
| source? | object | Configs for the project source control. |
| Argument | Type | Description |
|---|---|---|
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| project_name | string | |
| build_config? | object | Configs for the project build process. |
| deployment_configs? | object | Configs for deployments in a project. |
| name? | string | Name of the project. |
| production_branch? | string | Production branch of the project. Used to identify production deployments. |
| source? | object | Configs for the project source control. |
| Argument | Type | Description |
|---|---|---|
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| project_name | string | |
| env? | enum | |
| page? | number | |
| per_page? | number |
| Argument | Type | Description |
|---|---|---|
| deployment_id | string | |
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| deployment_id | string | |
| project_name | string | |
| force? | boolean |
| Argument | Type | Description |
|---|---|---|
| deployment_id | string | |
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| deployment_id | string | |
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| deployment_id | string | |
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| deployment_id | string | |
| project_name | string | |
| filters? | array | Filters to apply to the tail session. |
| Argument | Type | Description |
|---|---|---|
| tail_id | string | |
| deployment_id | string | |
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| project_name | string | |
| name | unknown |
| Argument | Type | Description |
|---|---|---|
| domain_name | string | |
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| domain_name | string | |
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| domain_name | string | |
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| project_name | string | |
| config | object | |
| type | enum | The source control management provider. |
| Argument | Type | Description |
|---|---|---|
| project_name | string |
| Argument | Type | Description |
|---|---|---|
| project_name | string |
Resources
2026.10.14.1
Fixed: Methods that write a singleton resource failed on current swamp with
Data name 'latest' is reserved for internal use.
Changed: Singleton get and action methods now write their data under
pages_deployment_retry_deployment-current,
pages_deployment_rollback_deployment-current,
pages_purge_build_cache-current instead of latest. Anything that read
data.latest("<model>", "latest") or queried name == "latest" must use the
new name.
Upgrade note: Data previously stored under latest is not migrated; re-run
the method to populate the new name. No attribute schemas changed.
Added: The manifest now declares license: Apache-2.0 (SPDX). The registry quality rubric scores a declared license separately from the bundled LICENSE.md.
2026.09.18.1
Upgrade note: Normalized npm:zod dependency version to 4.6.5 across the
repo. No behavioral changes in this extension.
2026.09.17.2
No changes to this extension's methods. Regenerated to refresh the shared _lib/api.ts helper library after PR #427 review fixes to cfApiPaginatedCursor (used by r2, kv, durable-objects, and workers-ai, but emitted into every extension's api.ts since it's part of the shared template).
2026.09.15.1
Changed: Bump zod 4.4.3 → 4.6.5
2026.08.28.2
Hardened codegen: instance names sanitized against path traversal; 429 rate-limit retry with Retry-After; string schema patterns emit regex validation; output schemas passthrough unknown fields; apiToken now optional and vault-wireable with CLOUDFLARE_API_TOKEN env fallback.
2026.08.28.2
Hardened codegen: instance names sanitized against path traversal; 429 rate-limit retry with Retry-After; string schema patterns emit regex validation; output schemas passthrough unknown fields; apiToken now optional and vault-wireable with CLOUDFLARE_API_TOKEN env fallback.
updated labels
2026.08.28.1
Changed: Normalized the extension license to Apache-2.0 and corrected the copyright holder to "Sean Escriva". Extensions that previously shipped an MIT LICENSE.md are now Apache-2.0, consistent with the repository root and every other extension. No code or behavioral changes.
Upgrade note: License text only. No API, schema, or runtime behavior changed.
2026.08.26.2
Fixed: Restored inline npm:zod@4.4.3 import specifiers so the registry
quality scorer can resolve dependencies and score the extension. An earlier
release used a bare "zod" import-map specifier, which published but scored as
unscored.
Changed: Retained explicit compilerOptions.strict in deno.json. No
behavioral or schema changes.
2026.08.26.2
Fixed: Restored inline npm:zod@4.4.3 import specifiers so the registry
quality scorer can resolve dependencies and score the extension. An earlier
release used a bare "zod" import-map specifier, which published but scored as
unscored.
Changed: Retained explicit compilerOptions.strict in deno.json. No
behavioral or schema changes.
2026.08.25.1
Changed: Updated labels for improved extension discoverability. Added cross-cutting category labels (security, observability, finops, infrastructure, networking, compliance, devops, ai, incident-response) where applicable.
updated labels
2026.08.24.1
Added: Output metadata attributes for observability.
durationMs: Method execution duration in milliseconds.collectedBy: Extension name that produced the data.fetchedAt: ISO 8601 timestamp when data was fetched (added to resources that previously lacked it).
2026.08.21.3
Changed:
- Errors raised when a Cloudflare API call fails now name the HTTP method
and path that was attempted (e.g.
Cloudflare API POST /accounts/.../pages/projects failed with HTTP 400 ...) instead of a bareCloudflare API error: .... Network-level failures (DNS, connection reset, timeout) are now also caught and wrapped with the same operation context instead of surfacing a rawfetcherror. create_projectnow rejects an emptynameorproduction_branchbefore making a request, instead of letting Cloudflare reject the request with a less specific error.
No breaking changes. Existing calls that already supplied a non-empty
name and production_branch are unaffected.
2026.08.21.2
Changed: Added .describe() and .min(1) to the identifier arguments
used across most methods — project_name, deployment_id, domain_name,
and tail_id. No behavioral changes.
2026.08.21.1
Fixed: Regenerated with three cloudflare-codegen fixes: (1) discriminated-union request bodies with a sibling top-level discriminator property (e.g. gateway proxy_endpoints kind) now correctly build the body from the full oneOf variant instead of silently dropping it to undefined; (2) DELETE methods with a request body (e.g. r2 delete_objects bulk-delete-by-list) now send that body instead of ignoring it; (3) oneOf/anyOf request body variants that are $ref (e.g. r2 sippy config) are now resolved to their real schema instead of collapsing to z.unknown(). Same generator fix as workers-scripts in #352, now caught up for these 7 services.
Changed: create_deployment was removed — it is no longer present in the
upstream Cloudflare API spec this extension is generated from.
2026.08.21.1
Fixed: Regenerated with three cloudflare-codegen fixes: (1) discriminated-union request bodies with a sibling top-level discriminator property (e.g. gateway proxy_endpoints kind) now correctly build the body from the full oneOf variant instead of silently dropping it to undefined; (2) DELETE methods with a request body (e.g. r2 delete_objects bulk-delete-by-list) now send that body instead of ignoring it; (3) oneOf/anyOf request body variants that are $ref (e.g. r2 sippy config) are now resolved to their real schema instead of collapsing to z.unknown(). Same generator fix as workers-scripts in #352, now caught up for these 7 services.
Changed: create_deployment was removed — it is no longer present in the
upstream Cloudflare API spec this extension is generated from.
Modified 1 behaviors
2026.07.27.1
Fixed: Regenerated from scripts/cloudflare-codegen after two generator
bugs were repaired (webframp/swamp-extensions#284).
Methods referencing an undeclared path parameter did not compile. The generator derived a method's arguments schema and execute signature from the OpenAPI
parameterslist, but built the request URL from the path template. Where the Cloudflare spec omits a declaration for a{placeholder}— which it does in several places — the result was a method witharguments: z.object({})and an unused_argsparameter whose body still interpolatedargs.<name>. Those methods failed type checking and were uncallable even if they had compiled, because the argument was never declared. Path-template placeholders are now unioned into the declared parameters, so the schema, the signature, and the body agree.Generated tests could request a URL the mock server did not serve. Test arguments merged the request-body fixture over the path-parameter values, so a body property sharing a name with a path parameter (commonly
id) substituted its own example value into the URL. The request then missed the mock and failed withCloudflare API error: Not found. Path parameters now take precedence, matching what the generated model already does by excluding path-parameter names from the request body.
Upgrade note: No API surface change and no method was added or removed. If
this extension type-checked and tested cleanly before, its behavior is unchanged
and only the version moved. Extensions that previously failed deno check or
deno task test now pass.
2026.07.19.1
Added: Initial code-generated release of @webframp/cloudflare/pages with 23 methods covering the Cloudflare pages API surface.
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License2/2earned
- Verified public repository2/2earned