@@ -54,6 +54,12 @@ service WatchPermissionSetsService {
5454 // cursor received. Once completed, the consumer may start streaming permission set changes using WatchPermissionSets
5555 // and the revision token from the last LookupPermissionSets response.
5656 rpc LookupPermissionSets (LookupPermissionSetsRequest ) returns (stream LookupPermissionSetsResponse ) {}
57+
58+ // DownloadPermissionSets returns URLs to download permission sets data as Avro files.
59+ // This provides an alternative to LookupPermissionSets for customers who need to download
60+ // large datasets efficiently. The returned URLs point to compressed Avro files containing
61+ // the permission sets data in a normalized format.
62+ rpc DownloadPermissionSets (DownloadPermissionSetsRequest ) returns (DownloadPermissionSetsResponse ) {}
5763}
5864
5965message WatchPermissionSetsRequest {
@@ -186,3 +192,21 @@ message BreakingSchemaChange {
186192 // change_at is the revision at which a breaking schema event has happened.
187193 authzed.api.v1.ZedToken change_at = 1 ;
188194}
195+
196+ message DownloadPermissionSetsRequest {
197+ // optional_at_revision is a specific revision to download; for now this will
198+ // just validate that it matches the backing store if provided.
199+ authzed.api.v1.ZedToken optional_at_revision = 1 ;
200+ }
201+
202+ message File {
203+ // name is the filename of the downloadable file
204+ string name = 1 ;
205+ // url is the download URL for the file (typically a signed S3 URL)
206+ string url = 2 ;
207+ }
208+
209+ message DownloadPermissionSetsResponse {
210+ // files contains the list of downloadable files with their URLs
211+ repeated File files = 1 ;
212+ }
0 commit comments