Capability Library · Pack detail

cloudflare v1.0.0

Cloudflare API v4: list zones and DNS records, create, edit and delete DNS records, and purge a zone's cache.

Review state: draft· Not in the distributable release manifest

Release identity

SHA-256 of the pack file bytes: d9319abe94ec5f85722db68df43c9c2bf496d9ea93f355527716c5d10dae0c14

Not in the distributable release manifest. The binary carries a digest-bound manifest of the distributable library; a pack whose bytes differ from its manifest entry — endpoint, tier, allowlist, or credential edited, with provider, version, and review block preserved — fails the digest check, loses distributability, and renders MODIFIED rather than as the shipped reviewed artifact. Review state and artifact status are different facts: the first is a documentation-review declaration, the second is the identity of the exact bytes.

Capabilities (6)

cloudflare.zones.read v1.0.0R0

Action
read
Endpoint
GET https://api.cloudflare.invalid/client/v4/zones
Connector
http
Custody
customer_vault
Credential ref
secret-ref-cloudflare-api-token
Data class
internal

List the zones in the account: domain names, plan, status and name servers, which reveal the customer's public-facing estate. The registered path covers the collection read only — single-zone reads (GET /zones/{zone_id}) and zone creation or deletion are not registered by this pack. The host is a reserved placeholder: substitute the real API authority before enabling.

cloudflare.dns_records.read v1.0.0R0

Action
read
Endpoint
GET https://api.cloudflare.invalid/client/v4/zones/ZONE_ID/dns_records
Connector
http
Custody
customer_vault
Credential ref
secret-ref-cloudflare-api-token
Data class
internal

List, search, sort and filter one zone's DNS records: names, types, contents, TTLs and proxy state, which reveal internal infrastructure topology; per the retrieved reference the endpoint accepts the DNS Read or DNS Write permission and takes its filters as query string parameters. The registered path covers the collection read only — single-record reads (GET /zones/{zone_id}/dns_records/{dns_record_id}) are not registered. ZONE_ID is a placeholder the deployment binds before enabling.

cloudflare.dns_records.create v1.0.0R3

Actions
create, deploy
Endpoint
POST https://api.cloudflare.invalid/client/v4/zones/ZONE_ID/dns_records
Connector
http
Custody
customer_vault
Credential ref
secret-ref-cloudflare-api-token
Data class
internal

Create one DNS record in one zone with the caller-supplied type, name, content, TTL and proxy state in the request body. Registered as create AND deploy at the R3 floor: per the retrieved create reference the body selects the record's type, name, content and proxy state, and a new A, AAAA, CNAME or MX record starts answering production DNS queries for its name within moments — provisioning live traffic routing, a deploy-equivalent effect, and deploy is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer). This registration does not restrict which record type or content the body may carry; that choice lives with the token's DNS Write permission and the deployment's review. ZONE_ID is a placeholder the deployment binds before enabling.

cloudflare.dns_records.update v1.0.0R3

Actions
update, deploy
Endpoint
PATCH https://api.cloudflare.invalid/client/v4/zones/ZONE_ID/dns_records/DNS_RECORD_ID
Connector
http
Custody
customer_vault
Credential ref
secret-ref-cloudflare-api-token
Data class
internal

Partially edit one DNS record (the PATCH overwrite-partial form; the PUT full-overwrite form is deliberately not registered). Registered as update AND deploy at the R3 floor: per the retrieved edit reference the caller-controlled body can change the record's content, type-relevant fields and the proxied flag, and changing an A, AAAA, CNAME or MX record's content repoints production traffic for that name — a deploy-equivalent reconfiguration of live traffic routing, and deploy is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer). This registration does not restrict which fields the body may change. ZONE_ID and DNS_RECORD_ID are placeholders the deployment binds before enabling.

cloudflare.dns_records.delete v1.0.0R3

Action
delete
Endpoint
DELETE https://api.cloudflare.invalid/client/v4/zones/ZONE_ID/dns_records/DNS_RECORD_ID
Connector
http
Custody
customer_vault
Credential ref
secret-ref-cloudflare-api-token
Data class
internal

Delete one DNS record. Delete is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer) at the R3 floor, and the operational effect is name-resolution removal: once the record is gone the name stops being answered with that record's content — subject to resolver caching of prior answers and to other records at the same name, so the timing and extent of any client-visible outage vary and are not guaranteed by this registration; re-creating the record later is a new record with a new id, not an undo of this call. ZONE_ID and DNS_RECORD_ID are placeholders the deployment binds before enabling.

cloudflare.cache.purge v1.0.0R3

Action
delete
Endpoint
POST https://api.cloudflare.invalid/client/v4/zones/ZONE_ID/purge_cache
Connector
http
Custody
customer_vault
Credential ref
secret-ref-cloudflare-api-token
Data class
internal

Purge cached content for one zone; requires the Cache Purge permission. Judged by effect: the caller-controlled body accepts purge_everything=true, which per the retrieved purge reference removes ALL files from the zone's cache in every Cloudflare data center and sends every subsequent request back to the origin until the cache refills — a high-blast-radius burst of origin load that cannot be un-purged — so an unrestricted body defeats any lower tier, and the capability registers as delete at the R3 floor with purge treated as an irreversible-action equivalent. The same body also accepts granular purges by files, tags, hosts or prefixes; this registration does not restrict which form the body carries. ZONE_ID is a placeholder the deployment binds before enabling.

Credential reference

The pack names a reference, never a secret. Installing a pack registers capabilities and makes them governable; registration is not connectivity. The credential is created at the provider and held in the client's own secret manager under the reference the pack names, and deployment testing is still required to show the credential path works and cannot be bypassed.

Reference
secret-ref-cloudflare-api-token
Custody
customer_vault
Injection
header (Authorization)

A Cloudflare API token for the customer's own account, held in the client's own secret manager. The stored material must be the complete Authorization header value: the scheme 'Bearer', one separating space, then the token — 'Bearer <token>'. Issuance is external: a user creates the token in the Cloudflare dashboard (My Profile > API Tokens), choosing the token's permission groups and the zones and accounts it covers; the token value is shown once at creation, so capture it into the vault at that moment. Least privilege: grant only the permissions the registered capabilities need — Zone.Zone Read for the zone collection read, Zone.DNS Read/Edit on the bound zone(s) for the DNS capabilities (per the retrieved DNS records list reference, the endpoint accepts DNS Read or DNS Write), and Cache Purge only where the purge capability is enabled — and scope the token to the specific zones the deployment binds, not All zones. Expiry and revocation: a token may be created with an optional TTL, after which it fails closed, but a token without one does not expire on its own; revocation is rolling or deleting the token in the dashboard — the token-roll operation's documentation was not retrievable in this session, so the previous value's exact invalidation timing after a roll (including any grace period) is unverified here and must be confirmed against Cloudflare's roll-token reference before relying on roll as a revocation mechanism; deleting a token is immediate — and disabling issuance, or the creating user losing permission to create tokens, does NOT invalidate tokens already issued: each issued token must be rolled or deleted individually. Rotation therefore sits with an external deployment process: the executor injects the stored value verbatim and performs no token lifecycle of its own. Two-header honesty: Cloudflare also still accepts the legacy Global API Key scheme, which authenticates with TWO headers — X-Auth-Email (the account email) plus X-Auth-Key (the global key); per the retrieved get-started reference the Global API Key is the previous scheme and is less secure than API tokens, and this pack registers the single Bearer header only — a deployment that insists on the legacy key must wire both headers itself and accept that the global key is unscoped and grants everything the account can do. Executor hygiene: the value must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack.

Resources

  • cloudflare-account (api, internal): https://api.cloudflare.invalid/client/v4/zones
  • cloudflare-zone (site, internal): https://api.cloudflare.invalid/client/v4/zones/ZONE_ID

Pack notes and exclusions

The endpoint host 'api.cloudflare.invalid' is a reserved non-production placeholder (an RFC 2606 reserved TLD): substitute the real Cloudflare API authority (api.cloudflare.com, or the customer's API host for a partner/custom deployment) before enabling, in every endpoint, in the resource locators and in every egress allowlist entry. The allowlist matches exactly, so endpoints and allowlist must be substituted together, and substitution is a required deployment step. ZONE_ID and DNS_RECORD_ID in the endpoint paths are placeholders the deployment binds to concrete identifiers before enabling. Every read endpoint here is a COLLECTION read: single-record reads (GET one zone, GET one DNS record) are not registered. Tiering rationale: DNS record creation registers as create AND deploy, and edit as update AND deploy, at the R3 floor: creating or editing A, AAAA, CNAME or MX records provisions or reroutes production traffic routing — a deploy-equivalent effect on live infrastructure, and deploy is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer) — so no lower tier is honest; only the partial-edit PATCH is registered, not the PUT overwrite. DNS record deletion registers as delete at the R3 floor: removing the record that resolves a name can take the service behind it offline — the outage is neither immediate nor guaranteed, because resolver caches and unexpired TTLs can keep stale answers alive until they lapse — and delete is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer). Cache purge registers as delete at the R3 floor, judged by effect: the endpoint's caller-controlled body accepts purge_everything=true, which per the retrieved purge reference removes ALL files from the zone's cache in every Cloudflare data center and forces all subsequent requests back to the origin — a high-blast-radius burst of origin load — so an unrestricted body defeats any lower tier, and purge is treated as an irreversible-action equivalent. Documented exclusions — this pack does not register: zone creation and zone deletion (DELETE /zones/{zone_id} removes the whole zone and every record and setting in it), the DNS record PUT overwrite, zone settings changes (SSL mode, security level, TLS minimum), WAF and firewall rules, Page Rules and cache rules, Workers scripts and routes, Load Balancers, API token creation/verification/roll and user or account membership management, registrar operations, and every other Cloudflare API — a documented exclusion, not an approximated capability.

Review record

Draft review record dated 2026-09-21 · Reviewer: aaes-eng (an opaque id that resolves internally to the responsible reviewer)

A pack review is not a vendor or examiner attestation. A retrieval date says when a source page was read; it does not by itself establish what the page said then. No pack is vendor-endorsed, and none has been connectivity-tested against a live vendor tenant.