Skip to main content

nominal_api_proto/proto/
nominal.file_store.v1.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct Attribution {
4    #[prost(message, optional, tag = "1")]
5    pub time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
6    #[prost(string, tag = "2")]
7    pub user_rid: ::prost::alloc::string::String,
8}
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct Drive {
11    #[prost(string, tag = "1")]
12    pub rid: ::prost::alloc::string::String,
13    #[prost(string, tag = "2")]
14    pub workspace_rid: ::prost::alloc::string::String,
15    #[prost(string, tag = "3")]
16    pub id: ::prost::alloc::string::String,
17    #[prost(enumeration = "DriveState", tag = "4")]
18    pub state: i32,
19    #[prost(message, optional, tag = "5")]
20    pub created: ::core::option::Option<Attribution>,
21    #[prost(enumeration = "DriveSource", tag = "6")]
22    pub source: i32,
23    #[prost(enumeration = "DriveMutability", tag = "7")]
24    pub content_mutability: i32,
25    #[prost(string, optional, tag = "8")]
26    pub description: ::core::option::Option<::prost::alloc::string::String>,
27}
28#[derive(Clone, PartialEq, ::prost::Message)]
29pub struct VirtualDrive {
30    #[prost(string, tag = "1")]
31    pub drive_rid: ::prost::alloc::string::String,
32    #[prost(message, optional, tag = "2")]
33    pub connection_details: ::core::option::Option<VirtualDriveConnectionDetails>,
34    #[prost(message, optional, tag = "3")]
35    pub status: ::core::option::Option<VirtualDriveStatus>,
36}
37#[derive(Clone, PartialEq, ::prost::Message)]
38pub struct VirtualDriveDetails {
39    #[prost(string, tag = "1")]
40    pub drive_rid: ::prost::alloc::string::String,
41    #[prost(message, optional, tag = "2")]
42    pub connection_details: ::core::option::Option<VirtualDriveConnectionDetails>,
43}
44#[derive(Clone, PartialEq, ::prost::Message)]
45pub struct VirtualDriveStatus {
46    #[prost(enumeration = "VirtualDriveState", tag = "1")]
47    pub state: i32,
48    #[prost(message, optional, tag = "2")]
49    pub last_successful_check_time: ::core::option::Option<
50        super::super::super::google::protobuf::Timestamp,
51    >,
52    #[prost(string, tag = "3")]
53    pub message: ::prost::alloc::string::String,
54}
55#[derive(Clone, PartialEq, ::prost::Message)]
56pub struct VirtualDriveConnectionDetails {
57    #[prost(oneof = "virtual_drive_connection_details::Details", tags = "1, 2, 3")]
58    pub details: ::core::option::Option<virtual_drive_connection_details::Details>,
59}
60/// Nested message and enum types in `VirtualDriveConnectionDetails`.
61pub mod virtual_drive_connection_details {
62    #[derive(Clone, PartialEq, ::prost::Oneof)]
63    pub enum Details {
64        #[prost(message, tag = "1")]
65        S3(super::S3VirtualDriveConnectionDetails),
66        #[prost(message, tag = "2")]
67        GoogleDrive(super::GoogleDriveVirtualDriveConnectionDetails),
68        #[prost(message, tag = "3")]
69        Gcs(super::GcsVirtualDriveConnectionDetails),
70    }
71}
72#[derive(Clone, PartialEq, ::prost::Message)]
73pub struct S3VirtualDriveConnectionDetails {
74    #[prost(string, tag = "1")]
75    pub bucket: ::prost::alloc::string::String,
76    #[prost(string, tag = "2")]
77    pub prefix: ::prost::alloc::string::String,
78    #[prost(string, tag = "3")]
79    pub credentials_secret_rid: ::prost::alloc::string::String,
80    #[prost(string, tag = "4")]
81    pub endpoint: ::prost::alloc::string::String,
82    #[prost(string, optional, tag = "5")]
83    pub region: ::core::option::Option<::prost::alloc::string::String>,
84    #[prost(message, optional, tag = "6")]
85    pub assume_role: ::core::option::Option<S3AssumeRoleCredentials>,
86}
87#[derive(Clone, PartialEq, ::prost::Message)]
88pub struct S3AssumeRoleCredentials {
89    #[prost(string, tag = "1")]
90    pub role_arn: ::prost::alloc::string::String,
91    #[prost(string, tag = "2")]
92    pub external_id: ::prost::alloc::string::String,
93}
94#[derive(Clone, PartialEq, ::prost::Message)]
95pub struct GoogleDriveVirtualDriveConnectionDetails {
96    #[prost(string, tag = "1")]
97    pub folder_id: ::prost::alloc::string::String,
98    #[prost(string, tag = "2")]
99    pub credentials_secret_rid: ::prost::alloc::string::String,
100}
101#[derive(Clone, PartialEq, ::prost::Message)]
102pub struct GcsVirtualDriveConnectionDetails {
103    #[prost(string, tag = "1")]
104    pub bucket: ::prost::alloc::string::String,
105    #[prost(string, tag = "2")]
106    pub prefix: ::prost::alloc::string::String,
107    #[prost(string, tag = "3")]
108    pub credentials_secret_rid: ::prost::alloc::string::String,
109}
110#[derive(Clone, PartialEq, ::prost::Message)]
111pub struct LogicalPath {
112    #[prost(string, tag = "1")]
113    pub path: ::prost::alloc::string::String,
114}
115#[derive(Clone, PartialEq, ::prost::Message)]
116pub struct LogicalFile {
117    #[prost(message, optional, tag = "1")]
118    pub identity: ::core::option::Option<LogicalFileIdentity>,
119    #[prost(message, optional, tag = "2")]
120    pub path: ::core::option::Option<LogicalPath>,
121    #[prost(enumeration = "FileState", tag = "3")]
122    pub state: i32,
123    #[prost(message, optional, tag = "4")]
124    pub created: ::core::option::Option<Attribution>,
125    #[prost(uint64, tag = "5")]
126    pub size_bytes: u64,
127    #[prost(message, optional, tag = "6")]
128    pub observed: ::core::option::Option<Attribution>,
129    #[prost(message, optional, tag = "7")]
130    pub current_revision: ::core::option::Option<FileRevisionRef>,
131    #[prost(enumeration = "DownloadAvailability", tag = "8")]
132    pub download_availability: i32,
133}
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct LogicalFileIdentity {
136    #[prost(oneof = "logical_file_identity::Identity", tags = "1, 2")]
137    pub identity: ::core::option::Option<logical_file_identity::Identity>,
138}
139/// Nested message and enum types in `LogicalFileIdentity`.
140pub mod logical_file_identity {
141    #[derive(Clone, PartialEq, ::prost::Oneof)]
142    pub enum Identity {
143        #[prost(message, tag = "1")]
144        Managed(super::ManagedFileIdentity),
145        #[prost(message, tag = "2")]
146        Virtual(super::VirtualFileIdentity),
147    }
148}
149#[derive(Clone, PartialEq, ::prost::Message)]
150pub struct ManagedFileIdentity {
151    #[prost(string, tag = "1")]
152    pub file_rid: ::prost::alloc::string::String,
153}
154#[derive(Clone, PartialEq, ::prost::Message)]
155pub struct VirtualFileIdentity {
156    #[prost(oneof = "virtual_file_identity::Kind", tags = "1, 2, 3")]
157    pub kind: ::core::option::Option<virtual_file_identity::Kind>,
158}
159/// Nested message and enum types in `VirtualFileIdentity`.
160pub mod virtual_file_identity {
161    #[derive(Clone, PartialEq, ::prost::Oneof)]
162    pub enum Kind {
163        #[prost(message, tag = "1")]
164        S3(super::S3FileIdentity),
165        #[prost(message, tag = "2")]
166        GoogleDrive(super::GoogleDriveFileIdentity),
167        #[prost(message, tag = "3")]
168        Gcs(super::GcsFileIdentity),
169    }
170}
171#[derive(Clone, PartialEq, ::prost::Message)]
172pub struct S3FileIdentity {
173    #[prost(string, tag = "1")]
174    pub drive_rid: ::prost::alloc::string::String,
175    #[prost(string, tag = "2")]
176    pub path: ::prost::alloc::string::String,
177}
178#[derive(Clone, PartialEq, ::prost::Message)]
179pub struct GoogleDriveFileIdentity {
180    #[prost(string, tag = "1")]
181    pub drive_rid: ::prost::alloc::string::String,
182    #[prost(string, tag = "2")]
183    pub file_id: ::prost::alloc::string::String,
184}
185#[derive(Clone, PartialEq, ::prost::Message)]
186pub struct GcsFileIdentity {
187    #[prost(string, tag = "1")]
188    pub drive_rid: ::prost::alloc::string::String,
189    #[prost(string, tag = "2")]
190    pub path: ::prost::alloc::string::String,
191}
192#[derive(Clone, PartialEq, ::prost::Message)]
193pub struct FileRevisionAction {
194    #[prost(oneof = "file_revision_action::Kind", tags = "1, 2, 3, 4")]
195    pub kind: ::core::option::Option<file_revision_action::Kind>,
196}
197/// Nested message and enum types in `FileRevisionAction`.
198pub mod file_revision_action {
199    #[derive(Clone, PartialEq, ::prost::Oneof)]
200    pub enum Kind {
201        #[prost(message, tag = "1")]
202        Put(super::FilePut),
203        #[prost(message, tag = "2")]
204        Moved(super::FileMoved),
205        #[prost(message, tag = "3")]
206        Removed(super::FileRemoved),
207        #[prost(message, tag = "4")]
208        Restored(super::FileRestored),
209    }
210}
211#[derive(Clone, Copy, PartialEq, ::prost::Message)]
212pub struct FilePut {}
213#[derive(Clone, PartialEq, ::prost::Message)]
214pub struct FileMoved {
215    #[prost(string, optional, tag = "1")]
216    pub source_revision_rid: ::core::option::Option<::prost::alloc::string::String>,
217}
218#[derive(Clone, PartialEq, ::prost::Message)]
219pub struct FileRemoved {
220    #[prost(string, optional, tag = "1")]
221    pub removed_revision_rid: ::core::option::Option<::prost::alloc::string::String>,
222}
223#[derive(Clone, PartialEq, ::prost::Message)]
224pub struct FileRestored {
225    #[prost(string, optional, tag = "1")]
226    pub restored_from_revision_rid: ::core::option::Option<
227        ::prost::alloc::string::String,
228    >,
229}
230#[derive(Clone, PartialEq, ::prost::Message)]
231pub struct FileRevisionRef {
232    #[prost(oneof = "file_revision_ref::Reference", tags = "1, 2")]
233    pub reference: ::core::option::Option<file_revision_ref::Reference>,
234}
235/// Nested message and enum types in `FileRevisionRef`.
236pub mod file_revision_ref {
237    #[derive(Clone, PartialEq, ::prost::Oneof)]
238    pub enum Reference {
239        #[prost(message, tag = "1")]
240        Managed(super::ManagedFileRevisionRef),
241        #[prost(message, tag = "2")]
242        Virtual(super::VirtualFileRevisionRef),
243    }
244}
245#[derive(Clone, PartialEq, ::prost::Message)]
246pub struct ManagedFileRevisionRef {
247    #[prost(string, tag = "1")]
248    pub file_revision_rid: ::prost::alloc::string::String,
249}
250#[derive(Clone, PartialEq, ::prost::Message)]
251pub struct VirtualFileRevisionRef {
252    #[prost(oneof = "virtual_file_revision_ref::Kind", tags = "1, 2, 3")]
253    pub kind: ::core::option::Option<virtual_file_revision_ref::Kind>,
254}
255/// Nested message and enum types in `VirtualFileRevisionRef`.
256pub mod virtual_file_revision_ref {
257    #[derive(Clone, PartialEq, ::prost::Oneof)]
258    pub enum Kind {
259        #[prost(message, tag = "1")]
260        S3(super::S3FileRevisionRef),
261        #[prost(message, tag = "2")]
262        GoogleDrive(super::GoogleDriveFileRevisionRef),
263        #[prost(message, tag = "3")]
264        Gcs(super::GcsFileRevisionRef),
265    }
266}
267#[derive(Clone, PartialEq, ::prost::Message)]
268pub struct S3FileRevisionRef {
269    #[prost(string, tag = "1")]
270    pub drive_rid: ::prost::alloc::string::String,
271    #[prost(string, tag = "2")]
272    pub path: ::prost::alloc::string::String,
273    #[prost(string, tag = "3")]
274    pub etag: ::prost::alloc::string::String,
275}
276#[derive(Clone, PartialEq, ::prost::Message)]
277pub struct GoogleDriveFileRevisionRef {
278    #[prost(string, tag = "1")]
279    pub drive_rid: ::prost::alloc::string::String,
280    #[prost(string, tag = "2")]
281    pub file_id: ::prost::alloc::string::String,
282    #[prost(string, tag = "3")]
283    pub revision_id: ::prost::alloc::string::String,
284}
285#[derive(Clone, PartialEq, ::prost::Message)]
286pub struct GcsFileRevisionRef {
287    #[prost(string, tag = "1")]
288    pub drive_rid: ::prost::alloc::string::String,
289    #[prost(string, tag = "2")]
290    pub path: ::prost::alloc::string::String,
291    #[prost(string, tag = "3")]
292    pub generation: ::prost::alloc::string::String,
293}
294#[derive(Clone, PartialEq, ::prost::Message)]
295pub struct ManagedFileRevision {
296    #[prost(message, optional, tag = "9")]
297    pub r#ref: ::core::option::Option<FileRevisionRef>,
298    #[prost(message, optional, tag = "10")]
299    pub identity: ::core::option::Option<LogicalFileIdentity>,
300    #[deprecated]
301    #[prost(string, tag = "1")]
302    pub file_revision_rid: ::prost::alloc::string::String,
303    #[deprecated]
304    #[prost(string, tag = "2")]
305    pub file_rid: ::prost::alloc::string::String,
306    #[prost(message, optional, tag = "3")]
307    pub path: ::core::option::Option<LogicalPath>,
308    #[prost(uint64, tag = "4")]
309    pub size_bytes: u64,
310    #[prost(message, optional, tag = "5")]
311    pub created: ::core::option::Option<Attribution>,
312    #[prost(enumeration = "FileState", tag = "6")]
313    pub state: i32,
314    #[prost(enumeration = "DownloadAvailability", tag = "7")]
315    pub download_availability: i32,
316    #[prost(message, optional, tag = "8")]
317    pub action: ::core::option::Option<FileRevisionAction>,
318}
319#[derive(Clone, PartialEq, ::prost::Message)]
320pub struct VirtualFileRevision {
321    #[prost(string, tag = "1")]
322    pub file_revision_rid: ::prost::alloc::string::String,
323    #[prost(message, optional, tag = "2")]
324    pub file_identity: ::core::option::Option<VirtualFileIdentity>,
325    #[prost(message, optional, tag = "3")]
326    pub path: ::core::option::Option<LogicalPath>,
327    #[prost(uint64, tag = "4")]
328    pub size_bytes: u64,
329    #[prost(message, optional, tag = "5")]
330    pub observed: ::core::option::Option<Attribution>,
331    #[prost(enumeration = "DownloadAvailability", tag = "6")]
332    pub download_availability: i32,
333}
334#[derive(Clone, PartialEq, ::prost::Message)]
335pub struct FileRevision {
336    #[prost(message, optional, tag = "9")]
337    pub r#ref: ::core::option::Option<FileRevisionRef>,
338    #[prost(message, optional, tag = "10")]
339    pub identity: ::core::option::Option<LogicalFileIdentity>,
340    #[prost(message, optional, tag = "3")]
341    pub path: ::core::option::Option<LogicalPath>,
342    #[prost(uint64, tag = "4")]
343    pub size_bytes: u64,
344    #[prost(message, optional, tag = "5")]
345    pub observed: ::core::option::Option<Attribution>,
346    #[prost(enumeration = "FileState", tag = "6")]
347    pub state: i32,
348    #[prost(enumeration = "DownloadAvailability", tag = "7")]
349    pub download_availability: i32,
350    #[prost(message, optional, tag = "8")]
351    pub action: ::core::option::Option<FileRevisionAction>,
352}
353#[derive(Clone, PartialEq, ::prost::Message)]
354pub struct Directory {
355    #[prost(message, optional, tag = "1")]
356    pub path: ::core::option::Option<LogicalPath>,
357}
358#[derive(Clone, PartialEq, ::prost::Message)]
359pub struct FileEntry {
360    #[prost(oneof = "file_entry::Entry", tags = "1, 2")]
361    pub entry: ::core::option::Option<file_entry::Entry>,
362}
363/// Nested message and enum types in `FileEntry`.
364pub mod file_entry {
365    #[derive(Clone, PartialEq, ::prost::Oneof)]
366    pub enum Entry {
367        #[prost(message, tag = "1")]
368        File(super::LogicalFile),
369        #[prost(message, tag = "2")]
370        Directory(super::Directory),
371    }
372}
373#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
374#[repr(i32)]
375pub enum DriveState {
376    Unspecified = 0,
377    Active = 1,
378    Archived = 2,
379}
380impl DriveState {
381    /// String value of the enum field names used in the ProtoBuf definition.
382    ///
383    /// The values are not transformed in any way and thus are considered stable
384    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
385    pub fn as_str_name(&self) -> &'static str {
386        match self {
387            Self::Unspecified => "DRIVE_STATE_UNSPECIFIED",
388            Self::Active => "DRIVE_STATE_ACTIVE",
389            Self::Archived => "DRIVE_STATE_ARCHIVED",
390        }
391    }
392    /// Creates an enum from field names used in the ProtoBuf definition.
393    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
394        match value {
395            "DRIVE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
396            "DRIVE_STATE_ACTIVE" => Some(Self::Active),
397            "DRIVE_STATE_ARCHIVED" => Some(Self::Archived),
398            _ => None,
399        }
400    }
401}
402#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
403#[repr(i32)]
404pub enum DriveSource {
405    Unspecified = 0,
406    Nominal = 1,
407    S3 = 2,
408    GoogleDrive = 3,
409    Gcs = 4,
410}
411impl DriveSource {
412    /// String value of the enum field names used in the ProtoBuf definition.
413    ///
414    /// The values are not transformed in any way and thus are considered stable
415    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
416    pub fn as_str_name(&self) -> &'static str {
417        match self {
418            Self::Unspecified => "DRIVE_SOURCE_UNSPECIFIED",
419            Self::Nominal => "DRIVE_SOURCE_NOMINAL",
420            Self::S3 => "DRIVE_SOURCE_S3",
421            Self::GoogleDrive => "DRIVE_SOURCE_GOOGLE_DRIVE",
422            Self::Gcs => "DRIVE_SOURCE_GCS",
423        }
424    }
425    /// Creates an enum from field names used in the ProtoBuf definition.
426    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
427        match value {
428            "DRIVE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
429            "DRIVE_SOURCE_NOMINAL" => Some(Self::Nominal),
430            "DRIVE_SOURCE_S3" => Some(Self::S3),
431            "DRIVE_SOURCE_GOOGLE_DRIVE" => Some(Self::GoogleDrive),
432            "DRIVE_SOURCE_GCS" => Some(Self::Gcs),
433            _ => None,
434        }
435    }
436}
437#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
438#[repr(i32)]
439pub enum DriveMutability {
440    Unspecified = 0,
441    Writable = 1,
442    ReadOnly = 2,
443}
444impl DriveMutability {
445    /// String value of the enum field names used in the ProtoBuf definition.
446    ///
447    /// The values are not transformed in any way and thus are considered stable
448    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
449    pub fn as_str_name(&self) -> &'static str {
450        match self {
451            Self::Unspecified => "DRIVE_MUTABILITY_UNSPECIFIED",
452            Self::Writable => "DRIVE_MUTABILITY_WRITABLE",
453            Self::ReadOnly => "DRIVE_MUTABILITY_READ_ONLY",
454        }
455    }
456    /// Creates an enum from field names used in the ProtoBuf definition.
457    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
458        match value {
459            "DRIVE_MUTABILITY_UNSPECIFIED" => Some(Self::Unspecified),
460            "DRIVE_MUTABILITY_WRITABLE" => Some(Self::Writable),
461            "DRIVE_MUTABILITY_READ_ONLY" => Some(Self::ReadOnly),
462            _ => None,
463        }
464    }
465}
466#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
467#[repr(i32)]
468pub enum VirtualDriveState {
469    Unspecified = 0,
470    Active = 1,
471    AuthError = 2,
472    Unreachable = 3,
473    InvalidConfiguration = 4,
474}
475impl VirtualDriveState {
476    /// String value of the enum field names used in the ProtoBuf definition.
477    ///
478    /// The values are not transformed in any way and thus are considered stable
479    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
480    pub fn as_str_name(&self) -> &'static str {
481        match self {
482            Self::Unspecified => "VIRTUAL_DRIVE_STATE_UNSPECIFIED",
483            Self::Active => "VIRTUAL_DRIVE_STATE_ACTIVE",
484            Self::AuthError => "VIRTUAL_DRIVE_STATE_AUTH_ERROR",
485            Self::Unreachable => "VIRTUAL_DRIVE_STATE_UNREACHABLE",
486            Self::InvalidConfiguration => "VIRTUAL_DRIVE_STATE_INVALID_CONFIGURATION",
487        }
488    }
489    /// Creates an enum from field names used in the ProtoBuf definition.
490    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
491        match value {
492            "VIRTUAL_DRIVE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
493            "VIRTUAL_DRIVE_STATE_ACTIVE" => Some(Self::Active),
494            "VIRTUAL_DRIVE_STATE_AUTH_ERROR" => Some(Self::AuthError),
495            "VIRTUAL_DRIVE_STATE_UNREACHABLE" => Some(Self::Unreachable),
496            "VIRTUAL_DRIVE_STATE_INVALID_CONFIGURATION" => {
497                Some(Self::InvalidConfiguration)
498            }
499            _ => None,
500        }
501    }
502}
503#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
504#[repr(i32)]
505pub enum FileState {
506    Unspecified = 0,
507    Active = 1,
508    Removed = 2,
509}
510impl FileState {
511    /// String value of the enum field names used in the ProtoBuf definition.
512    ///
513    /// The values are not transformed in any way and thus are considered stable
514    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
515    pub fn as_str_name(&self) -> &'static str {
516        match self {
517            Self::Unspecified => "FILE_STATE_UNSPECIFIED",
518            Self::Active => "FILE_STATE_ACTIVE",
519            Self::Removed => "FILE_STATE_REMOVED",
520        }
521    }
522    /// Creates an enum from field names used in the ProtoBuf definition.
523    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
524        match value {
525            "FILE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
526            "FILE_STATE_ACTIVE" => Some(Self::Active),
527            "FILE_STATE_REMOVED" => Some(Self::Removed),
528            _ => None,
529        }
530    }
531}
532#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
533#[repr(i32)]
534pub enum DownloadAvailability {
535    Unspecified = 0,
536    Available = 1,
537    BytesReclaimed = 2,
538    NoContent = 3,
539}
540impl DownloadAvailability {
541    /// String value of the enum field names used in the ProtoBuf definition.
542    ///
543    /// The values are not transformed in any way and thus are considered stable
544    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
545    pub fn as_str_name(&self) -> &'static str {
546        match self {
547            Self::Unspecified => "DOWNLOAD_AVAILABILITY_UNSPECIFIED",
548            Self::Available => "DOWNLOAD_AVAILABILITY_AVAILABLE",
549            Self::BytesReclaimed => "DOWNLOAD_AVAILABILITY_BYTES_RECLAIMED",
550            Self::NoContent => "DOWNLOAD_AVAILABILITY_NO_CONTENT",
551        }
552    }
553    /// Creates an enum from field names used in the ProtoBuf definition.
554    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
555        match value {
556            "DOWNLOAD_AVAILABILITY_UNSPECIFIED" => Some(Self::Unspecified),
557            "DOWNLOAD_AVAILABILITY_AVAILABLE" => Some(Self::Available),
558            "DOWNLOAD_AVAILABILITY_BYTES_RECLAIMED" => Some(Self::BytesReclaimed),
559            "DOWNLOAD_AVAILABILITY_NO_CONTENT" => Some(Self::NoContent),
560            _ => None,
561        }
562    }
563}
564#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
565#[repr(i32)]
566pub enum FileStoreCommonError {
567    Unspecified = 0,
568    DriveNotFound = 1,
569    FileNotFound = 2,
570    FileRevisionNotFound = 3,
571    PermissionDenied = 4,
572}
573impl FileStoreCommonError {
574    /// String value of the enum field names used in the ProtoBuf definition.
575    ///
576    /// The values are not transformed in any way and thus are considered stable
577    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
578    pub fn as_str_name(&self) -> &'static str {
579        match self {
580            Self::Unspecified => "FILE_STORE_COMMON_ERROR_UNSPECIFIED",
581            Self::DriveNotFound => "FILE_STORE_COMMON_ERROR_DRIVE_NOT_FOUND",
582            Self::FileNotFound => "FILE_STORE_COMMON_ERROR_FILE_NOT_FOUND",
583            Self::FileRevisionNotFound => {
584                "FILE_STORE_COMMON_ERROR_FILE_REVISION_NOT_FOUND"
585            }
586            Self::PermissionDenied => "FILE_STORE_COMMON_ERROR_PERMISSION_DENIED",
587        }
588    }
589    /// Creates an enum from field names used in the ProtoBuf definition.
590    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
591        match value {
592            "FILE_STORE_COMMON_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
593            "FILE_STORE_COMMON_ERROR_DRIVE_NOT_FOUND" => Some(Self::DriveNotFound),
594            "FILE_STORE_COMMON_ERROR_FILE_NOT_FOUND" => Some(Self::FileNotFound),
595            "FILE_STORE_COMMON_ERROR_FILE_REVISION_NOT_FOUND" => {
596                Some(Self::FileRevisionNotFound)
597            }
598            "FILE_STORE_COMMON_ERROR_PERMISSION_DENIED" => Some(Self::PermissionDenied),
599            _ => None,
600        }
601    }
602}
603#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
604#[repr(i32)]
605pub enum VirtualDriveUpstreamError {
606    Unspecified = 0,
607    CredentialsNotFound = 1,
608    CredentialsInvalid = 2,
609    CredentialsRejected = 3,
610    UpstreamUnavailable = 4,
611    UpstreamFileNotFound = 5,
612    InvalidUpstreamState = 6,
613}
614impl VirtualDriveUpstreamError {
615    /// String value of the enum field names used in the ProtoBuf definition.
616    ///
617    /// The values are not transformed in any way and thus are considered stable
618    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
619    pub fn as_str_name(&self) -> &'static str {
620        match self {
621            Self::Unspecified => "VIRTUAL_DRIVE_UPSTREAM_ERROR_UNSPECIFIED",
622            Self::CredentialsNotFound => {
623                "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_NOT_FOUND"
624            }
625            Self::CredentialsInvalid => {
626                "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_INVALID"
627            }
628            Self::CredentialsRejected => {
629                "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_REJECTED"
630            }
631            Self::UpstreamUnavailable => {
632                "VIRTUAL_DRIVE_UPSTREAM_ERROR_UPSTREAM_UNAVAILABLE"
633            }
634            Self::UpstreamFileNotFound => {
635                "VIRTUAL_DRIVE_UPSTREAM_ERROR_UPSTREAM_FILE_NOT_FOUND"
636            }
637            Self::InvalidUpstreamState => {
638                "VIRTUAL_DRIVE_UPSTREAM_ERROR_INVALID_UPSTREAM_STATE"
639            }
640        }
641    }
642    /// Creates an enum from field names used in the ProtoBuf definition.
643    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
644        match value {
645            "VIRTUAL_DRIVE_UPSTREAM_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
646            "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_NOT_FOUND" => {
647                Some(Self::CredentialsNotFound)
648            }
649            "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_INVALID" => {
650                Some(Self::CredentialsInvalid)
651            }
652            "VIRTUAL_DRIVE_UPSTREAM_ERROR_CREDENTIALS_REJECTED" => {
653                Some(Self::CredentialsRejected)
654            }
655            "VIRTUAL_DRIVE_UPSTREAM_ERROR_UPSTREAM_UNAVAILABLE" => {
656                Some(Self::UpstreamUnavailable)
657            }
658            "VIRTUAL_DRIVE_UPSTREAM_ERROR_UPSTREAM_FILE_NOT_FOUND" => {
659                Some(Self::UpstreamFileNotFound)
660            }
661            "VIRTUAL_DRIVE_UPSTREAM_ERROR_INVALID_UPSTREAM_STATE" => {
662                Some(Self::InvalidUpstreamState)
663            }
664            _ => None,
665        }
666    }
667}
668#[derive(Clone, PartialEq, ::prost::Message)]
669pub struct CreateDriveRequest {
670    #[prost(string, tag = "1")]
671    pub workspace_rid: ::prost::alloc::string::String,
672    #[prost(string, tag = "2")]
673    pub id: ::prost::alloc::string::String,
674    #[prost(string, optional, tag = "3")]
675    pub description: ::core::option::Option<::prost::alloc::string::String>,
676}
677#[derive(Clone, PartialEq, ::prost::Message)]
678pub struct CreateDriveResponse {
679    #[prost(message, optional, tag = "1")]
680    pub drive: ::core::option::Option<Drive>,
681}
682#[derive(Clone, PartialEq, ::prost::Message)]
683pub struct CreateVirtualDriveRequest {
684    #[prost(string, tag = "1")]
685    pub workspace_rid: ::prost::alloc::string::String,
686    #[prost(string, tag = "2")]
687    pub id: ::prost::alloc::string::String,
688    #[prost(message, optional, tag = "3")]
689    pub connection_details: ::core::option::Option<VirtualDriveConnectionDetails>,
690    #[prost(string, optional, tag = "4")]
691    pub description: ::core::option::Option<::prost::alloc::string::String>,
692}
693#[derive(Clone, PartialEq, ::prost::Message)]
694pub struct CreateVirtualDriveResponse {
695    #[prost(message, optional, tag = "1")]
696    pub drive: ::core::option::Option<Drive>,
697    #[prost(message, optional, tag = "2")]
698    pub virtual_drive: ::core::option::Option<VirtualDrive>,
699}
700#[derive(Clone, PartialEq, ::prost::Message)]
701pub struct GetDriveRequest {
702    #[prost(string, tag = "1")]
703    pub drive_rid: ::prost::alloc::string::String,
704}
705#[derive(Clone, PartialEq, ::prost::Message)]
706pub struct GetDriveResponse {
707    #[prost(message, optional, tag = "1")]
708    pub drive: ::core::option::Option<Drive>,
709}
710#[derive(Clone, PartialEq, ::prost::Message)]
711pub struct GetVirtualDriveDetailsRequest {
712    #[prost(string, tag = "1")]
713    pub drive_rid: ::prost::alloc::string::String,
714}
715#[derive(Clone, PartialEq, ::prost::Message)]
716pub struct GetVirtualDriveDetailsResponse {
717    #[prost(message, optional, tag = "1")]
718    pub drive: ::core::option::Option<Drive>,
719    #[prost(message, optional, tag = "2")]
720    pub virtual_drive_details: ::core::option::Option<VirtualDriveDetails>,
721}
722#[derive(Clone, PartialEq, ::prost::Message)]
723pub struct GetVirtualDriveStatusRequest {
724    #[prost(string, tag = "1")]
725    pub drive_rid: ::prost::alloc::string::String,
726}
727#[derive(Clone, PartialEq, ::prost::Message)]
728pub struct GetVirtualDriveStatusResponse {
729    #[prost(message, optional, tag = "1")]
730    pub status: ::core::option::Option<VirtualDriveStatus>,
731}
732#[derive(Clone, PartialEq, ::prost::Message)]
733pub struct GetDriveByIdRequest {
734    #[prost(string, tag = "1")]
735    pub workspace_rid: ::prost::alloc::string::String,
736    #[prost(string, tag = "2")]
737    pub id: ::prost::alloc::string::String,
738}
739#[derive(Clone, PartialEq, ::prost::Message)]
740pub struct GetDriveByIdResponse {
741    #[prost(message, optional, tag = "1")]
742    pub drive: ::core::option::Option<Drive>,
743}
744#[derive(Clone, PartialEq, ::prost::Message)]
745pub struct GetVirtualDriveDetailsByIdRequest {
746    #[prost(string, tag = "1")]
747    pub workspace_rid: ::prost::alloc::string::String,
748    #[prost(string, tag = "2")]
749    pub id: ::prost::alloc::string::String,
750}
751#[derive(Clone, PartialEq, ::prost::Message)]
752pub struct GetVirtualDriveDetailsByIdResponse {
753    #[prost(message, optional, tag = "1")]
754    pub drive: ::core::option::Option<Drive>,
755    #[prost(message, optional, tag = "2")]
756    pub virtual_drive_details: ::core::option::Option<VirtualDriveDetails>,
757}
758#[derive(Clone, PartialEq, ::prost::Message)]
759pub struct GetVirtualDriveStatusByIdRequest {
760    #[prost(string, tag = "1")]
761    pub workspace_rid: ::prost::alloc::string::String,
762    #[prost(string, tag = "2")]
763    pub id: ::prost::alloc::string::String,
764}
765#[derive(Clone, PartialEq, ::prost::Message)]
766pub struct GetVirtualDriveStatusByIdResponse {
767    #[prost(message, optional, tag = "1")]
768    pub status: ::core::option::Option<VirtualDriveStatus>,
769}
770#[derive(Clone, PartialEq, ::prost::Message)]
771pub struct ListDrivesRequest {
772    #[prost(string, tag = "1")]
773    pub workspace_rid: ::prost::alloc::string::String,
774    #[prost(bool, tag = "2")]
775    pub include_archived: bool,
776    #[prost(int32, optional, tag = "3")]
777    pub page_size: ::core::option::Option<i32>,
778    #[prost(string, optional, tag = "4")]
779    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
780}
781#[derive(Clone, PartialEq, ::prost::Message)]
782pub struct ListDrivesResponse {
783    #[prost(message, repeated, tag = "1")]
784    pub drives: ::prost::alloc::vec::Vec<Drive>,
785    #[prost(string, optional, tag = "2")]
786    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
787}
788#[derive(Clone, PartialEq, ::prost::Message)]
789pub struct UpdateVirtualDriveRequest {
790    #[prost(string, tag = "1")]
791    pub drive_rid: ::prost::alloc::string::String,
792    #[prost(message, optional, tag = "2")]
793    pub connection_details: ::core::option::Option<VirtualDriveConnectionDetails>,
794}
795#[derive(Clone, PartialEq, ::prost::Message)]
796pub struct UpdateVirtualDriveResponse {
797    #[prost(message, optional, tag = "1")]
798    pub drive: ::core::option::Option<Drive>,
799    #[prost(message, optional, tag = "2")]
800    pub virtual_drive: ::core::option::Option<VirtualDrive>,
801}
802#[derive(Clone, PartialEq, ::prost::Message)]
803pub struct UpdateDriveDetailsRequest {
804    #[prost(string, tag = "1")]
805    pub drive_rid: ::prost::alloc::string::String,
806    #[prost(string, optional, tag = "2")]
807    pub id: ::core::option::Option<::prost::alloc::string::String>,
808    #[prost(string, optional, tag = "3")]
809    pub description: ::core::option::Option<::prost::alloc::string::String>,
810}
811#[derive(Clone, PartialEq, ::prost::Message)]
812pub struct UpdateDriveDetailsResponse {
813    #[prost(message, optional, tag = "1")]
814    pub drive: ::core::option::Option<Drive>,
815}
816#[derive(Clone, PartialEq, ::prost::Message)]
817pub struct ArchiveDriveRequest {
818    #[prost(string, tag = "1")]
819    pub drive_rid: ::prost::alloc::string::String,
820}
821#[derive(Clone, PartialEq, ::prost::Message)]
822pub struct ArchiveDriveResponse {
823    #[prost(message, optional, tag = "1")]
824    pub drive: ::core::option::Option<Drive>,
825}
826#[derive(Clone, PartialEq, ::prost::Message)]
827pub struct UnarchiveDriveRequest {
828    #[prost(string, tag = "1")]
829    pub drive_rid: ::prost::alloc::string::String,
830}
831#[derive(Clone, PartialEq, ::prost::Message)]
832pub struct UnarchiveDriveResponse {
833    #[prost(message, optional, tag = "1")]
834    pub drive: ::core::option::Option<Drive>,
835}
836#[derive(Clone, PartialEq, ::prost::Message)]
837pub struct NotifyVirtualDriveFilesRequest {
838    #[prost(string, tag = "1")]
839    pub drive_rid: ::prost::alloc::string::String,
840    #[prost(message, repeated, tag = "2")]
841    pub objects: ::prost::alloc::vec::Vec<NotifiedObject>,
842}
843#[derive(Clone, PartialEq, ::prost::Message)]
844pub struct NotifiedObject {
845    #[prost(string, tag = "1")]
846    pub bucket: ::prost::alloc::string::String,
847    #[prost(string, tag = "2")]
848    pub key: ::prost::alloc::string::String,
849    #[prost(string, tag = "3")]
850    pub etag: ::prost::alloc::string::String,
851}
852#[derive(Clone, PartialEq, ::prost::Message)]
853pub struct NotifyVirtualDriveFilesResponse {
854    #[prost(int32, tag = "1")]
855    pub enqueued: i32,
856    #[prost(int32, tag = "2")]
857    pub skipped: i32,
858    #[prost(int32, tag = "3")]
859    pub malformed: i32,
860    #[prost(message, repeated, tag = "4")]
861    pub skipped_by_reason: ::prost::alloc::vec::Vec<SkippedCount>,
862}
863#[derive(Clone, Copy, PartialEq, ::prost::Message)]
864pub struct SkippedCount {
865    #[prost(enumeration = "NotifySkipReason", tag = "1")]
866    pub reason: i32,
867    #[prost(int32, tag = "2")]
868    pub count: i32,
869}
870#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
871#[repr(i32)]
872pub enum NotifySkipReason {
873    Unspecified = 0,
874    WrongBucket = 1,
875    OutsidePrefix = 2,
876    FolderMarker = 3,
877    InvalidPath = 4,
878    NotFound = 5,
879    Unreadable = 6,
880}
881impl NotifySkipReason {
882    /// String value of the enum field names used in the ProtoBuf definition.
883    ///
884    /// The values are not transformed in any way and thus are considered stable
885    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
886    pub fn as_str_name(&self) -> &'static str {
887        match self {
888            Self::Unspecified => "NOTIFY_SKIP_REASON_UNSPECIFIED",
889            Self::WrongBucket => "NOTIFY_SKIP_REASON_WRONG_BUCKET",
890            Self::OutsidePrefix => "NOTIFY_SKIP_REASON_OUTSIDE_PREFIX",
891            Self::FolderMarker => "NOTIFY_SKIP_REASON_FOLDER_MARKER",
892            Self::InvalidPath => "NOTIFY_SKIP_REASON_INVALID_PATH",
893            Self::NotFound => "NOTIFY_SKIP_REASON_NOT_FOUND",
894            Self::Unreadable => "NOTIFY_SKIP_REASON_UNREADABLE",
895        }
896    }
897    /// Creates an enum from field names used in the ProtoBuf definition.
898    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
899        match value {
900            "NOTIFY_SKIP_REASON_UNSPECIFIED" => Some(Self::Unspecified),
901            "NOTIFY_SKIP_REASON_WRONG_BUCKET" => Some(Self::WrongBucket),
902            "NOTIFY_SKIP_REASON_OUTSIDE_PREFIX" => Some(Self::OutsidePrefix),
903            "NOTIFY_SKIP_REASON_FOLDER_MARKER" => Some(Self::FolderMarker),
904            "NOTIFY_SKIP_REASON_INVALID_PATH" => Some(Self::InvalidPath),
905            "NOTIFY_SKIP_REASON_NOT_FOUND" => Some(Self::NotFound),
906            "NOTIFY_SKIP_REASON_UNREADABLE" => Some(Self::Unreadable),
907            _ => None,
908        }
909    }
910}
911#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
912#[repr(i32)]
913pub enum DriveAdminError {
914    Unspecified = 0,
915    DriveIdAlreadyExists = 1,
916    VirtualDriveNotFound = 2,
917    InvalidVirtualDriveConfiguration = 3,
918}
919impl DriveAdminError {
920    /// String value of the enum field names used in the ProtoBuf definition.
921    ///
922    /// The values are not transformed in any way and thus are considered stable
923    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
924    pub fn as_str_name(&self) -> &'static str {
925        match self {
926            Self::Unspecified => "DRIVE_ADMIN_ERROR_UNSPECIFIED",
927            Self::DriveIdAlreadyExists => "DRIVE_ADMIN_ERROR_DRIVE_ID_ALREADY_EXISTS",
928            Self::VirtualDriveNotFound => "DRIVE_ADMIN_ERROR_VIRTUAL_DRIVE_NOT_FOUND",
929            Self::InvalidVirtualDriveConfiguration => {
930                "DRIVE_ADMIN_ERROR_INVALID_VIRTUAL_DRIVE_CONFIGURATION"
931            }
932        }
933    }
934    /// Creates an enum from field names used in the ProtoBuf definition.
935    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
936        match value {
937            "DRIVE_ADMIN_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
938            "DRIVE_ADMIN_ERROR_DRIVE_ID_ALREADY_EXISTS" => {
939                Some(Self::DriveIdAlreadyExists)
940            }
941            "DRIVE_ADMIN_ERROR_VIRTUAL_DRIVE_NOT_FOUND" => {
942                Some(Self::VirtualDriveNotFound)
943            }
944            "DRIVE_ADMIN_ERROR_INVALID_VIRTUAL_DRIVE_CONFIGURATION" => {
945                Some(Self::InvalidVirtualDriveConfiguration)
946            }
947            _ => None,
948        }
949    }
950}
951/// Generated client implementations.
952pub mod drives_service_client {
953    #![allow(
954        unused_variables,
955        dead_code,
956        missing_docs,
957        clippy::wildcard_imports,
958        clippy::let_unit_value,
959    )]
960    use tonic::codegen::*;
961    use tonic::codegen::http::Uri;
962    #[derive(Debug, Clone)]
963    pub struct DrivesServiceClient<T> {
964        inner: tonic::client::Grpc<T>,
965    }
966    impl DrivesServiceClient<tonic::transport::Channel> {
967        /// Attempt to create a new client by connecting to a given endpoint.
968        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
969        where
970            D: TryInto<tonic::transport::Endpoint>,
971            D::Error: Into<StdError>,
972        {
973            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
974            Ok(Self::new(conn))
975        }
976    }
977    impl<T> DrivesServiceClient<T>
978    where
979        T: tonic::client::GrpcService<tonic::body::Body>,
980        T::Error: Into<StdError>,
981        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
982        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
983    {
984        pub fn new(inner: T) -> Self {
985            let inner = tonic::client::Grpc::new(inner);
986            Self { inner }
987        }
988        pub fn with_origin(inner: T, origin: Uri) -> Self {
989            let inner = tonic::client::Grpc::with_origin(inner, origin);
990            Self { inner }
991        }
992        pub fn with_interceptor<F>(
993            inner: T,
994            interceptor: F,
995        ) -> DrivesServiceClient<InterceptedService<T, F>>
996        where
997            F: tonic::service::Interceptor,
998            T::ResponseBody: Default,
999            T: tonic::codegen::Service<
1000                http::Request<tonic::body::Body>,
1001                Response = http::Response<
1002                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1003                >,
1004            >,
1005            <T as tonic::codegen::Service<
1006                http::Request<tonic::body::Body>,
1007            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1008        {
1009            DrivesServiceClient::new(InterceptedService::new(inner, interceptor))
1010        }
1011        /// Compress requests with the given encoding.
1012        ///
1013        /// This requires the server to support it otherwise it might respond with an
1014        /// error.
1015        #[must_use]
1016        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1017            self.inner = self.inner.send_compressed(encoding);
1018            self
1019        }
1020        /// Enable decompressing responses.
1021        #[must_use]
1022        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1023            self.inner = self.inner.accept_compressed(encoding);
1024            self
1025        }
1026        /// Limits the maximum size of a decoded message.
1027        ///
1028        /// Default: `4MB`
1029        #[must_use]
1030        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1031            self.inner = self.inner.max_decoding_message_size(limit);
1032            self
1033        }
1034        /// Limits the maximum size of an encoded message.
1035        ///
1036        /// Default: `usize::MAX`
1037        #[must_use]
1038        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1039            self.inner = self.inner.max_encoding_message_size(limit);
1040            self
1041        }
1042        pub async fn create_drive(
1043            &mut self,
1044            request: impl tonic::IntoRequest<super::CreateDriveRequest>,
1045        ) -> std::result::Result<
1046            tonic::Response<super::CreateDriveResponse>,
1047            tonic::Status,
1048        > {
1049            self.inner
1050                .ready()
1051                .await
1052                .map_err(|e| {
1053                    tonic::Status::unknown(
1054                        format!("Service was not ready: {}", e.into()),
1055                    )
1056                })?;
1057            let codec = tonic::codec::ProstCodec::default();
1058            let path = http::uri::PathAndQuery::from_static(
1059                "/nominal.file_store.v1.DrivesService/CreateDrive",
1060            );
1061            let mut req = request.into_request();
1062            req.extensions_mut()
1063                .insert(
1064                    GrpcMethod::new("nominal.file_store.v1.DrivesService", "CreateDrive"),
1065                );
1066            self.inner.unary(req, path, codec).await
1067        }
1068        pub async fn create_virtual_drive(
1069            &mut self,
1070            request: impl tonic::IntoRequest<super::CreateVirtualDriveRequest>,
1071        ) -> std::result::Result<
1072            tonic::Response<super::CreateVirtualDriveResponse>,
1073            tonic::Status,
1074        > {
1075            self.inner
1076                .ready()
1077                .await
1078                .map_err(|e| {
1079                    tonic::Status::unknown(
1080                        format!("Service was not ready: {}", e.into()),
1081                    )
1082                })?;
1083            let codec = tonic::codec::ProstCodec::default();
1084            let path = http::uri::PathAndQuery::from_static(
1085                "/nominal.file_store.v1.DrivesService/CreateVirtualDrive",
1086            );
1087            let mut req = request.into_request();
1088            req.extensions_mut()
1089                .insert(
1090                    GrpcMethod::new(
1091                        "nominal.file_store.v1.DrivesService",
1092                        "CreateVirtualDrive",
1093                    ),
1094                );
1095            self.inner.unary(req, path, codec).await
1096        }
1097        pub async fn get_drive(
1098            &mut self,
1099            request: impl tonic::IntoRequest<super::GetDriveRequest>,
1100        ) -> std::result::Result<
1101            tonic::Response<super::GetDriveResponse>,
1102            tonic::Status,
1103        > {
1104            self.inner
1105                .ready()
1106                .await
1107                .map_err(|e| {
1108                    tonic::Status::unknown(
1109                        format!("Service was not ready: {}", e.into()),
1110                    )
1111                })?;
1112            let codec = tonic::codec::ProstCodec::default();
1113            let path = http::uri::PathAndQuery::from_static(
1114                "/nominal.file_store.v1.DrivesService/GetDrive",
1115            );
1116            let mut req = request.into_request();
1117            req.extensions_mut()
1118                .insert(
1119                    GrpcMethod::new("nominal.file_store.v1.DrivesService", "GetDrive"),
1120                );
1121            self.inner.unary(req, path, codec).await
1122        }
1123        pub async fn get_virtual_drive_details(
1124            &mut self,
1125            request: impl tonic::IntoRequest<super::GetVirtualDriveDetailsRequest>,
1126        ) -> std::result::Result<
1127            tonic::Response<super::GetVirtualDriveDetailsResponse>,
1128            tonic::Status,
1129        > {
1130            self.inner
1131                .ready()
1132                .await
1133                .map_err(|e| {
1134                    tonic::Status::unknown(
1135                        format!("Service was not ready: {}", e.into()),
1136                    )
1137                })?;
1138            let codec = tonic::codec::ProstCodec::default();
1139            let path = http::uri::PathAndQuery::from_static(
1140                "/nominal.file_store.v1.DrivesService/GetVirtualDriveDetails",
1141            );
1142            let mut req = request.into_request();
1143            req.extensions_mut()
1144                .insert(
1145                    GrpcMethod::new(
1146                        "nominal.file_store.v1.DrivesService",
1147                        "GetVirtualDriveDetails",
1148                    ),
1149                );
1150            self.inner.unary(req, path, codec).await
1151        }
1152        pub async fn get_virtual_drive_status(
1153            &mut self,
1154            request: impl tonic::IntoRequest<super::GetVirtualDriveStatusRequest>,
1155        ) -> std::result::Result<
1156            tonic::Response<super::GetVirtualDriveStatusResponse>,
1157            tonic::Status,
1158        > {
1159            self.inner
1160                .ready()
1161                .await
1162                .map_err(|e| {
1163                    tonic::Status::unknown(
1164                        format!("Service was not ready: {}", e.into()),
1165                    )
1166                })?;
1167            let codec = tonic::codec::ProstCodec::default();
1168            let path = http::uri::PathAndQuery::from_static(
1169                "/nominal.file_store.v1.DrivesService/GetVirtualDriveStatus",
1170            );
1171            let mut req = request.into_request();
1172            req.extensions_mut()
1173                .insert(
1174                    GrpcMethod::new(
1175                        "nominal.file_store.v1.DrivesService",
1176                        "GetVirtualDriveStatus",
1177                    ),
1178                );
1179            self.inner.unary(req, path, codec).await
1180        }
1181        pub async fn get_drive_by_id(
1182            &mut self,
1183            request: impl tonic::IntoRequest<super::GetDriveByIdRequest>,
1184        ) -> std::result::Result<
1185            tonic::Response<super::GetDriveByIdResponse>,
1186            tonic::Status,
1187        > {
1188            self.inner
1189                .ready()
1190                .await
1191                .map_err(|e| {
1192                    tonic::Status::unknown(
1193                        format!("Service was not ready: {}", e.into()),
1194                    )
1195                })?;
1196            let codec = tonic::codec::ProstCodec::default();
1197            let path = http::uri::PathAndQuery::from_static(
1198                "/nominal.file_store.v1.DrivesService/GetDriveById",
1199            );
1200            let mut req = request.into_request();
1201            req.extensions_mut()
1202                .insert(
1203                    GrpcMethod::new(
1204                        "nominal.file_store.v1.DrivesService",
1205                        "GetDriveById",
1206                    ),
1207                );
1208            self.inner.unary(req, path, codec).await
1209        }
1210        pub async fn get_virtual_drive_details_by_id(
1211            &mut self,
1212            request: impl tonic::IntoRequest<super::GetVirtualDriveDetailsByIdRequest>,
1213        ) -> std::result::Result<
1214            tonic::Response<super::GetVirtualDriveDetailsByIdResponse>,
1215            tonic::Status,
1216        > {
1217            self.inner
1218                .ready()
1219                .await
1220                .map_err(|e| {
1221                    tonic::Status::unknown(
1222                        format!("Service was not ready: {}", e.into()),
1223                    )
1224                })?;
1225            let codec = tonic::codec::ProstCodec::default();
1226            let path = http::uri::PathAndQuery::from_static(
1227                "/nominal.file_store.v1.DrivesService/GetVirtualDriveDetailsById",
1228            );
1229            let mut req = request.into_request();
1230            req.extensions_mut()
1231                .insert(
1232                    GrpcMethod::new(
1233                        "nominal.file_store.v1.DrivesService",
1234                        "GetVirtualDriveDetailsById",
1235                    ),
1236                );
1237            self.inner.unary(req, path, codec).await
1238        }
1239        pub async fn get_virtual_drive_status_by_id(
1240            &mut self,
1241            request: impl tonic::IntoRequest<super::GetVirtualDriveStatusByIdRequest>,
1242        ) -> std::result::Result<
1243            tonic::Response<super::GetVirtualDriveStatusByIdResponse>,
1244            tonic::Status,
1245        > {
1246            self.inner
1247                .ready()
1248                .await
1249                .map_err(|e| {
1250                    tonic::Status::unknown(
1251                        format!("Service was not ready: {}", e.into()),
1252                    )
1253                })?;
1254            let codec = tonic::codec::ProstCodec::default();
1255            let path = http::uri::PathAndQuery::from_static(
1256                "/nominal.file_store.v1.DrivesService/GetVirtualDriveStatusById",
1257            );
1258            let mut req = request.into_request();
1259            req.extensions_mut()
1260                .insert(
1261                    GrpcMethod::new(
1262                        "nominal.file_store.v1.DrivesService",
1263                        "GetVirtualDriveStatusById",
1264                    ),
1265                );
1266            self.inner.unary(req, path, codec).await
1267        }
1268        pub async fn list_drives(
1269            &mut self,
1270            request: impl tonic::IntoRequest<super::ListDrivesRequest>,
1271        ) -> std::result::Result<
1272            tonic::Response<super::ListDrivesResponse>,
1273            tonic::Status,
1274        > {
1275            self.inner
1276                .ready()
1277                .await
1278                .map_err(|e| {
1279                    tonic::Status::unknown(
1280                        format!("Service was not ready: {}", e.into()),
1281                    )
1282                })?;
1283            let codec = tonic::codec::ProstCodec::default();
1284            let path = http::uri::PathAndQuery::from_static(
1285                "/nominal.file_store.v1.DrivesService/ListDrives",
1286            );
1287            let mut req = request.into_request();
1288            req.extensions_mut()
1289                .insert(
1290                    GrpcMethod::new("nominal.file_store.v1.DrivesService", "ListDrives"),
1291                );
1292            self.inner.unary(req, path, codec).await
1293        }
1294        pub async fn update_virtual_drive(
1295            &mut self,
1296            request: impl tonic::IntoRequest<super::UpdateVirtualDriveRequest>,
1297        ) -> std::result::Result<
1298            tonic::Response<super::UpdateVirtualDriveResponse>,
1299            tonic::Status,
1300        > {
1301            self.inner
1302                .ready()
1303                .await
1304                .map_err(|e| {
1305                    tonic::Status::unknown(
1306                        format!("Service was not ready: {}", e.into()),
1307                    )
1308                })?;
1309            let codec = tonic::codec::ProstCodec::default();
1310            let path = http::uri::PathAndQuery::from_static(
1311                "/nominal.file_store.v1.DrivesService/UpdateVirtualDrive",
1312            );
1313            let mut req = request.into_request();
1314            req.extensions_mut()
1315                .insert(
1316                    GrpcMethod::new(
1317                        "nominal.file_store.v1.DrivesService",
1318                        "UpdateVirtualDrive",
1319                    ),
1320                );
1321            self.inner.unary(req, path, codec).await
1322        }
1323        pub async fn update_drive_details(
1324            &mut self,
1325            request: impl tonic::IntoRequest<super::UpdateDriveDetailsRequest>,
1326        ) -> std::result::Result<
1327            tonic::Response<super::UpdateDriveDetailsResponse>,
1328            tonic::Status,
1329        > {
1330            self.inner
1331                .ready()
1332                .await
1333                .map_err(|e| {
1334                    tonic::Status::unknown(
1335                        format!("Service was not ready: {}", e.into()),
1336                    )
1337                })?;
1338            let codec = tonic::codec::ProstCodec::default();
1339            let path = http::uri::PathAndQuery::from_static(
1340                "/nominal.file_store.v1.DrivesService/UpdateDriveDetails",
1341            );
1342            let mut req = request.into_request();
1343            req.extensions_mut()
1344                .insert(
1345                    GrpcMethod::new(
1346                        "nominal.file_store.v1.DrivesService",
1347                        "UpdateDriveDetails",
1348                    ),
1349                );
1350            self.inner.unary(req, path, codec).await
1351        }
1352        pub async fn archive_drive(
1353            &mut self,
1354            request: impl tonic::IntoRequest<super::ArchiveDriveRequest>,
1355        ) -> std::result::Result<
1356            tonic::Response<super::ArchiveDriveResponse>,
1357            tonic::Status,
1358        > {
1359            self.inner
1360                .ready()
1361                .await
1362                .map_err(|e| {
1363                    tonic::Status::unknown(
1364                        format!("Service was not ready: {}", e.into()),
1365                    )
1366                })?;
1367            let codec = tonic::codec::ProstCodec::default();
1368            let path = http::uri::PathAndQuery::from_static(
1369                "/nominal.file_store.v1.DrivesService/ArchiveDrive",
1370            );
1371            let mut req = request.into_request();
1372            req.extensions_mut()
1373                .insert(
1374                    GrpcMethod::new(
1375                        "nominal.file_store.v1.DrivesService",
1376                        "ArchiveDrive",
1377                    ),
1378                );
1379            self.inner.unary(req, path, codec).await
1380        }
1381        pub async fn unarchive_drive(
1382            &mut self,
1383            request: impl tonic::IntoRequest<super::UnarchiveDriveRequest>,
1384        ) -> std::result::Result<
1385            tonic::Response<super::UnarchiveDriveResponse>,
1386            tonic::Status,
1387        > {
1388            self.inner
1389                .ready()
1390                .await
1391                .map_err(|e| {
1392                    tonic::Status::unknown(
1393                        format!("Service was not ready: {}", e.into()),
1394                    )
1395                })?;
1396            let codec = tonic::codec::ProstCodec::default();
1397            let path = http::uri::PathAndQuery::from_static(
1398                "/nominal.file_store.v1.DrivesService/UnarchiveDrive",
1399            );
1400            let mut req = request.into_request();
1401            req.extensions_mut()
1402                .insert(
1403                    GrpcMethod::new(
1404                        "nominal.file_store.v1.DrivesService",
1405                        "UnarchiveDrive",
1406                    ),
1407                );
1408            self.inner.unary(req, path, codec).await
1409        }
1410        pub async fn notify_virtual_drive_files(
1411            &mut self,
1412            request: impl tonic::IntoRequest<super::NotifyVirtualDriveFilesRequest>,
1413        ) -> std::result::Result<
1414            tonic::Response<super::NotifyVirtualDriveFilesResponse>,
1415            tonic::Status,
1416        > {
1417            self.inner
1418                .ready()
1419                .await
1420                .map_err(|e| {
1421                    tonic::Status::unknown(
1422                        format!("Service was not ready: {}", e.into()),
1423                    )
1424                })?;
1425            let codec = tonic::codec::ProstCodec::default();
1426            let path = http::uri::PathAndQuery::from_static(
1427                "/nominal.file_store.v1.DrivesService/NotifyVirtualDriveFiles",
1428            );
1429            let mut req = request.into_request();
1430            req.extensions_mut()
1431                .insert(
1432                    GrpcMethod::new(
1433                        "nominal.file_store.v1.DrivesService",
1434                        "NotifyVirtualDriveFiles",
1435                    ),
1436                );
1437            self.inner.unary(req, path, codec).await
1438        }
1439    }
1440}
1441#[derive(Clone, PartialEq, ::prost::Message)]
1442pub struct GetFileRevisionTextDiffPreviewRequest {
1443    #[prost(string, optional, tag = "1")]
1444    pub from_revision_rid: ::core::option::Option<::prost::alloc::string::String>,
1445    #[prost(string, tag = "2")]
1446    pub to_revision_rid: ::prost::alloc::string::String,
1447    #[prost(int32, optional, tag = "3")]
1448    pub page_size: ::core::option::Option<i32>,
1449    #[prost(string, optional, tag = "4")]
1450    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1451}
1452#[derive(Clone, PartialEq, ::prost::Message)]
1453pub struct GetFileRevisionTextDiffPreviewResponse {
1454    #[prost(message, repeated, tag = "1")]
1455    pub changes: ::prost::alloc::vec::Vec<DiffChange>,
1456    #[prost(string, optional, tag = "2")]
1457    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1458    #[prost(uint32, tag = "3")]
1459    pub total_change_count: u32,
1460    #[prost(uint32, tag = "4")]
1461    pub total_added_lines: u32,
1462    #[prost(uint32, tag = "5")]
1463    pub total_removed_lines: u32,
1464    #[prost(string, tag = "6")]
1465    pub from_revision_rid: ::prost::alloc::string::String,
1466}
1467#[derive(Clone, PartialEq, ::prost::Message)]
1468pub struct DiffChange {
1469    #[prost(message, repeated, tag = "1")]
1470    pub context_before: ::prost::alloc::vec::Vec<ContextLine>,
1471    #[prost(message, repeated, tag = "2")]
1472    pub removed: ::prost::alloc::vec::Vec<RemovedLine>,
1473    #[prost(message, repeated, tag = "3")]
1474    pub added: ::prost::alloc::vec::Vec<AddedLine>,
1475    #[prost(message, repeated, tag = "4")]
1476    pub context_after: ::prost::alloc::vec::Vec<ContextLine>,
1477}
1478#[derive(Clone, PartialEq, ::prost::Message)]
1479pub struct ContextLine {
1480    #[prost(uint32, tag = "1")]
1481    pub from_line: u32,
1482    #[prost(uint32, tag = "2")]
1483    pub to_line: u32,
1484    #[prost(string, tag = "3")]
1485    pub text: ::prost::alloc::string::String,
1486    #[prost(bool, tag = "4")]
1487    pub text_truncated: bool,
1488}
1489#[derive(Clone, PartialEq, ::prost::Message)]
1490pub struct RemovedLine {
1491    #[prost(uint32, tag = "1")]
1492    pub from_line: u32,
1493    #[prost(string, tag = "2")]
1494    pub text: ::prost::alloc::string::String,
1495    #[prost(bool, tag = "3")]
1496    pub text_truncated: bool,
1497}
1498#[derive(Clone, PartialEq, ::prost::Message)]
1499pub struct AddedLine {
1500    #[prost(uint32, tag = "1")]
1501    pub to_line: u32,
1502    #[prost(string, tag = "2")]
1503    pub text: ::prost::alloc::string::String,
1504    #[prost(bool, tag = "3")]
1505    pub text_truncated: bool,
1506}
1507#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1508#[repr(i32)]
1509pub enum TextDiffError {
1510    Unspecified = 0,
1511    RevisionContentNotText = 1,
1512    RevisionTooLarge = 2,
1513    PageTokenStale = 3,
1514    NoPrecedingRevision = 4,
1515}
1516impl TextDiffError {
1517    /// String value of the enum field names used in the ProtoBuf definition.
1518    ///
1519    /// The values are not transformed in any way and thus are considered stable
1520    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1521    pub fn as_str_name(&self) -> &'static str {
1522        match self {
1523            Self::Unspecified => "TEXT_DIFF_ERROR_UNSPECIFIED",
1524            Self::RevisionContentNotText => "TEXT_DIFF_ERROR_REVISION_CONTENT_NOT_TEXT",
1525            Self::RevisionTooLarge => "TEXT_DIFF_ERROR_REVISION_TOO_LARGE",
1526            Self::PageTokenStale => "TEXT_DIFF_ERROR_PAGE_TOKEN_STALE",
1527            Self::NoPrecedingRevision => "TEXT_DIFF_ERROR_NO_PRECEDING_REVISION",
1528        }
1529    }
1530    /// Creates an enum from field names used in the ProtoBuf definition.
1531    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1532        match value {
1533            "TEXT_DIFF_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1534            "TEXT_DIFF_ERROR_REVISION_CONTENT_NOT_TEXT" => {
1535                Some(Self::RevisionContentNotText)
1536            }
1537            "TEXT_DIFF_ERROR_REVISION_TOO_LARGE" => Some(Self::RevisionTooLarge),
1538            "TEXT_DIFF_ERROR_PAGE_TOKEN_STALE" => Some(Self::PageTokenStale),
1539            "TEXT_DIFF_ERROR_NO_PRECEDING_REVISION" => Some(Self::NoPrecedingRevision),
1540            _ => None,
1541        }
1542    }
1543}
1544/// Generated client implementations.
1545pub mod file_content_service_client {
1546    #![allow(
1547        unused_variables,
1548        dead_code,
1549        missing_docs,
1550        clippy::wildcard_imports,
1551        clippy::let_unit_value,
1552    )]
1553    use tonic::codegen::*;
1554    use tonic::codegen::http::Uri;
1555    #[derive(Debug, Clone)]
1556    pub struct FileContentServiceClient<T> {
1557        inner: tonic::client::Grpc<T>,
1558    }
1559    impl FileContentServiceClient<tonic::transport::Channel> {
1560        /// Attempt to create a new client by connecting to a given endpoint.
1561        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1562        where
1563            D: TryInto<tonic::transport::Endpoint>,
1564            D::Error: Into<StdError>,
1565        {
1566            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1567            Ok(Self::new(conn))
1568        }
1569    }
1570    impl<T> FileContentServiceClient<T>
1571    where
1572        T: tonic::client::GrpcService<tonic::body::Body>,
1573        T::Error: Into<StdError>,
1574        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1575        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1576    {
1577        pub fn new(inner: T) -> Self {
1578            let inner = tonic::client::Grpc::new(inner);
1579            Self { inner }
1580        }
1581        pub fn with_origin(inner: T, origin: Uri) -> Self {
1582            let inner = tonic::client::Grpc::with_origin(inner, origin);
1583            Self { inner }
1584        }
1585        pub fn with_interceptor<F>(
1586            inner: T,
1587            interceptor: F,
1588        ) -> FileContentServiceClient<InterceptedService<T, F>>
1589        where
1590            F: tonic::service::Interceptor,
1591            T::ResponseBody: Default,
1592            T: tonic::codegen::Service<
1593                http::Request<tonic::body::Body>,
1594                Response = http::Response<
1595                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1596                >,
1597            >,
1598            <T as tonic::codegen::Service<
1599                http::Request<tonic::body::Body>,
1600            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1601        {
1602            FileContentServiceClient::new(InterceptedService::new(inner, interceptor))
1603        }
1604        /// Compress requests with the given encoding.
1605        ///
1606        /// This requires the server to support it otherwise it might respond with an
1607        /// error.
1608        #[must_use]
1609        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1610            self.inner = self.inner.send_compressed(encoding);
1611            self
1612        }
1613        /// Enable decompressing responses.
1614        #[must_use]
1615        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1616            self.inner = self.inner.accept_compressed(encoding);
1617            self
1618        }
1619        /// Limits the maximum size of a decoded message.
1620        ///
1621        /// Default: `4MB`
1622        #[must_use]
1623        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1624            self.inner = self.inner.max_decoding_message_size(limit);
1625            self
1626        }
1627        /// Limits the maximum size of an encoded message.
1628        ///
1629        /// Default: `usize::MAX`
1630        #[must_use]
1631        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1632            self.inner = self.inner.max_encoding_message_size(limit);
1633            self
1634        }
1635        pub async fn get_file_revision_text_diff_preview(
1636            &mut self,
1637            request: impl tonic::IntoRequest<
1638                super::GetFileRevisionTextDiffPreviewRequest,
1639            >,
1640        ) -> std::result::Result<
1641            tonic::Response<super::GetFileRevisionTextDiffPreviewResponse>,
1642            tonic::Status,
1643        > {
1644            self.inner
1645                .ready()
1646                .await
1647                .map_err(|e| {
1648                    tonic::Status::unknown(
1649                        format!("Service was not ready: {}", e.into()),
1650                    )
1651                })?;
1652            let codec = tonic::codec::ProstCodec::default();
1653            let path = http::uri::PathAndQuery::from_static(
1654                "/nominal.file_store.v1.FileContentService/GetFileRevisionTextDiffPreview",
1655            );
1656            let mut req = request.into_request();
1657            req.extensions_mut()
1658                .insert(
1659                    GrpcMethod::new(
1660                        "nominal.file_store.v1.FileContentService",
1661                        "GetFileRevisionTextDiffPreview",
1662                    ),
1663                );
1664            self.inner.unary(req, path, codec).await
1665        }
1666    }
1667}
1668#[derive(Clone, PartialEq, ::prost::Message)]
1669pub struct UploadedObjectRef {
1670    #[prost(string, tag = "1")]
1671    pub object_key: ::prost::alloc::string::String,
1672}
1673#[derive(Clone, PartialEq, ::prost::Message)]
1674pub struct PathTarget {
1675    #[prost(message, optional, tag = "1")]
1676    pub path: ::core::option::Option<LogicalPath>,
1677}
1678#[derive(Clone, PartialEq, ::prost::Message)]
1679pub struct Destination {
1680    #[prost(oneof = "destination::Target", tags = "1, 2")]
1681    pub target: ::core::option::Option<destination::Target>,
1682}
1683/// Nested message and enum types in `Destination`.
1684pub mod destination {
1685    #[derive(Clone, PartialEq, ::prost::Oneof)]
1686    pub enum Target {
1687        #[prost(message, tag = "1")]
1688        Path(super::PathTarget),
1689        #[prost(string, tag = "2")]
1690        FileRevisionRid(::prost::alloc::string::String),
1691    }
1692}
1693#[derive(Clone, PartialEq, ::prost::Message)]
1694pub struct PutFile {
1695    #[prost(message, optional, tag = "1")]
1696    pub object: ::core::option::Option<UploadedObjectRef>,
1697    #[prost(uint64, tag = "2")]
1698    pub size_bytes: u64,
1699    #[prost(message, optional, tag = "3")]
1700    pub destination: ::core::option::Option<Destination>,
1701}
1702#[derive(Clone, PartialEq, ::prost::Message)]
1703pub struct MoveFile {
1704    #[prost(string, tag = "1")]
1705    pub source_revision_rid: ::prost::alloc::string::String,
1706    #[prost(message, optional, tag = "2")]
1707    pub destination: ::core::option::Option<Destination>,
1708}
1709#[derive(Clone, PartialEq, ::prost::Message)]
1710pub struct RemoveFile {
1711    #[prost(string, tag = "1")]
1712    pub revision_rid: ::prost::alloc::string::String,
1713}
1714#[derive(Clone, PartialEq, ::prost::Message)]
1715pub struct RestoreFile {
1716    #[prost(string, tag = "1")]
1717    pub restore_revision_rid: ::prost::alloc::string::String,
1718    #[prost(message, optional, tag = "2")]
1719    pub destination: ::core::option::Option<Destination>,
1720}
1721#[derive(Clone, PartialEq, ::prost::Message)]
1722pub struct MoveDirectory {
1723    #[prost(message, optional, tag = "1")]
1724    pub from: ::core::option::Option<LogicalPath>,
1725    #[prost(message, optional, tag = "2")]
1726    pub to: ::core::option::Option<LogicalPath>,
1727}
1728#[derive(Clone, PartialEq, ::prost::Message)]
1729pub struct FileChange {
1730    #[prost(oneof = "file_change::Change", tags = "1, 2, 3, 4, 5")]
1731    pub change: ::core::option::Option<file_change::Change>,
1732}
1733/// Nested message and enum types in `FileChange`.
1734pub mod file_change {
1735    #[derive(Clone, PartialEq, ::prost::Oneof)]
1736    pub enum Change {
1737        #[prost(message, tag = "1")]
1738        Put(super::PutFile),
1739        #[prost(message, tag = "2")]
1740        Move(super::MoveFile),
1741        #[prost(message, tag = "3")]
1742        Remove(super::RemoveFile),
1743        #[prost(message, tag = "4")]
1744        Restore(super::RestoreFile),
1745        #[prost(message, tag = "5")]
1746        MoveDirectory(super::MoveDirectory),
1747    }
1748}
1749#[derive(Clone, PartialEq, ::prost::Message)]
1750pub struct GetFileRequest {
1751    #[prost(string, tag = "1")]
1752    pub drive_rid: ::prost::alloc::string::String,
1753    #[prost(message, optional, tag = "2")]
1754    pub path: ::core::option::Option<LogicalPath>,
1755    #[prost(bool, tag = "3")]
1756    pub include_removed: bool,
1757}
1758#[derive(Clone, PartialEq, ::prost::Message)]
1759pub struct GetFileByIdentityRequest {
1760    #[prost(message, optional, tag = "1")]
1761    pub identity: ::core::option::Option<LogicalFileIdentity>,
1762}
1763#[derive(Clone, PartialEq, ::prost::Message)]
1764pub struct GetFileResponse {
1765    #[prost(message, optional, tag = "1")]
1766    pub file: ::core::option::Option<LogicalFile>,
1767    #[prost(string, tag = "2")]
1768    pub drive_rid: ::prost::alloc::string::String,
1769}
1770#[derive(Clone, PartialEq, ::prost::Message)]
1771pub struct GetFileByIdentityResponse {
1772    #[prost(message, optional, tag = "1")]
1773    pub file: ::core::option::Option<LogicalFile>,
1774    #[prost(string, tag = "2")]
1775    pub drive_rid: ::prost::alloc::string::String,
1776}
1777#[derive(Clone, PartialEq, ::prost::Message)]
1778pub struct ResolveFileRevisionRequest {
1779    #[prost(message, optional, tag = "2")]
1780    pub source_ref: ::core::option::Option<FileRevisionRef>,
1781}
1782#[derive(Clone, PartialEq, ::prost::Message)]
1783pub struct ResolveFileRevisionResponse {
1784    #[prost(string, tag = "1")]
1785    pub file_revision_rid: ::prost::alloc::string::String,
1786    #[prost(string, tag = "2")]
1787    pub drive_rid: ::prost::alloc::string::String,
1788    #[prost(message, optional, tag = "3")]
1789    pub file_revision: ::core::option::Option<FileRevision>,
1790}
1791#[derive(Clone, PartialEq, ::prost::Message)]
1792pub struct ListFilesRequest {
1793    #[prost(string, tag = "1")]
1794    pub drive_rid: ::prost::alloc::string::String,
1795    #[prost(message, optional, tag = "2")]
1796    pub parent_path: ::core::option::Option<LogicalPath>,
1797    #[prost(bool, tag = "3")]
1798    pub include_removed: bool,
1799    #[prost(int32, optional, tag = "4")]
1800    pub page_size: ::core::option::Option<i32>,
1801    #[prost(string, optional, tag = "5")]
1802    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1803}
1804#[derive(Clone, PartialEq, ::prost::Message)]
1805pub struct ListFilesResponse {
1806    #[prost(message, repeated, tag = "1")]
1807    pub entries: ::prost::alloc::vec::Vec<FileEntry>,
1808    #[prost(string, optional, tag = "2")]
1809    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1810}
1811#[derive(Clone, PartialEq, ::prost::Message)]
1812pub struct ApplyFileChangesRequest {
1813    #[prost(string, tag = "1")]
1814    pub drive_rid: ::prost::alloc::string::String,
1815    #[prost(message, repeated, tag = "2")]
1816    pub changes: ::prost::alloc::vec::Vec<FileChange>,
1817}
1818#[derive(Clone, PartialEq, ::prost::Message)]
1819pub struct ApplyFileChangesResponse {
1820    #[prost(message, repeated, tag = "1")]
1821    pub results: ::prost::alloc::vec::Vec<FileChangeResult>,
1822}
1823#[derive(Clone, PartialEq, ::prost::Message)]
1824pub struct FileChangeSuccess {
1825    #[prost(message, optional, tag = "1")]
1826    pub file: ::core::option::Option<LogicalFile>,
1827    #[prost(message, optional, tag = "2")]
1828    pub file_revision: ::core::option::Option<ManagedFileRevision>,
1829}
1830#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1831pub struct MoveDirectorySuccess {}
1832#[derive(Clone, PartialEq, ::prost::Message)]
1833pub struct FileChangeFailure {
1834    #[prost(string, tag = "2")]
1835    pub message: ::prost::alloc::string::String,
1836    #[prost(oneof = "file_change_failure::Error", tags = "3, 4")]
1837    pub error: ::core::option::Option<file_change_failure::Error>,
1838}
1839/// Nested message and enum types in `FileChangeFailure`.
1840pub mod file_change_failure {
1841    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1842    pub enum Error {
1843        #[prost(enumeration = "super::FileStoreCommonError", tag = "3")]
1844        Common(i32),
1845        #[prost(enumeration = "super::FileChangeError", tag = "4")]
1846        Change(i32),
1847    }
1848}
1849#[derive(Clone, PartialEq, ::prost::Message)]
1850pub struct FileChangeResult {
1851    #[prost(oneof = "file_change_result::Result", tags = "1, 2, 3")]
1852    pub result: ::core::option::Option<file_change_result::Result>,
1853}
1854/// Nested message and enum types in `FileChangeResult`.
1855pub mod file_change_result {
1856    #[derive(Clone, PartialEq, ::prost::Oneof)]
1857    pub enum Result {
1858        #[prost(message, tag = "1")]
1859        Success(super::FileChangeSuccess),
1860        #[prost(message, tag = "2")]
1861        Failure(super::FileChangeFailure),
1862        #[prost(message, tag = "3")]
1863        DirectoryMoved(super::MoveDirectorySuccess),
1864    }
1865}
1866#[derive(Clone, PartialEq, ::prost::Message)]
1867pub struct ListFileRevisionsRequest {
1868    #[prost(string, tag = "1")]
1869    pub drive_rid: ::prost::alloc::string::String,
1870    #[prost(string, tag = "2")]
1871    pub file_rid: ::prost::alloc::string::String,
1872    #[prost(int32, optional, tag = "3")]
1873    pub page_size: ::core::option::Option<i32>,
1874    #[prost(string, optional, tag = "4")]
1875    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1876}
1877#[derive(Clone, PartialEq, ::prost::Message)]
1878pub struct ListFileRevisionsResponse {
1879    #[prost(message, repeated, tag = "1")]
1880    pub file_revisions: ::prost::alloc::vec::Vec<ManagedFileRevision>,
1881    #[prost(string, optional, tag = "2")]
1882    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1883}
1884#[derive(Clone, PartialEq, ::prost::Message)]
1885pub struct PurgeFileRequest {
1886    #[prost(string, tag = "1")]
1887    pub file_revision_rid: ::prost::alloc::string::String,
1888}
1889#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1890pub struct PurgeFileResponse {}
1891#[derive(Clone, PartialEq, ::prost::Message)]
1892pub struct GetDownloadUrlRequest {
1893    #[prost(string, tag = "1")]
1894    pub file_revision_rid: ::prost::alloc::string::String,
1895}
1896#[derive(Clone, PartialEq, ::prost::Message)]
1897pub struct GetDownloadUrlResponse {
1898    #[prost(string, tag = "1")]
1899    pub url: ::prost::alloc::string::String,
1900}
1901#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1902#[repr(i32)]
1903pub enum RevisionReadError {
1904    Unspecified = 0,
1905    BytesReclaimed = 1,
1906    MaterializationFailed = 2,
1907}
1908impl RevisionReadError {
1909    /// String value of the enum field names used in the ProtoBuf definition.
1910    ///
1911    /// The values are not transformed in any way and thus are considered stable
1912    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1913    pub fn as_str_name(&self) -> &'static str {
1914        match self {
1915            Self::Unspecified => "REVISION_READ_ERROR_UNSPECIFIED",
1916            Self::BytesReclaimed => "REVISION_READ_ERROR_BYTES_RECLAIMED",
1917            Self::MaterializationFailed => "REVISION_READ_ERROR_MATERIALIZATION_FAILED",
1918        }
1919    }
1920    /// Creates an enum from field names used in the ProtoBuf definition.
1921    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1922        match value {
1923            "REVISION_READ_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1924            "REVISION_READ_ERROR_BYTES_RECLAIMED" => Some(Self::BytesReclaimed),
1925            "REVISION_READ_ERROR_MATERIALIZATION_FAILED" => {
1926                Some(Self::MaterializationFailed)
1927            }
1928            _ => None,
1929        }
1930    }
1931}
1932#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1933#[repr(i32)]
1934pub enum FileChangeError {
1935    Unspecified = 0,
1936    PathAlreadyExists = 1,
1937    InvalidLogicalPath = 2,
1938    RevisionPreconditionFailed = 3,
1939    ReadOnlyDrive = 4,
1940    UploadedObjectNotFound = 5,
1941    DirectoryMoveLimitExceeded = 6,
1942}
1943impl FileChangeError {
1944    /// String value of the enum field names used in the ProtoBuf definition.
1945    ///
1946    /// The values are not transformed in any way and thus are considered stable
1947    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1948    pub fn as_str_name(&self) -> &'static str {
1949        match self {
1950            Self::Unspecified => "FILE_CHANGE_ERROR_UNSPECIFIED",
1951            Self::PathAlreadyExists => "FILE_CHANGE_ERROR_PATH_ALREADY_EXISTS",
1952            Self::InvalidLogicalPath => "FILE_CHANGE_ERROR_INVALID_LOGICAL_PATH",
1953            Self::RevisionPreconditionFailed => {
1954                "FILE_CHANGE_ERROR_REVISION_PRECONDITION_FAILED"
1955            }
1956            Self::ReadOnlyDrive => "FILE_CHANGE_ERROR_READ_ONLY_DRIVE",
1957            Self::UploadedObjectNotFound => "FILE_CHANGE_ERROR_UPLOADED_OBJECT_NOT_FOUND",
1958            Self::DirectoryMoveLimitExceeded => {
1959                "FILE_CHANGE_ERROR_DIRECTORY_MOVE_LIMIT_EXCEEDED"
1960            }
1961        }
1962    }
1963    /// Creates an enum from field names used in the ProtoBuf definition.
1964    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1965        match value {
1966            "FILE_CHANGE_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1967            "FILE_CHANGE_ERROR_PATH_ALREADY_EXISTS" => Some(Self::PathAlreadyExists),
1968            "FILE_CHANGE_ERROR_INVALID_LOGICAL_PATH" => Some(Self::InvalidLogicalPath),
1969            "FILE_CHANGE_ERROR_REVISION_PRECONDITION_FAILED" => {
1970                Some(Self::RevisionPreconditionFailed)
1971            }
1972            "FILE_CHANGE_ERROR_READ_ONLY_DRIVE" => Some(Self::ReadOnlyDrive),
1973            "FILE_CHANGE_ERROR_UPLOADED_OBJECT_NOT_FOUND" => {
1974                Some(Self::UploadedObjectNotFound)
1975            }
1976            "FILE_CHANGE_ERROR_DIRECTORY_MOVE_LIMIT_EXCEEDED" => {
1977                Some(Self::DirectoryMoveLimitExceeded)
1978            }
1979            _ => None,
1980        }
1981    }
1982}
1983/// Generated client implementations.
1984pub mod files_service_client {
1985    #![allow(
1986        unused_variables,
1987        dead_code,
1988        missing_docs,
1989        clippy::wildcard_imports,
1990        clippy::let_unit_value,
1991    )]
1992    use tonic::codegen::*;
1993    use tonic::codegen::http::Uri;
1994    #[derive(Debug, Clone)]
1995    pub struct FilesServiceClient<T> {
1996        inner: tonic::client::Grpc<T>,
1997    }
1998    impl FilesServiceClient<tonic::transport::Channel> {
1999        /// Attempt to create a new client by connecting to a given endpoint.
2000        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2001        where
2002            D: TryInto<tonic::transport::Endpoint>,
2003            D::Error: Into<StdError>,
2004        {
2005            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2006            Ok(Self::new(conn))
2007        }
2008    }
2009    impl<T> FilesServiceClient<T>
2010    where
2011        T: tonic::client::GrpcService<tonic::body::Body>,
2012        T::Error: Into<StdError>,
2013        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2014        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2015    {
2016        pub fn new(inner: T) -> Self {
2017            let inner = tonic::client::Grpc::new(inner);
2018            Self { inner }
2019        }
2020        pub fn with_origin(inner: T, origin: Uri) -> Self {
2021            let inner = tonic::client::Grpc::with_origin(inner, origin);
2022            Self { inner }
2023        }
2024        pub fn with_interceptor<F>(
2025            inner: T,
2026            interceptor: F,
2027        ) -> FilesServiceClient<InterceptedService<T, F>>
2028        where
2029            F: tonic::service::Interceptor,
2030            T::ResponseBody: Default,
2031            T: tonic::codegen::Service<
2032                http::Request<tonic::body::Body>,
2033                Response = http::Response<
2034                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2035                >,
2036            >,
2037            <T as tonic::codegen::Service<
2038                http::Request<tonic::body::Body>,
2039            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2040        {
2041            FilesServiceClient::new(InterceptedService::new(inner, interceptor))
2042        }
2043        /// Compress requests with the given encoding.
2044        ///
2045        /// This requires the server to support it otherwise it might respond with an
2046        /// error.
2047        #[must_use]
2048        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2049            self.inner = self.inner.send_compressed(encoding);
2050            self
2051        }
2052        /// Enable decompressing responses.
2053        #[must_use]
2054        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2055            self.inner = self.inner.accept_compressed(encoding);
2056            self
2057        }
2058        /// Limits the maximum size of a decoded message.
2059        ///
2060        /// Default: `4MB`
2061        #[must_use]
2062        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2063            self.inner = self.inner.max_decoding_message_size(limit);
2064            self
2065        }
2066        /// Limits the maximum size of an encoded message.
2067        ///
2068        /// Default: `usize::MAX`
2069        #[must_use]
2070        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2071            self.inner = self.inner.max_encoding_message_size(limit);
2072            self
2073        }
2074        pub async fn get_file(
2075            &mut self,
2076            request: impl tonic::IntoRequest<super::GetFileRequest>,
2077        ) -> std::result::Result<
2078            tonic::Response<super::GetFileResponse>,
2079            tonic::Status,
2080        > {
2081            self.inner
2082                .ready()
2083                .await
2084                .map_err(|e| {
2085                    tonic::Status::unknown(
2086                        format!("Service was not ready: {}", e.into()),
2087                    )
2088                })?;
2089            let codec = tonic::codec::ProstCodec::default();
2090            let path = http::uri::PathAndQuery::from_static(
2091                "/nominal.file_store.v1.FilesService/GetFile",
2092            );
2093            let mut req = request.into_request();
2094            req.extensions_mut()
2095                .insert(
2096                    GrpcMethod::new("nominal.file_store.v1.FilesService", "GetFile"),
2097                );
2098            self.inner.unary(req, path, codec).await
2099        }
2100        pub async fn get_file_by_identity(
2101            &mut self,
2102            request: impl tonic::IntoRequest<super::GetFileByIdentityRequest>,
2103        ) -> std::result::Result<
2104            tonic::Response<super::GetFileByIdentityResponse>,
2105            tonic::Status,
2106        > {
2107            self.inner
2108                .ready()
2109                .await
2110                .map_err(|e| {
2111                    tonic::Status::unknown(
2112                        format!("Service was not ready: {}", e.into()),
2113                    )
2114                })?;
2115            let codec = tonic::codec::ProstCodec::default();
2116            let path = http::uri::PathAndQuery::from_static(
2117                "/nominal.file_store.v1.FilesService/GetFileByIdentity",
2118            );
2119            let mut req = request.into_request();
2120            req.extensions_mut()
2121                .insert(
2122                    GrpcMethod::new(
2123                        "nominal.file_store.v1.FilesService",
2124                        "GetFileByIdentity",
2125                    ),
2126                );
2127            self.inner.unary(req, path, codec).await
2128        }
2129        pub async fn resolve_file_revision(
2130            &mut self,
2131            request: impl tonic::IntoRequest<super::ResolveFileRevisionRequest>,
2132        ) -> std::result::Result<
2133            tonic::Response<super::ResolveFileRevisionResponse>,
2134            tonic::Status,
2135        > {
2136            self.inner
2137                .ready()
2138                .await
2139                .map_err(|e| {
2140                    tonic::Status::unknown(
2141                        format!("Service was not ready: {}", e.into()),
2142                    )
2143                })?;
2144            let codec = tonic::codec::ProstCodec::default();
2145            let path = http::uri::PathAndQuery::from_static(
2146                "/nominal.file_store.v1.FilesService/ResolveFileRevision",
2147            );
2148            let mut req = request.into_request();
2149            req.extensions_mut()
2150                .insert(
2151                    GrpcMethod::new(
2152                        "nominal.file_store.v1.FilesService",
2153                        "ResolveFileRevision",
2154                    ),
2155                );
2156            self.inner.unary(req, path, codec).await
2157        }
2158        pub async fn list_files(
2159            &mut self,
2160            request: impl tonic::IntoRequest<super::ListFilesRequest>,
2161        ) -> std::result::Result<
2162            tonic::Response<super::ListFilesResponse>,
2163            tonic::Status,
2164        > {
2165            self.inner
2166                .ready()
2167                .await
2168                .map_err(|e| {
2169                    tonic::Status::unknown(
2170                        format!("Service was not ready: {}", e.into()),
2171                    )
2172                })?;
2173            let codec = tonic::codec::ProstCodec::default();
2174            let path = http::uri::PathAndQuery::from_static(
2175                "/nominal.file_store.v1.FilesService/ListFiles",
2176            );
2177            let mut req = request.into_request();
2178            req.extensions_mut()
2179                .insert(
2180                    GrpcMethod::new("nominal.file_store.v1.FilesService", "ListFiles"),
2181                );
2182            self.inner.unary(req, path, codec).await
2183        }
2184        pub async fn apply_file_changes(
2185            &mut self,
2186            request: impl tonic::IntoRequest<super::ApplyFileChangesRequest>,
2187        ) -> std::result::Result<
2188            tonic::Response<super::ApplyFileChangesResponse>,
2189            tonic::Status,
2190        > {
2191            self.inner
2192                .ready()
2193                .await
2194                .map_err(|e| {
2195                    tonic::Status::unknown(
2196                        format!("Service was not ready: {}", e.into()),
2197                    )
2198                })?;
2199            let codec = tonic::codec::ProstCodec::default();
2200            let path = http::uri::PathAndQuery::from_static(
2201                "/nominal.file_store.v1.FilesService/ApplyFileChanges",
2202            );
2203            let mut req = request.into_request();
2204            req.extensions_mut()
2205                .insert(
2206                    GrpcMethod::new(
2207                        "nominal.file_store.v1.FilesService",
2208                        "ApplyFileChanges",
2209                    ),
2210                );
2211            self.inner.unary(req, path, codec).await
2212        }
2213        pub async fn list_file_revisions(
2214            &mut self,
2215            request: impl tonic::IntoRequest<super::ListFileRevisionsRequest>,
2216        ) -> std::result::Result<
2217            tonic::Response<super::ListFileRevisionsResponse>,
2218            tonic::Status,
2219        > {
2220            self.inner
2221                .ready()
2222                .await
2223                .map_err(|e| {
2224                    tonic::Status::unknown(
2225                        format!("Service was not ready: {}", e.into()),
2226                    )
2227                })?;
2228            let codec = tonic::codec::ProstCodec::default();
2229            let path = http::uri::PathAndQuery::from_static(
2230                "/nominal.file_store.v1.FilesService/ListFileRevisions",
2231            );
2232            let mut req = request.into_request();
2233            req.extensions_mut()
2234                .insert(
2235                    GrpcMethod::new(
2236                        "nominal.file_store.v1.FilesService",
2237                        "ListFileRevisions",
2238                    ),
2239                );
2240            self.inner.unary(req, path, codec).await
2241        }
2242        pub async fn purge_file(
2243            &mut self,
2244            request: impl tonic::IntoRequest<super::PurgeFileRequest>,
2245        ) -> std::result::Result<
2246            tonic::Response<super::PurgeFileResponse>,
2247            tonic::Status,
2248        > {
2249            self.inner
2250                .ready()
2251                .await
2252                .map_err(|e| {
2253                    tonic::Status::unknown(
2254                        format!("Service was not ready: {}", e.into()),
2255                    )
2256                })?;
2257            let codec = tonic::codec::ProstCodec::default();
2258            let path = http::uri::PathAndQuery::from_static(
2259                "/nominal.file_store.v1.FilesService/PurgeFile",
2260            );
2261            let mut req = request.into_request();
2262            req.extensions_mut()
2263                .insert(
2264                    GrpcMethod::new("nominal.file_store.v1.FilesService", "PurgeFile"),
2265                );
2266            self.inner.unary(req, path, codec).await
2267        }
2268        pub async fn get_download_url(
2269            &mut self,
2270            request: impl tonic::IntoRequest<super::GetDownloadUrlRequest>,
2271        ) -> std::result::Result<
2272            tonic::Response<super::GetDownloadUrlResponse>,
2273            tonic::Status,
2274        > {
2275            self.inner
2276                .ready()
2277                .await
2278                .map_err(|e| {
2279                    tonic::Status::unknown(
2280                        format!("Service was not ready: {}", e.into()),
2281                    )
2282                })?;
2283            let codec = tonic::codec::ProstCodec::default();
2284            let path = http::uri::PathAndQuery::from_static(
2285                "/nominal.file_store.v1.FilesService/GetDownloadUrl",
2286            );
2287            let mut req = request.into_request();
2288            req.extensions_mut()
2289                .insert(
2290                    GrpcMethod::new(
2291                        "nominal.file_store.v1.FilesService",
2292                        "GetDownloadUrl",
2293                    ),
2294                );
2295            self.inner.unary(req, path, codec).await
2296        }
2297    }
2298}
2299#[derive(Clone, PartialEq, ::prost::Message)]
2300pub struct CreateIngestRuleRequest {
2301    #[prost(string, tag = "1")]
2302    pub drive_rid: ::prost::alloc::string::String,
2303    #[prost(message, optional, tag = "2")]
2304    pub matcher: ::core::option::Option<FileMatcher>,
2305    #[prost(message, optional, tag = "3")]
2306    pub triggers: ::core::option::Option<IngestTriggers>,
2307    #[prost(enumeration = "BackfillMode", tag = "4")]
2308    pub backfill_mode: i32,
2309}
2310#[derive(Clone, PartialEq, ::prost::Message)]
2311pub struct CreateIngestRuleResponse {
2312    #[prost(message, optional, tag = "1")]
2313    pub rule: ::core::option::Option<IngestRule>,
2314}
2315#[derive(Clone, PartialEq, ::prost::Message)]
2316pub struct ListIngestRulesRequest {
2317    #[prost(string, tag = "1")]
2318    pub drive_rid: ::prost::alloc::string::String,
2319    #[prost(bool, tag = "2")]
2320    pub include_archived: bool,
2321    #[prost(int32, optional, tag = "3")]
2322    pub page_size: ::core::option::Option<i32>,
2323    #[prost(string, optional, tag = "4")]
2324    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
2325}
2326#[derive(Clone, PartialEq, ::prost::Message)]
2327pub struct ListIngestRulesResponse {
2328    #[prost(message, repeated, tag = "1")]
2329    pub rules: ::prost::alloc::vec::Vec<IngestRule>,
2330    #[prost(string, optional, tag = "2")]
2331    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
2332}
2333#[derive(Clone, PartialEq, ::prost::Message)]
2334pub struct GetIngestRuleRequest {
2335    #[prost(string, tag = "1")]
2336    pub rule_rid: ::prost::alloc::string::String,
2337}
2338#[derive(Clone, PartialEq, ::prost::Message)]
2339pub struct GetIngestRuleResponse {
2340    #[prost(message, optional, tag = "1")]
2341    pub rule: ::core::option::Option<IngestRule>,
2342}
2343#[derive(Clone, PartialEq, ::prost::Message)]
2344pub struct UpdateIngestRuleRequest {
2345    #[prost(string, tag = "1")]
2346    pub rule_rid: ::prost::alloc::string::String,
2347    #[prost(message, optional, tag = "2")]
2348    pub matcher: ::core::option::Option<FileMatcher>,
2349    #[prost(message, optional, tag = "3")]
2350    pub triggers: ::core::option::Option<IngestTriggers>,
2351}
2352#[derive(Clone, PartialEq, ::prost::Message)]
2353pub struct UpdateIngestRuleResponse {
2354    #[prost(message, optional, tag = "1")]
2355    pub rule: ::core::option::Option<IngestRule>,
2356}
2357#[derive(Clone, PartialEq, ::prost::Message)]
2358pub struct ArchiveIngestRuleRequest {
2359    #[prost(string, tag = "1")]
2360    pub rule_rid: ::prost::alloc::string::String,
2361}
2362#[derive(Clone, PartialEq, ::prost::Message)]
2363pub struct ArchiveIngestRuleResponse {
2364    #[prost(message, optional, tag = "1")]
2365    pub rule: ::core::option::Option<IngestRule>,
2366}
2367#[derive(Clone, PartialEq, ::prost::Message)]
2368pub struct UnarchiveIngestRuleRequest {
2369    #[prost(string, tag = "1")]
2370    pub rule_rid: ::prost::alloc::string::String,
2371    #[prost(enumeration = "BackfillMode", tag = "2")]
2372    pub backfill_mode: i32,
2373}
2374#[derive(Clone, PartialEq, ::prost::Message)]
2375pub struct UnarchiveIngestRuleResponse {
2376    #[prost(message, optional, tag = "1")]
2377    pub rule: ::core::option::Option<IngestRule>,
2378}
2379#[derive(Clone, PartialEq, ::prost::Message)]
2380pub struct IngestRule {
2381    #[prost(string, tag = "1")]
2382    pub rule_rid: ::prost::alloc::string::String,
2383    #[prost(string, tag = "2")]
2384    pub drive_rid: ::prost::alloc::string::String,
2385    #[prost(message, optional, tag = "3")]
2386    pub matcher: ::core::option::Option<FileMatcher>,
2387    #[prost(message, optional, tag = "4")]
2388    pub triggers: ::core::option::Option<IngestTriggers>,
2389    #[prost(message, optional, tag = "5")]
2390    pub created: ::core::option::Option<Attribution>,
2391    #[prost(enumeration = "IngestRuleState", tag = "6")]
2392    pub state: i32,
2393    #[prost(message, optional, tag = "7")]
2394    pub archived: ::core::option::Option<Attribution>,
2395    #[prost(message, optional, tag = "8")]
2396    pub updated: ::core::option::Option<Attribution>,
2397}
2398#[derive(Clone, PartialEq, ::prost::Message)]
2399pub struct FileMatcher {
2400    #[prost(oneof = "file_matcher::Matcher", tags = "1")]
2401    pub matcher: ::core::option::Option<file_matcher::Matcher>,
2402}
2403/// Nested message and enum types in `FileMatcher`.
2404pub mod file_matcher {
2405    #[derive(Clone, PartialEq, ::prost::Oneof)]
2406    pub enum Matcher {
2407        #[prost(message, tag = "1")]
2408        Path(super::PathMatcher),
2409    }
2410}
2411#[derive(Clone, PartialEq, ::prost::Message)]
2412pub struct PathMatcher {
2413    #[prost(message, optional, tag = "1")]
2414    pub pattern: ::core::option::Option<PathPattern>,
2415    #[prost(message, optional, tag = "2")]
2416    pub format: ::core::option::Option<FormatConfig>,
2417}
2418#[derive(Clone, PartialEq, ::prost::Message)]
2419pub struct FormatConfig {
2420    #[prost(oneof = "format_config::Format", tags = "1, 2, 3, 4, 5")]
2421    pub format: ::core::option::Option<format_config::Format>,
2422}
2423/// Nested message and enum types in `FormatConfig`.
2424pub mod format_config {
2425    #[derive(Clone, PartialEq, ::prost::Oneof)]
2426    pub enum Format {
2427        #[prost(message, tag = "1")]
2428        Csv(super::CsvIngestConfig),
2429        #[prost(message, tag = "2")]
2430        Parquet(super::ParquetIngestConfig),
2431        #[prost(message, tag = "3")]
2432        Dataflash(super::DataflashIngestConfig),
2433        #[prost(message, tag = "4")]
2434        Containerized(super::ContainerizedIngestConfig),
2435        #[prost(message, tag = "5")]
2436        Mcap(super::McapIngestConfig),
2437    }
2438}
2439#[derive(Clone, PartialEq, ::prost::Message)]
2440pub struct ContainerizedIngestConfig {
2441    #[prost(string, tag = "1")]
2442    pub extractor_rid: ::prost::alloc::string::String,
2443    #[prost(map = "string, string", tag = "2")]
2444    pub arguments: ::std::collections::HashMap<
2445        ::prost::alloc::string::String,
2446        ::prost::alloc::string::String,
2447    >,
2448    #[prost(message, optional, tag = "3")]
2449    pub timestamp: ::core::option::Option<TimestampConfig>,
2450}
2451#[derive(Clone, PartialEq, ::prost::Message)]
2452pub struct CsvIngestConfig {
2453    #[prost(message, optional, tag = "1")]
2454    pub timestamp: ::core::option::Option<TimestampConfig>,
2455    #[prost(string, optional, tag = "2")]
2456    pub channel_prefix: ::core::option::Option<::prost::alloc::string::String>,
2457}
2458#[derive(Clone, PartialEq, ::prost::Message)]
2459pub struct ParquetIngestConfig {
2460    #[prost(message, optional, tag = "1")]
2461    pub timestamp: ::core::option::Option<TimestampConfig>,
2462    #[prost(string, optional, tag = "2")]
2463    pub channel_prefix: ::core::option::Option<::prost::alloc::string::String>,
2464}
2465#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2466pub struct DataflashIngestConfig {}
2467#[derive(Clone, PartialEq, ::prost::Message)]
2468pub struct McapIngestConfig {
2469    #[prost(message, optional, tag = "1")]
2470    pub channels: ::core::option::Option<McapChannelSelection>,
2471    #[prost(bool, tag = "2")]
2472    pub ignore_invalid_topics: bool,
2473}
2474#[derive(Clone, PartialEq, ::prost::Message)]
2475pub struct McapChannelSelection {
2476    #[prost(oneof = "mcap_channel_selection::Selection", tags = "1, 2")]
2477    pub selection: ::core::option::Option<mcap_channel_selection::Selection>,
2478}
2479/// Nested message and enum types in `McapChannelSelection`.
2480pub mod mcap_channel_selection {
2481    #[derive(Clone, PartialEq, ::prost::Oneof)]
2482    pub enum Selection {
2483        #[prost(message, tag = "1")]
2484        IncludeTopics(super::McapTopicNames),
2485        #[prost(message, tag = "2")]
2486        ExcludeTopics(super::McapTopicNames),
2487    }
2488}
2489#[derive(Clone, PartialEq, ::prost::Message)]
2490pub struct McapTopicNames {
2491    #[prost(string, repeated, tag = "1")]
2492    pub topics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2493}
2494#[derive(Clone, PartialEq, ::prost::Message)]
2495pub struct TimestampConfig {
2496    #[prost(oneof = "timestamp_config::Kind", tags = "1")]
2497    pub kind: ::core::option::Option<timestamp_config::Kind>,
2498}
2499/// Nested message and enum types in `TimestampConfig`.
2500pub mod timestamp_config {
2501    #[derive(Clone, PartialEq, ::prost::Oneof)]
2502    pub enum Kind {
2503        #[prost(message, tag = "1")]
2504        Single(super::TimestampCandidate),
2505    }
2506}
2507#[derive(Clone, PartialEq, ::prost::Message)]
2508pub struct TimestampCandidate {
2509    #[prost(string, tag = "1")]
2510    pub column: ::prost::alloc::string::String,
2511    #[prost(message, optional, tag = "2")]
2512    pub r#type: ::core::option::Option<super::super::types::time::AbsoluteTimestamp>,
2513}
2514#[derive(Clone, PartialEq, ::prost::Message)]
2515pub struct PathPattern {
2516    #[prost(message, optional, tag = "1")]
2517    pub first: ::core::option::Option<PatternSegment>,
2518    #[prost(message, repeated, tag = "2")]
2519    pub rest: ::prost::alloc::vec::Vec<JoinedSegment>,
2520}
2521#[derive(Clone, PartialEq, ::prost::Message)]
2522pub struct JoinedSegment {
2523    #[prost(enumeration = "SegmentDelimiter", tag = "1")]
2524    pub delimiter: i32,
2525    #[prost(message, optional, tag = "2")]
2526    pub segment: ::core::option::Option<PatternSegment>,
2527}
2528#[derive(Clone, PartialEq, ::prost::Message)]
2529pub struct PatternSegment {
2530    #[prost(oneof = "pattern_segment::Kind", tags = "1, 2, 3")]
2531    pub kind: ::core::option::Option<pattern_segment::Kind>,
2532}
2533/// Nested message and enum types in `PatternSegment`.
2534pub mod pattern_segment {
2535    #[derive(Clone, PartialEq, ::prost::Oneof)]
2536    pub enum Kind {
2537        #[prost(message, tag = "1")]
2538        ShallowWildcard(super::ShallowWildcard),
2539        #[prost(message, tag = "2")]
2540        DeepWildcard(super::DeepWildcard),
2541        #[prost(string, tag = "3")]
2542        Literal(::prost::alloc::string::String),
2543    }
2544}
2545#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2546pub struct ShallowWildcard {}
2547#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2548pub struct DeepWildcard {}
2549#[derive(Clone, PartialEq, ::prost::Message)]
2550pub struct IngestTriggers {
2551    #[prost(message, optional, tag = "1")]
2552    pub new_match: ::core::option::Option<IngestTarget>,
2553}
2554#[derive(Clone, PartialEq, ::prost::Message)]
2555pub struct IngestTarget {
2556    #[prost(oneof = "ingest_target::Target", tags = "1, 2")]
2557    pub target: ::core::option::Option<ingest_target::Target>,
2558}
2559/// Nested message and enum types in `IngestTarget`.
2560pub mod ingest_target {
2561    #[derive(Clone, PartialEq, ::prost::Oneof)]
2562    pub enum Target {
2563        #[prost(message, tag = "1")]
2564        NewDataset(super::NewDatasetTarget),
2565        #[prost(message, tag = "2")]
2566        ExistingDataset(super::ExistingDatasetTarget),
2567    }
2568}
2569#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2570pub struct NewDatasetTarget {}
2571#[derive(Clone, PartialEq, ::prost::Message)]
2572pub struct ExistingDatasetTarget {
2573    #[prost(string, tag = "1")]
2574    pub dataset_rid: ::prost::alloc::string::String,
2575}
2576#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2577#[repr(i32)]
2578pub enum BackfillMode {
2579    Unspecified = 0,
2580    NewFilesOnly = 1,
2581    BackfillExisting = 2,
2582}
2583impl BackfillMode {
2584    /// String value of the enum field names used in the ProtoBuf definition.
2585    ///
2586    /// The values are not transformed in any way and thus are considered stable
2587    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2588    pub fn as_str_name(&self) -> &'static str {
2589        match self {
2590            Self::Unspecified => "BACKFILL_MODE_UNSPECIFIED",
2591            Self::NewFilesOnly => "BACKFILL_MODE_NEW_FILES_ONLY",
2592            Self::BackfillExisting => "BACKFILL_MODE_BACKFILL_EXISTING",
2593        }
2594    }
2595    /// Creates an enum from field names used in the ProtoBuf definition.
2596    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2597        match value {
2598            "BACKFILL_MODE_UNSPECIFIED" => Some(Self::Unspecified),
2599            "BACKFILL_MODE_NEW_FILES_ONLY" => Some(Self::NewFilesOnly),
2600            "BACKFILL_MODE_BACKFILL_EXISTING" => Some(Self::BackfillExisting),
2601            _ => None,
2602        }
2603    }
2604}
2605#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2606#[repr(i32)]
2607pub enum IngestRuleState {
2608    Unspecified = 0,
2609    Active = 1,
2610    Archived = 2,
2611}
2612impl IngestRuleState {
2613    /// String value of the enum field names used in the ProtoBuf definition.
2614    ///
2615    /// The values are not transformed in any way and thus are considered stable
2616    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2617    pub fn as_str_name(&self) -> &'static str {
2618        match self {
2619            Self::Unspecified => "INGEST_RULE_STATE_UNSPECIFIED",
2620            Self::Active => "INGEST_RULE_STATE_ACTIVE",
2621            Self::Archived => "INGEST_RULE_STATE_ARCHIVED",
2622        }
2623    }
2624    /// Creates an enum from field names used in the ProtoBuf definition.
2625    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2626        match value {
2627            "INGEST_RULE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
2628            "INGEST_RULE_STATE_ACTIVE" => Some(Self::Active),
2629            "INGEST_RULE_STATE_ARCHIVED" => Some(Self::Archived),
2630            _ => None,
2631        }
2632    }
2633}
2634#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2635#[repr(i32)]
2636pub enum SegmentDelimiter {
2637    Unspecified = 0,
2638    PathSeparator = 1,
2639    Concat = 2,
2640}
2641impl SegmentDelimiter {
2642    /// String value of the enum field names used in the ProtoBuf definition.
2643    ///
2644    /// The values are not transformed in any way and thus are considered stable
2645    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2646    pub fn as_str_name(&self) -> &'static str {
2647        match self {
2648            Self::Unspecified => "SEGMENT_DELIMITER_UNSPECIFIED",
2649            Self::PathSeparator => "SEGMENT_DELIMITER_PATH_SEPARATOR",
2650            Self::Concat => "SEGMENT_DELIMITER_CONCAT",
2651        }
2652    }
2653    /// Creates an enum from field names used in the ProtoBuf definition.
2654    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2655        match value {
2656            "SEGMENT_DELIMITER_UNSPECIFIED" => Some(Self::Unspecified),
2657            "SEGMENT_DELIMITER_PATH_SEPARATOR" => Some(Self::PathSeparator),
2658            "SEGMENT_DELIMITER_CONCAT" => Some(Self::Concat),
2659            _ => None,
2660        }
2661    }
2662}
2663#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2664#[repr(i32)]
2665pub enum IngestRulesError {
2666    Unspecified = 0,
2667    RuleNotFound = 1,
2668}
2669impl IngestRulesError {
2670    /// String value of the enum field names used in the ProtoBuf definition.
2671    ///
2672    /// The values are not transformed in any way and thus are considered stable
2673    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2674    pub fn as_str_name(&self) -> &'static str {
2675        match self {
2676            Self::Unspecified => "INGEST_RULES_ERROR_UNSPECIFIED",
2677            Self::RuleNotFound => "INGEST_RULES_ERROR_RULE_NOT_FOUND",
2678        }
2679    }
2680    /// Creates an enum from field names used in the ProtoBuf definition.
2681    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2682        match value {
2683            "INGEST_RULES_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
2684            "INGEST_RULES_ERROR_RULE_NOT_FOUND" => Some(Self::RuleNotFound),
2685            _ => None,
2686        }
2687    }
2688}
2689/// Generated client implementations.
2690pub mod internal_ingest_rules_service_client {
2691    #![allow(
2692        unused_variables,
2693        dead_code,
2694        missing_docs,
2695        clippy::wildcard_imports,
2696        clippy::let_unit_value,
2697    )]
2698    use tonic::codegen::*;
2699    use tonic::codegen::http::Uri;
2700    #[derive(Debug, Clone)]
2701    pub struct InternalIngestRulesServiceClient<T> {
2702        inner: tonic::client::Grpc<T>,
2703    }
2704    impl InternalIngestRulesServiceClient<tonic::transport::Channel> {
2705        /// Attempt to create a new client by connecting to a given endpoint.
2706        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2707        where
2708            D: TryInto<tonic::transport::Endpoint>,
2709            D::Error: Into<StdError>,
2710        {
2711            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2712            Ok(Self::new(conn))
2713        }
2714    }
2715    impl<T> InternalIngestRulesServiceClient<T>
2716    where
2717        T: tonic::client::GrpcService<tonic::body::Body>,
2718        T::Error: Into<StdError>,
2719        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2720        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2721    {
2722        pub fn new(inner: T) -> Self {
2723            let inner = tonic::client::Grpc::new(inner);
2724            Self { inner }
2725        }
2726        pub fn with_origin(inner: T, origin: Uri) -> Self {
2727            let inner = tonic::client::Grpc::with_origin(inner, origin);
2728            Self { inner }
2729        }
2730        pub fn with_interceptor<F>(
2731            inner: T,
2732            interceptor: F,
2733        ) -> InternalIngestRulesServiceClient<InterceptedService<T, F>>
2734        where
2735            F: tonic::service::Interceptor,
2736            T::ResponseBody: Default,
2737            T: tonic::codegen::Service<
2738                http::Request<tonic::body::Body>,
2739                Response = http::Response<
2740                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2741                >,
2742            >,
2743            <T as tonic::codegen::Service<
2744                http::Request<tonic::body::Body>,
2745            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2746        {
2747            InternalIngestRulesServiceClient::new(
2748                InterceptedService::new(inner, interceptor),
2749            )
2750        }
2751        /// Compress requests with the given encoding.
2752        ///
2753        /// This requires the server to support it otherwise it might respond with an
2754        /// error.
2755        #[must_use]
2756        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2757            self.inner = self.inner.send_compressed(encoding);
2758            self
2759        }
2760        /// Enable decompressing responses.
2761        #[must_use]
2762        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2763            self.inner = self.inner.accept_compressed(encoding);
2764            self
2765        }
2766        /// Limits the maximum size of a decoded message.
2767        ///
2768        /// Default: `4MB`
2769        #[must_use]
2770        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2771            self.inner = self.inner.max_decoding_message_size(limit);
2772            self
2773        }
2774        /// Limits the maximum size of an encoded message.
2775        ///
2776        /// Default: `usize::MAX`
2777        #[must_use]
2778        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2779            self.inner = self.inner.max_encoding_message_size(limit);
2780            self
2781        }
2782        pub async fn create_ingest_rule(
2783            &mut self,
2784            request: impl tonic::IntoRequest<super::CreateIngestRuleRequest>,
2785        ) -> std::result::Result<
2786            tonic::Response<super::CreateIngestRuleResponse>,
2787            tonic::Status,
2788        > {
2789            self.inner
2790                .ready()
2791                .await
2792                .map_err(|e| {
2793                    tonic::Status::unknown(
2794                        format!("Service was not ready: {}", e.into()),
2795                    )
2796                })?;
2797            let codec = tonic::codec::ProstCodec::default();
2798            let path = http::uri::PathAndQuery::from_static(
2799                "/nominal.file_store.v1.InternalIngestRulesService/CreateIngestRule",
2800            );
2801            let mut req = request.into_request();
2802            req.extensions_mut()
2803                .insert(
2804                    GrpcMethod::new(
2805                        "nominal.file_store.v1.InternalIngestRulesService",
2806                        "CreateIngestRule",
2807                    ),
2808                );
2809            self.inner.unary(req, path, codec).await
2810        }
2811        pub async fn list_ingest_rules(
2812            &mut self,
2813            request: impl tonic::IntoRequest<super::ListIngestRulesRequest>,
2814        ) -> std::result::Result<
2815            tonic::Response<super::ListIngestRulesResponse>,
2816            tonic::Status,
2817        > {
2818            self.inner
2819                .ready()
2820                .await
2821                .map_err(|e| {
2822                    tonic::Status::unknown(
2823                        format!("Service was not ready: {}", e.into()),
2824                    )
2825                })?;
2826            let codec = tonic::codec::ProstCodec::default();
2827            let path = http::uri::PathAndQuery::from_static(
2828                "/nominal.file_store.v1.InternalIngestRulesService/ListIngestRules",
2829            );
2830            let mut req = request.into_request();
2831            req.extensions_mut()
2832                .insert(
2833                    GrpcMethod::new(
2834                        "nominal.file_store.v1.InternalIngestRulesService",
2835                        "ListIngestRules",
2836                    ),
2837                );
2838            self.inner.unary(req, path, codec).await
2839        }
2840        pub async fn get_ingest_rule(
2841            &mut self,
2842            request: impl tonic::IntoRequest<super::GetIngestRuleRequest>,
2843        ) -> std::result::Result<
2844            tonic::Response<super::GetIngestRuleResponse>,
2845            tonic::Status,
2846        > {
2847            self.inner
2848                .ready()
2849                .await
2850                .map_err(|e| {
2851                    tonic::Status::unknown(
2852                        format!("Service was not ready: {}", e.into()),
2853                    )
2854                })?;
2855            let codec = tonic::codec::ProstCodec::default();
2856            let path = http::uri::PathAndQuery::from_static(
2857                "/nominal.file_store.v1.InternalIngestRulesService/GetIngestRule",
2858            );
2859            let mut req = request.into_request();
2860            req.extensions_mut()
2861                .insert(
2862                    GrpcMethod::new(
2863                        "nominal.file_store.v1.InternalIngestRulesService",
2864                        "GetIngestRule",
2865                    ),
2866                );
2867            self.inner.unary(req, path, codec).await
2868        }
2869        pub async fn update_ingest_rule(
2870            &mut self,
2871            request: impl tonic::IntoRequest<super::UpdateIngestRuleRequest>,
2872        ) -> std::result::Result<
2873            tonic::Response<super::UpdateIngestRuleResponse>,
2874            tonic::Status,
2875        > {
2876            self.inner
2877                .ready()
2878                .await
2879                .map_err(|e| {
2880                    tonic::Status::unknown(
2881                        format!("Service was not ready: {}", e.into()),
2882                    )
2883                })?;
2884            let codec = tonic::codec::ProstCodec::default();
2885            let path = http::uri::PathAndQuery::from_static(
2886                "/nominal.file_store.v1.InternalIngestRulesService/UpdateIngestRule",
2887            );
2888            let mut req = request.into_request();
2889            req.extensions_mut()
2890                .insert(
2891                    GrpcMethod::new(
2892                        "nominal.file_store.v1.InternalIngestRulesService",
2893                        "UpdateIngestRule",
2894                    ),
2895                );
2896            self.inner.unary(req, path, codec).await
2897        }
2898        pub async fn archive_ingest_rule(
2899            &mut self,
2900            request: impl tonic::IntoRequest<super::ArchiveIngestRuleRequest>,
2901        ) -> std::result::Result<
2902            tonic::Response<super::ArchiveIngestRuleResponse>,
2903            tonic::Status,
2904        > {
2905            self.inner
2906                .ready()
2907                .await
2908                .map_err(|e| {
2909                    tonic::Status::unknown(
2910                        format!("Service was not ready: {}", e.into()),
2911                    )
2912                })?;
2913            let codec = tonic::codec::ProstCodec::default();
2914            let path = http::uri::PathAndQuery::from_static(
2915                "/nominal.file_store.v1.InternalIngestRulesService/ArchiveIngestRule",
2916            );
2917            let mut req = request.into_request();
2918            req.extensions_mut()
2919                .insert(
2920                    GrpcMethod::new(
2921                        "nominal.file_store.v1.InternalIngestRulesService",
2922                        "ArchiveIngestRule",
2923                    ),
2924                );
2925            self.inner.unary(req, path, codec).await
2926        }
2927        pub async fn unarchive_ingest_rule(
2928            &mut self,
2929            request: impl tonic::IntoRequest<super::UnarchiveIngestRuleRequest>,
2930        ) -> std::result::Result<
2931            tonic::Response<super::UnarchiveIngestRuleResponse>,
2932            tonic::Status,
2933        > {
2934            self.inner
2935                .ready()
2936                .await
2937                .map_err(|e| {
2938                    tonic::Status::unknown(
2939                        format!("Service was not ready: {}", e.into()),
2940                    )
2941                })?;
2942            let codec = tonic::codec::ProstCodec::default();
2943            let path = http::uri::PathAndQuery::from_static(
2944                "/nominal.file_store.v1.InternalIngestRulesService/UnarchiveIngestRule",
2945            );
2946            let mut req = request.into_request();
2947            req.extensions_mut()
2948                .insert(
2949                    GrpcMethod::new(
2950                        "nominal.file_store.v1.InternalIngestRulesService",
2951                        "UnarchiveIngestRule",
2952                    ),
2953                );
2954            self.inner.unary(req, path, codec).await
2955        }
2956    }
2957}