Skip to content

feat(storage): add purge_cache and purge_bucket_cache canonical capabilities - #44

Merged
grdsdev merged 6 commits into
mainfrom
claude/unruffled-ramanujan-912c1c
Jun 29, 2026
Merged

feat(storage): add purge_cache and purge_bucket_cache canonical capabilities#44
grdsdev merged 6 commits into
mainfrom
claude/unruffled-ramanujan-912c1c

Conversation

@grdsdev

@grdsdev grdsdev commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds storage.file_buckets.purge_cache — invalidate CDN cache for a specific object in a bucket (StorageFileApi.purgeCache(path))
  • Adds storage.file_buckets.purge_bucket_cache — invalidate CDN cache for all objects in a bucket (StorageBucketApi.purgeBucketCache())

Why

These capabilities were introduced in supabase/supabase-js#2429 and are now registered here as canonical features so SDK compliance files can reference them.

Notes for reviewers

  • Both features require a service_role JWT — anon/user JWT calls are rejected by the storage server.
  • Both require the purgeCache tenant feature to be enabled (self-hosted deployments also need CDN_PURGE_ENDPOINT_URL configured).
  • These are placed in the file_buckets group, consistent with the other file-level operations.
  • Validation (npm run validate) and the full test suite (125 tests) pass with no changes.

Registers two new canonical storage capabilities sourced from
supabase/supabase-js#2429:

- storage.file_buckets.purge_cache — invalidate CDN cache for a single
  object via StorageFileApi.purgeCache(path)
- storage.file_buckets.purge_bucket_cache — invalidate CDN cache for an
  entire bucket via StorageBucketApi.purgeBucketCache()

Both require a service_role JWT and the purgeCache tenant feature.
@grdsdev
grdsdev requested a review from a team as a code owner June 25, 2026 12:41
Adds human-readable specs for the two new CDN cache purge capabilities:

- specs/storage/file_buckets/purge_cache.md
- specs/storage/file_buckets/purge_bucket_cache.md

Covers the HTTP endpoint, behavioral contract, service_role requirement,
purgeCache tenant feature prerequisite, error conditions, and cross-links.

@QuintinWillison QuintinWillison left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's nice to see capabilities being added, resulting in a much smaller PR diff, much easier on the eyes for the human reviewers! 💪 ... just a couple of thoughts/questions...

Comment thread capabilities/storage.yaml Outdated
@grdsdev
grdsdev requested a review from QuintinWillison June 25, 2026 13:30
@grdsdev
grdsdev merged commit 9a6f864 into main Jun 29, 2026
3 checks passed
@grdsdev
grdsdev deleted the claude/unruffled-ramanujan-912c1c branch June 29, 2026 08:58
grdsdev pushed a commit that referenced this pull request Aug 12, 2026
🤖 I have created a release *beep* *boop*
---


## [1.0.0](v1.0.0...v1.0.0)
(2026-08-12)


### ⚠ BREAKING CHANGES

* reconcile capability matrix inconsistencies from skill audit
([#74](#74))

### Features

* add capabilities based on supabase-js public methods
([#19](#19))
([8b07e38](8b07e38))
* add capability-matrix maintenance skill
([#73](#73))
([070e2c9](070e2c9))
* add review-spec and review-spec-compliance skills
([#6](#6))
([b2646c1](b2646c1))
* add SDK implementation status matrix to README and skill
([#4](#4))
([753f06c](753f06c))
* **api-check:** include file path and line number in compliance failure
messages ([#45](#45))
([2f4be47](2f4be47))
* **auth:** add sign-out reason capability
([#47](#47))
([51a3abd](51a3abd))
* canonical SDK capability matrix
([#8](#8))
([215bc3e](215bc3e))
* **capability-matrix:** strict cross-SDK parity score + coverage scope
([#63](#63))
([de1abe1](de1abe1))
* CI check 1 — block PRs adding public API not in capability matrix
([#31](#31))
([293440c](293440c))
* **compliance:** list undeclared features after validation
([#48](#48))
([29f396a](29f396a))
* **compliance:** list undeclared features as notes after validation
([29f396a](29f396a))
* **compliance:** split symbol evidence from symbol coverage
([#75](#75))
([abc8e71](abc8e71))
* initial SDK specs, skills, and install script
([e662b17](e662b17))
* move SDK compliance to per-repo files
([#15](#15))
([4d32675](4d32675))
* **parsers:** add Dart public API parser via package:analyzer
(alternative to [#35](#35))
([#41](#41))
([e3ba07a](e3ba07a))
* **parsers:** add griffe-based Python public API surface parser
([#36](#36))
([c44f836](c44f836))
* **parsers:** replace Swift regex parser with swift-symbolgraph-extract
([#38](#38))
([80529a7](80529a7))
* **realtime:** add multiple postgres_changes filters capability
([#70](#70))
([825ab0c](825ab0c))
* reconcile capability matrix inconsistencies from skill audit
([#74](#74))
([9c53a70](9c53a70))
* rename sdk-parse-ignore to .sdk-parse-ignore
([#37](#37))
([4f4ab61](4f4ab61))
* render symbol names as clickable links in capability matrix
([#14](#14))
([dcaf122](dcaf122))
* show feature description as visible sub-text in capability matrix
([#13](#13))
([3a750ab](3a750ab))
* **site:** serve compliance.json with precomputed parity from GitHub
Pages ([#46](#46))
([0d9106c](0d9106c))
* **storage:** add purge_cache and purge_bucket_cache canonical
capabilities ([#44](#44))
([9a6f864](9a6f864))
* **storage:** add storage.errors.error_codes capability
([#71](#71))
([fabb9a7](fabb9a7))
* **storage:** add the five missing Iceberg catalog capabilities
([#76](#76))
([c3c8f9e](c3c8f9e))


### Bug Fixes

* **aggregate:** point csharp and go SDKs at correct repo slugs
([#62](#62))
([8b7320f](8b7320f))
* **aggregate:** point kotlin SDK at supabase-community/supabase-kt
([#61](#61))
([b1a99e9](b1a99e9))
* **capability-matrix:** correct coverage scope metric description
([#64](#64))
([5daeaf5](5daeaf5))
* **ci:** repair python pipeline and simplify sdk-compliance workflow
([#42](#42))
([2140f44](2140f44))
* **ci:** use nx to run docs:json so workspace deps are built first
([#56](#56))
([9b449bb](9b449bb))
* **dart-extractor:** exclude
[@internal-annotated](https://github.com/internal-annotated) symbols
from the public API surface
([9bd358e](9bd358e))
* **dart-extractor:** exclude [@internal](https://github.com/internal)
symbols from the public API surface
([#54](#54))
([9bd358e](9bd358e))
* remove broken sticky thead, add scroll-margin-top and group-row
borders ([#10](#10))
([68761cd](68761cd))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: supabase-releaser[bot] <223506987+supabase-releaser[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants