Skip to main content

Cloudflare/waiting Room

@webframp/cloudflare/waiting-roomv2026.10.21.1· Apache-2.0· 5d agoBEHAVIORS
01README

Cloudflare Waiting Room — traffic queuing, rules, events, analytics

02Release Notes

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.

Fixed: Create methods whose response carries no id wrote every result to one instance named created, so each call overwrote the previous one. They now name the instance by the response's id when present, else by the path parameter that scopes the call, else by a hash of the request arguments (secret arguments left out). Affected: create_a_custom_waiting_room_page_preview.

Upgrade note: Results earlier versions wrote to the created instance stay there; new runs write under the new names.

03Behaviors1
@webframp/cloudflare/waiting-roomv2026.10.21.1cloudflare/waiting_room.ts

Global Arguments

ArgumentTypeDescription
apiToken?stringCloudflare 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.
zoneIdstringCloudflare zone ID
fn list_waiting_rooms()
List waiting rooms for zone
fn create_waiting_room(additional_routes?: unknown, cookie_attributes?: unknown, cookie_suffix?: unknown, custom_page_html?: unknown, default_template_language?: unknown, description?: unknown, disable_session_renewal?: unknown, enabled_origin_commands?: unknown, host: unknown, json_response_enabled?: unknown, name: unknown, new_users_per_minute: unknown, path?: unknown, queue_all?: unknown, queueing_method?: unknown, queueing_status_code?: unknown, session_duration?: unknown, suspended?: unknown, total_active_users: unknown, turnstile_action?: unknown, turnstile_mode?: unknown)
Create waiting room
ArgumentTypeDescription
additional_routes?unknown
cookie_attributes?unknown
cookie_suffix?unknown
custom_page_html?unknown
default_template_language?unknown
description?unknown
disable_session_renewal?unknown
enabled_origin_commands?unknown
hostunknown
json_response_enabled?unknown
nameunknown
new_users_per_minuteunknown
path?unknown
queue_all?unknown
queueing_method?unknown
queueing_status_code?unknown
session_duration?unknown
suspended?unknown
total_active_usersunknown
turnstile_action?unknown
turnstile_mode?unknown
fn create_a_custom_waiting_room_page_preview(custom_html: unknown)
Create a custom waiting room page preview
ArgumentTypeDescription
custom_htmlunknown
fn get_zone_settings()
Get zone-level Waiting Room settings
fn update_zone_settings(search_engine_crawler_bypass?: unknown)
Update zone-level Waiting Room settings
ArgumentTypeDescription
search_engine_crawler_bypass?unknown
fn patch_zone_settings(search_engine_crawler_bypass?: unknown)
Patch zone-level Waiting Room settings
ArgumentTypeDescription
search_engine_crawler_bypass?unknown
fn get_waiting_room_waiting_room_details(waiting_room_id: string)
Waiting room details
ArgumentTypeDescription
waiting_room_idstring
fn update_waiting_room(waiting_room_id: string, additional_routes?: unknown, cookie_attributes?: unknown, cookie_suffix?: unknown, custom_page_html?: unknown, default_template_language?: unknown, description?: unknown, disable_session_renewal?: unknown, enabled_origin_commands?: unknown, host: unknown, json_response_enabled?: unknown, name: unknown, new_users_per_minute: unknown, path?: unknown, queue_all?: unknown, queueing_method?: unknown, queueing_status_code?: unknown, session_duration?: unknown, suspended?: unknown, total_active_users: unknown, turnstile_action?: unknown, turnstile_mode?: unknown)
Update waiting room
ArgumentTypeDescription
waiting_room_idstring
additional_routes?unknown
cookie_attributes?unknown
cookie_suffix?unknown
custom_page_html?unknown
default_template_language?unknown
description?unknown
disable_session_renewal?unknown
enabled_origin_commands?unknown
hostunknown
json_response_enabled?unknown
nameunknown
new_users_per_minuteunknown
path?unknown
queue_all?unknown
queueing_method?unknown
queueing_status_code?unknown
session_duration?unknown
suspended?unknown
total_active_usersunknown
turnstile_action?unknown
turnstile_mode?unknown
fn patch_waiting_room(waiting_room_id: string, additional_routes?: unknown, cookie_attributes?: unknown, cookie_suffix?: unknown, custom_page_html?: unknown, default_template_language?: unknown, description?: unknown, disable_session_renewal?: unknown, enabled_origin_commands?: unknown, host: unknown, json_response_enabled?: unknown, name: unknown, new_users_per_minute: unknown, path?: unknown, queue_all?: unknown, queueing_method?: unknown, queueing_status_code?: unknown, session_duration?: unknown, suspended?: unknown, total_active_users: unknown, turnstile_action?: unknown, turnstile_mode?: unknown)
Patch waiting room
ArgumentTypeDescription
waiting_room_idstring
additional_routes?unknown
cookie_attributes?unknown
cookie_suffix?unknown
custom_page_html?unknown
default_template_language?unknown
description?unknown
disable_session_renewal?unknown
enabled_origin_commands?unknown
hostunknown
json_response_enabled?unknown
nameunknown
new_users_per_minuteunknown
path?unknown
queue_all?unknown
queueing_method?unknown
queueing_status_code?unknown
session_duration?unknown
suspended?unknown
total_active_usersunknown
turnstile_action?unknown
turnstile_mode?unknown
fn delete_waiting_room(waiting_room_id: string)
Delete waiting room
ArgumentTypeDescription
waiting_room_idstring
fn list_events(waiting_room_id: string)
List events
ArgumentTypeDescription
waiting_room_idstring
fn create_event(waiting_room_id: string, custom_page_html?: unknown, description?: unknown, disable_session_renewal?: unknown, event_end_time: unknown, event_start_time: unknown, name: unknown, new_users_per_minute?: unknown, prequeue_start_time?: unknown, queueing_method?: unknown, session_duration?: unknown, shuffle_at_event_start?: unknown, suspended?: unknown, total_active_users?: unknown, turnstile_action?: unknown, turnstile_mode?: unknown)
Create event
ArgumentTypeDescription
waiting_room_idstring
custom_page_html?unknown
description?unknown
disable_session_renewal?unknown
event_end_timeunknown
event_start_timeunknown
nameunknown
new_users_per_minute?unknown
prequeue_start_time?unknown
queueing_method?unknown
session_duration?unknown
shuffle_at_event_start?unknown
suspended?unknown
total_active_users?unknown
turnstile_action?unknown
turnstile_mode?unknown
fn get_waiting_room_event_details(event_id: string, waiting_room_id: string)
Event details
ArgumentTypeDescription
event_idstring
waiting_room_idstring
fn update_event(event_id: string, waiting_room_id: string, custom_page_html?: unknown, description?: unknown, disable_session_renewal?: unknown, event_end_time: unknown, event_start_time: unknown, name: unknown, new_users_per_minute?: unknown, prequeue_start_time?: unknown, queueing_method?: unknown, session_duration?: unknown, shuffle_at_event_start?: unknown, suspended?: unknown, total_active_users?: unknown, turnstile_action?: unknown, turnstile_mode?: unknown)
Update event
ArgumentTypeDescription
event_idstring
waiting_room_idstring
custom_page_html?unknown
description?unknown
disable_session_renewal?unknown
event_end_timeunknown
event_start_timeunknown
nameunknown
new_users_per_minute?unknown
prequeue_start_time?unknown
queueing_method?unknown
session_duration?unknown
shuffle_at_event_start?unknown
suspended?unknown
total_active_users?unknown
turnstile_action?unknown
turnstile_mode?unknown
fn patch_event(event_id: string, waiting_room_id: string, custom_page_html?: unknown, description?: unknown, disable_session_renewal?: unknown, event_end_time: unknown, event_start_time: unknown, name: unknown, new_users_per_minute?: unknown, prequeue_start_time?: unknown, queueing_method?: unknown, session_duration?: unknown, shuffle_at_event_start?: unknown, suspended?: unknown, total_active_users?: unknown, turnstile_action?: unknown, turnstile_mode?: unknown)
Patch event
ArgumentTypeDescription
event_idstring
waiting_room_idstring
custom_page_html?unknown
description?unknown
disable_session_renewal?unknown
event_end_timeunknown
event_start_timeunknown
nameunknown
new_users_per_minute?unknown
prequeue_start_time?unknown
queueing_method?unknown
session_duration?unknown
shuffle_at_event_start?unknown
suspended?unknown
total_active_users?unknown
turnstile_action?unknown
turnstile_mode?unknown
fn delete_event(event_id: string, waiting_room_id: string)
Delete event
ArgumentTypeDescription
event_idstring
waiting_room_idstring
fn get_waiting_room_preview_active_event_details(event_id: string, waiting_room_id: string)
Preview active event details
ArgumentTypeDescription
event_idstring
waiting_room_idstring
fn list_waiting_room_rules(waiting_room_id: string)
List Waiting Room Rules
ArgumentTypeDescription
waiting_room_idstring
fn create_waiting_room_rule(waiting_room_id: string, action: unknown, description?: unknown, enabled?: unknown, expression: unknown)
Create Waiting Room Rule
ArgumentTypeDescription
waiting_room_idstring
actionunknown
description?unknown
enabled?unknown
expressionunknown
fn update_waiting_room_replace_waiting_room_rules(waiting_room_id: string, items: array)
Replace Waiting Room Rules
ArgumentTypeDescription
waiting_room_idstring
itemsarray
fn patch_waiting_room_rule(rule_id: string, waiting_room_id: string, action: unknown, description?: unknown, enabled?: unknown, expression: unknown, position?: unknown)
Patch Waiting Room Rule
ArgumentTypeDescription
rule_idstring
waiting_room_idstring
actionunknown
description?unknown
enabled?unknown
expressionunknown
position?unknown
fn delete_waiting_room_rule(rule_id: string, waiting_room_id: string)
Delete Waiting Room Rule
ArgumentTypeDescription
rule_idstring
waiting_room_idstring
fn get_waiting_room_status(waiting_room_id: string)
Get waiting room status
ArgumentTypeDescription
waiting_room_idstring

Resources

waiting_rooms(infinite)— List waiting rooms for zone
waiting_room(infinite)— Create waiting room
a_custom_waiting_room_page_preview(infinite)— Create a custom waiting room page preview
zone_settings(infinite)— Get zone-level Waiting Room settings
patch_zone_settings(infinite)— Patch zone-level Waiting Room settings
waiting_room_waiting_room_details(infinite)— Waiting room details
patch_waiting_room(infinite)— Patch waiting room
events(infinite)— List events
event(infinite)— Create event
waiting_room_event_details(infinite)— Event details
patch_event(infinite)— Patch event
waiting_room_preview_active_event_details(infinite)— Preview active event details
waiting_room_rules(infinite)— List Waiting Room Rules
waiting_room_rule(infinite)— Create Waiting Room Rule
waiting_room_replace_waiting_room_rules(infinite)— Replace Waiting Room Rules
patch_waiting_room_rule(infinite)— Patch Waiting Room Rule
waiting_room_status(infinite)— Get waiting room status
04Previous Versions12
2026.10.14.1Apache-2.0(was none)

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 zone_settings-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

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

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

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

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

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

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

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

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.1

2026.08.21.1

Changed: Errors and validation now say what went wrong and where.

  • Cloudflare API failures (HTTP errors and success: false API responses) now name the HTTP method and path that was attempted, in addition to the original status/message. Previously the error read only Cloudflare API error: <message>, with no indication of which endpoint the method call was hitting — now it reads Cloudflare API request failed: GET /zones/<zone>/waiting_rooms/<id>: <message>. This applies to every method on this model, since they all share the same request helper.
  • waiting_room_id and event_id are now validated as non-empty before any request is made. Passing an empty string previously sent a request to a malformed URL and produced a confusing 404 from Cloudflare; each now fails fast with a <field> must not be empty message.

Upgrade note: No method was added, removed, or renamed. Existing callers that always pass non-empty identifiers see no behavioral change beyond clearer error text.

2026.07.27.1

2026.07.27.1

Fixed: Regenerated from scripts/cloudflare-codegen after two generator bugs were repaired (webframp/swamp-extensions#284).

  1. Methods referencing an undeclared path parameter did not compile. The generator derived a method's arguments schema and execute signature from the OpenAPI parameters list, 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 with arguments: z.object({}) and an unused _args parameter whose body still interpolated args.<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.

  2. 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 with Cloudflare 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

2026.07.19.1

Added: Initial code-generated release of @webframp/cloudflare/waiting-room with 23 methods covering the Cloudflare waiting room API surface.

05Stats
A
100 / 100
Downloads
32
Archive size
17.3 KB
  • 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
06Platforms
07Labels