Updatesapi-cloudflare

Cloudflare API: 20 Changes in R2 Catalog, Maintenance Configs

5d6fa2aca35419ae998ee606Verified February 24, 2026

TL;DR

  • Default values for max_snapshot_age, min_snapshots_to_keep, and target_size_mb have been removed from API responses across all R2 Catalog endpoints.
  • Any client code that relied on the API schema's declared defaults (7d, 3.00, 128) to infer omitted field values will now receive those fields without a fallback hint.
  • The removal affects four distinct resource paths, including both bucket-level and table-level maintenance configuration endpoints.
  • Request body defaults for an unnamed property (target_size_mb-equivalent, value 128) have also been dropped from the two maintenance-configs write endpoints.
  • This is a schema-level change — the API may still apply server-side defaults, but clients can no longer rely on the OpenAPI spec to document what those defaults are.
  • ---

    What Changed

    #### Behavior

    Response schema defaults removed across all R2 Catalog endpoints

    Three response properties lost their declared default values in 200 responses across every affected resource:

    | Property | Former Default | Affected Resources |

    |---|---|---|

    | max_snapshot_age | 7d | All four paths |

    | min_snapshots_to_keep | 3.00 | All four paths |

    | target_size_mb | 128 | All four paths |

    The affected paths are:

  • /accounts/{account_id}/r2-catalog
  • /accounts/{account_id}/r2-catalog/{bucket_name}
  • /accounts/{account_id}/r2-catalog/{bucket_name}/maintenance-configs
  • /accounts/{account_id}/r2-catalog/{bucket_name}/namespaces/{namespace}/tables/{table_name}/maintenance-configs
  • When a field has a declared schema default, OpenAPI-aware tooling (code generators, mock servers, validation libraries) can substitute that value when the field is absent from a response. Removing the default means that tooling will no longer perform that substitution automatically, and any generated client that baked in those defaults at build time may now behave differently from the live API.

    Request body defaults removed from maintenance-configs write endpoints

    On both maintenance-configs endpoints (bucket-level and table-level), a request body property — identified in the diff as an unnamed field with a former default of 128 — no longer carries a declared default. This affects how SDK generators and form-filling tools pre-populate request payloads. Clients that omit this field and expected the schema default to communicate the server's assumed value should now explicitly supply the intended value or consult updated documentation.

    ---

    Who's Impacted

    If you use an auto-generated SDK or client library built from the Cloudflare OpenAPI spec, you may find that fields previously populated by schema defaults (max_snapshot_age, min_snapshots_to_keep, target_size_mb) are now returned as null or absent in deserialized objects, depending on how your generator handles missing defaults.

    If you write integration tests or contract tests that assert on default field values from the R2 Catalog API schema, those assertions will likely fail because the schema no longer declares those defaults as authoritative.

    If you operate a mock server seeded from the Cloudflare API spec, responses for any of the four affected paths will no longer include the former defaults (7d, 3.00, 128) in mock payloads, which could cause downstream test environments to diverge from expected behavior.

    If you submit maintenance configuration requests to either maintenance-configs endpoint without explicitly setting the target_size_mb-equivalent field, you can no longer rely on the schema to communicate what value the server will assume — explicit values in request bodies are now advisable.

    ---

    Action Checklist

  • ☐ Audit all generated client libraries built from the Cloudflare API spec and check whether max_snapshot_age, min_snapshots_to_keep, or target_size_mb defaults were baked in at generation time.
  • ☐ Regenerate any affected SDKs from the updated spec (commit 19ae998ee606) to pick up the schema changes.
  • ☐ Review application logic that reads max_snapshot_age from R2 Catalog responses and ensure it handles a missing or null value without assuming 7d.
  • ☐ Apply the same null-safety review to min_snapshots_to_keep — code that assumed 3 (or 3.00) as a fallback should now define that fallback explicitly in application code.
  • ☐ Check all code paths that consume target_size_mb from responses; add explicit default handling (e.g., value ?? 128) if your application logic depends on a specific fallback.
  • ☐ Inspect request-building code for both maintenance-configs endpoints and confirm that the unnamed request property (formerly defaulting to 128) is now set explicitly in all call sites.
  • ☐ Update mock server configurations or recorded fixtures for /accounts/{account_id}/r2-catalog to remove or adjust the previously declared defaults.
  • ☐ Update mock server configurations for /accounts/{account_id}/r2-catalog/{bucket_name} similarly.
  • ☐ Update mock server configurations for /accounts/{account_id}/r2-catalog/{bucket_name}/maintenance-configs.
  • ☐ Update mock server configurations for /accounts/{account_id}/r2-catalog/{bucket_name}/namespaces/{namespace}/tables/{table_name}/maintenance-configs.
  • ☐ Review contract tests or schema validation tests that assert on the presence or value of max_snapshot_age, min_snapshots_to_keep, or target_size_mb defaults and update expected values accordingly.
  • ☐ Confirm with the Cloudflare team (or via live API testing) what server-side defaults, if any, are still applied when these fields are omitted from requests — the schema no longer documents them.
  • ☐ Update internal API documentation or runbooks that referenced the former defaults (7d, 3.00, 128) to reflect that these are no longer schema-declared.
  • ☐ Check monitoring or alerting logic that parses maintenance config responses; ensure alert thresholds are not implicitly derived from the removed schema defaults.
  • ☐ Validate that CI pipelines running schema-diff or linting checks against the old spec version are updated to reference 19ae998ee606 as the new baseline.
  • ---

    Verification

  • Commit 19ae998ee606 — [https://github.com/cloudflare/api-schemas/commit/19ae998ee60668d865e488d3dac0366adda82e5c](https://github.com/cloudflare/api-schemas/commit/19ae998ee60668d865e488d3dac0366adda82e5c)
  • Cloudflare API Spec Diff (5d6fa2aca354 → 19ae998ee606) — [https://github.com/cloudflare/api-schemas/compare/5d6fa2aca354082c198dc05ed0aa5c4cf49f3f36...19ae998ee60668d865e488d3dac0366adda82e5c](https://github.com/cloudflare/api-schemas/compare/5d6fa2aca354082c198dc05ed0aa5c4cf49f3f36...19ae998ee60668d865e488d3dac0366adda82e5c)
  • _Last verified: 2026-02-24T16:58:09Z_

    📎 Sources

    Cloudflare API: 20 Changes in R2 Catalog, Maintenance Configs | Brief Stack