aruna_rust_api/aruna/
aruna.api.storage.models.v2.rs

1// This file is @generated by prost-build.
2/// ------------- USERS & PERMISSIONS -----------------------
3#[derive(serde::Deserialize, serde::Serialize)]
4#[allow(clippy::derive_partial_eq_without_eq)]
5#[derive(Clone, PartialEq, ::prost::Message)]
6pub struct User {
7    /// Internal Aruna UserID
8    #[prost(string, tag = "1")]
9    pub id: ::prost::alloc::string::String,
10    /// (optional) User display_name
11    #[prost(string, tag = "3")]
12    pub display_name: ::prost::alloc::string::String,
13    /// Is the user activated
14    #[prost(bool, tag = "4")]
15    pub active: bool,
16    /// User email (empty if service account)
17    #[prost(string, tag = "5")]
18    pub email: ::prost::alloc::string::String,
19    /// User attributes
20    #[prost(message, optional, tag = "6")]
21    pub attributes: ::core::option::Option<UserAttributes>,
22    /// First and Last name
23    #[prost(string, tag = "7")]
24    pub first_name: ::prost::alloc::string::String,
25    #[prost(string, tag = "8")]
26    pub last_name: ::prost::alloc::string::String,
27}
28#[derive(serde::Deserialize, serde::Serialize)]
29#[allow(clippy::derive_partial_eq_without_eq)]
30#[derive(Clone, PartialEq, ::prost::Message)]
31pub struct Permission {
32    #[prost(enumeration = "PermissionLevel", tag = "6")]
33    pub permission_level: i32,
34    #[prost(oneof = "permission::ResourceId", tags = "1, 2, 3, 4")]
35    pub resource_id: ::core::option::Option<permission::ResourceId>,
36}
37/// Nested message and enum types in `Permission`.
38pub mod permission {
39    #[derive(serde::Deserialize, serde::Serialize)]
40    #[allow(clippy::derive_partial_eq_without_eq)]
41    #[derive(Clone, PartialEq, ::prost::Oneof)]
42    pub enum ResourceId {
43        #[prost(string, tag = "1")]
44        ProjectId(::prost::alloc::string::String),
45        #[prost(string, tag = "2")]
46        CollectionId(::prost::alloc::string::String),
47        #[prost(string, tag = "3")]
48        DatasetId(::prost::alloc::string::String),
49        #[prost(string, tag = "4")]
50        ObjectId(::prost::alloc::string::String),
51    }
52}
53#[derive(serde::Deserialize, serde::Serialize)]
54#[allow(clippy::derive_partial_eq_without_eq)]
55#[derive(Clone, PartialEq, ::prost::Message)]
56pub struct Token {
57    #[prost(string, tag = "1")]
58    pub id: ::prost::alloc::string::String,
59    #[prost(string, tag = "2")]
60    pub name: ::prost::alloc::string::String,
61    #[prost(message, optional, tag = "3")]
62    pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
63    #[prost(message, optional, tag = "4")]
64    pub expires_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
65    /// Tokens can either be personal or resource "specific"
66    #[prost(message, optional, tag = "5")]
67    pub permission: ::core::option::Option<Permission>,
68}
69#[derive(serde::Deserialize, serde::Serialize)]
70#[allow(clippy::derive_partial_eq_without_eq)]
71#[derive(Clone, PartialEq, ::prost::Message)]
72pub struct Pubkey {
73    #[prost(int32, tag = "1")]
74    pub id: i32,
75    #[prost(string, tag = "2")]
76    pub key: ::prost::alloc::string::String,
77    #[prost(string, tag = "3")]
78    pub location: ::prost::alloc::string::String,
79}
80#[derive(serde::Deserialize, serde::Serialize)]
81#[allow(clippy::derive_partial_eq_without_eq)]
82#[derive(Clone, PartialEq, ::prost::Message)]
83pub struct CustomAttribute {
84    #[prost(string, tag = "1")]
85    pub attribute_name: ::prost::alloc::string::String,
86    #[prost(string, tag = "2")]
87    pub attribute_value: ::prost::alloc::string::String,
88}
89#[derive(serde::Deserialize, serde::Serialize)]
90#[allow(clippy::derive_partial_eq_without_eq)]
91#[derive(Clone, PartialEq, ::prost::Message)]
92pub struct DataProxyAttribute {
93    #[prost(string, tag = "1")]
94    pub attribute_name: ::prost::alloc::string::String,
95    #[prost(string, tag = "2")]
96    pub attribute_value: ::prost::alloc::string::String,
97    #[prost(string, tag = "3")]
98    pub signature: ::prost::alloc::string::String,
99    #[prost(string, tag = "4")]
100    pub proxy_id: ::prost::alloc::string::String,
101}
102#[derive(serde::Deserialize, serde::Serialize)]
103#[allow(clippy::derive_partial_eq_without_eq)]
104#[derive(Clone, PartialEq, ::prost::Message)]
105pub struct OidcMapping {
106    #[prost(string, tag = "1")]
107    pub external_id: ::prost::alloc::string::String,
108    #[prost(string, tag = "2")]
109    pub oidc_url: ::prost::alloc::string::String,
110}
111#[derive(serde::Deserialize, serde::Serialize)]
112#[allow(clippy::derive_partial_eq_without_eq)]
113#[derive(Clone, PartialEq, ::prost::Message)]
114pub struct UserAttributes {
115    #[prost(bool, tag = "1")]
116    pub global_admin: bool,
117    #[prost(bool, tag = "2")]
118    pub service_account: bool,
119    #[prost(message, repeated, tag = "3")]
120    pub tokens: ::prost::alloc::vec::Vec<Token>,
121    #[prost(string, repeated, tag = "4")]
122    pub trusted_endpoints: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
123    #[prost(message, repeated, tag = "5")]
124    pub custom_attributes: ::prost::alloc::vec::Vec<CustomAttribute>,
125    #[prost(message, repeated, tag = "6")]
126    pub personal_permissions: ::prost::alloc::vec::Vec<Permission>,
127    #[prost(message, repeated, tag = "7")]
128    pub external_ids: ::prost::alloc::vec::Vec<OidcMapping>,
129    #[prost(string, tag = "8")]
130    pub pubkey: ::prost::alloc::string::String,
131    #[prost(message, repeated, tag = "9")]
132    pub data_proxy_attributes: ::prost::alloc::vec::Vec<DataProxyAttribute>,
133}
134/// A key value pair for hooks and labels
135#[derive(serde::Deserialize, serde::Serialize)]
136#[allow(clippy::derive_partial_eq_without_eq)]
137#[derive(Clone, PartialEq, ::prost::Message)]
138pub struct KeyValue {
139    #[prost(string, tag = "1")]
140    pub key: ::prost::alloc::string::String,
141    #[prost(string, tag = "2")]
142    pub value: ::prost::alloc::string::String,
143    #[prost(enumeration = "KeyValueVariant", tag = "3")]
144    pub variant: i32,
145}
146#[derive(serde::Deserialize, serde::Serialize)]
147#[allow(clippy::derive_partial_eq_without_eq)]
148#[derive(Clone, PartialEq, ::prost::Message)]
149pub struct Relation {
150    #[prost(oneof = "relation::Relation", tags = "1, 2")]
151    pub relation: ::core::option::Option<relation::Relation>,
152}
153/// Nested message and enum types in `Relation`.
154pub mod relation {
155    #[derive(serde::Deserialize, serde::Serialize)]
156    #[allow(clippy::derive_partial_eq_without_eq)]
157    #[derive(Clone, PartialEq, ::prost::Oneof)]
158    pub enum Relation {
159        #[prost(message, tag = "1")]
160        External(super::ExternalRelation),
161        #[prost(message, tag = "2")]
162        Internal(super::InternalRelation),
163    }
164}
165#[derive(serde::Deserialize, serde::Serialize)]
166#[allow(clippy::derive_partial_eq_without_eq)]
167#[derive(Clone, PartialEq, ::prost::Message)]
168pub struct ExternalRelation {
169    #[prost(string, tag = "1")]
170    pub identifier: ::prost::alloc::string::String,
171    #[prost(enumeration = "ExternalRelationVariant", tag = "2")]
172    pub defined_variant: i32,
173    /// Will only be filled if defined_variant == CUSTOM
174    #[prost(string, optional, tag = "3")]
175    pub custom_variant: ::core::option::Option<::prost::alloc::string::String>,
176}
177#[derive(serde::Deserialize, serde::Serialize)]
178#[allow(clippy::derive_partial_eq_without_eq)]
179#[derive(Clone, PartialEq, ::prost::Message)]
180pub struct InternalRelation {
181    #[prost(string, tag = "1")]
182    pub resource_id: ::prost::alloc::string::String,
183    #[prost(enumeration = "ResourceVariant", tag = "2")]
184    pub resource_variant: i32,
185    #[prost(enumeration = "InternalRelationVariant", tag = "3")]
186    pub defined_variant: i32,
187    /// Will only be filled if defined_variant == CUSTOM
188    #[prost(string, optional, tag = "4")]
189    pub custom_variant: ::core::option::Option<::prost::alloc::string::String>,
190    #[prost(enumeration = "RelationDirection", tag = "5")]
191    pub direction: i32,
192}
193#[derive(serde::Deserialize, serde::Serialize)]
194#[allow(clippy::derive_partial_eq_without_eq)]
195#[derive(Clone, PartialEq, ::prost::Message)]
196pub struct PageRequest {
197    /// This is the last ID of the previous returned request
198    #[prost(string, tag = "1")]
199    pub start_after: ::prost::alloc::string::String,
200    /// Default to 20, -1 for all
201    #[prost(int64, tag = "2")]
202    pub page_size: i64,
203}
204/// Stats for a set of objects
205#[derive(serde::Deserialize, serde::Serialize)]
206#[allow(clippy::derive_partial_eq_without_eq)]
207#[derive(Clone, PartialEq, ::prost::Message)]
208pub struct Stats {
209    #[prost(int64, tag = "1")]
210    pub count: i64,
211    #[prost(int64, tag = "2")]
212    pub size: i64,
213    #[prost(message, optional, tag = "3")]
214    pub last_updated: ::core::option::Option<::prost_wkt_types::Timestamp>,
215}
216#[derive(serde::Deserialize, serde::Serialize)]
217#[allow(clippy::derive_partial_eq_without_eq)]
218#[derive(Clone, PartialEq, ::prost::Message)]
219pub struct Hash {
220    #[prost(enumeration = "Hashalgorithm", tag = "1")]
221    pub alg: i32,
222    #[prost(string, tag = "2")]
223    pub hash: ::prost::alloc::string::String,
224}
225#[derive(serde::Deserialize, serde::Serialize)]
226#[allow(clippy::derive_partial_eq_without_eq)]
227#[derive(Clone, PartialEq, ::prost::Message)]
228pub struct EndpointHostConfig {
229    #[prost(string, tag = "1")]
230    pub url: ::prost::alloc::string::String,
231    #[prost(bool, tag = "2")]
232    pub is_primary: bool,
233    #[prost(bool, tag = "3")]
234    pub ssl: bool,
235    #[prost(bool, tag = "4")]
236    pub public: bool,
237    #[prost(enumeration = "EndpointHostVariant", tag = "5")]
238    pub host_variant: i32,
239}
240#[derive(serde::Deserialize, serde::Serialize)]
241#[allow(clippy::derive_partial_eq_without_eq)]
242#[derive(Clone, PartialEq, ::prost::Message)]
243pub struct Endpoint {
244    #[prost(string, tag = "1")]
245    pub id: ::prost::alloc::string::String,
246    #[prost(enumeration = "EndpointVariant", tag = "2")]
247    pub ep_variant: i32,
248    #[prost(string, tag = "3")]
249    pub name: ::prost::alloc::string::String,
250    #[prost(bool, tag = "4")]
251    pub is_public: bool,
252    #[prost(enumeration = "ComponentStatus", tag = "5")]
253    pub status: i32,
254    #[prost(message, repeated, tag = "6")]
255    pub host_configs: ::prost::alloc::vec::Vec<EndpointHostConfig>,
256}
257#[derive(serde::Deserialize, serde::Serialize)]
258#[allow(clippy::derive_partial_eq_without_eq)]
259#[derive(Clone, PartialEq, ::prost::Message)]
260pub struct DataEndpoint {
261    #[prost(string, tag = "1")]
262    pub id: ::prost::alloc::string::String,
263    #[prost(enumeration = "ReplicationStatus", optional, tag = "4")]
264    pub status: ::core::option::Option<i32>,
265    /// Hint if the objects' project
266    /// is fully synced to the endpoint
267    /// If partial_sync = true -> Objects inherit partial sync
268    #[prost(oneof = "data_endpoint::Variant", tags = "2, 3")]
269    pub variant: ::core::option::Option<data_endpoint::Variant>,
270}
271/// Nested message and enum types in `DataEndpoint`.
272pub mod data_endpoint {
273    /// Hint if the objects' project
274    /// is fully synced to the endpoint
275    /// If partial_sync = true -> Objects inherit partial sync
276    #[derive(serde::Deserialize, serde::Serialize)]
277    #[allow(clippy::derive_partial_eq_without_eq)]
278    #[derive(Clone, PartialEq, ::prost::Oneof)]
279    pub enum Variant {
280        #[prost(message, tag = "2")]
281        FullSync(super::FullSync),
282        #[prost(bool, tag = "3")]
283        PartialSync(bool),
284    }
285}
286#[derive(serde::Deserialize, serde::Serialize)]
287#[allow(clippy::derive_partial_eq_without_eq)]
288#[derive(Clone, PartialEq, ::prost::Message)]
289pub struct FullSync {}
290#[derive(serde::Deserialize, serde::Serialize)]
291#[allow(clippy::derive_partial_eq_without_eq)]
292#[derive(Clone, PartialEq, ::prost::Message)]
293pub struct Copy {
294    #[prost(string, tag = "1")]
295    pub resource: ::prost::alloc::string::String,
296    #[prost(string, tag = "2")]
297    pub target_endpoint: ::prost::alloc::string::String,
298    #[prost(bool, tag = "3")]
299    pub push: bool,
300}
301#[derive(serde::Deserialize, serde::Serialize)]
302#[allow(clippy::derive_partial_eq_without_eq)]
303#[derive(Clone, PartialEq, ::prost::Message)]
304pub struct Context {
305    #[prost(oneof = "context::Context", tags = "1, 2")]
306    pub context: ::core::option::Option<context::Context>,
307}
308/// Nested message and enum types in `Context`.
309pub mod context {
310    #[derive(serde::Deserialize, serde::Serialize)]
311    #[allow(clippy::derive_partial_eq_without_eq)]
312    #[derive(Clone, PartialEq, ::prost::Oneof)]
313    pub enum Context {
314        #[prost(bool, tag = "1")]
315        S3Credentials(bool),
316        #[prost(message, tag = "2")]
317        Copy(super::Copy),
318    }
319}
320#[derive(serde::Deserialize, serde::Serialize)]
321#[allow(clippy::derive_partial_eq_without_eq)]
322#[derive(Clone, PartialEq, ::prost::Message)]
323pub struct License {
324    /// CC-BY-SA-4.0
325    #[prost(string, tag = "1")]
326    pub tag: ::prost::alloc::string::String,
327    /// Creative Commons Attribution-ShareAlike 4.0 International
328    #[prost(string, tag = "2")]
329    pub name: ::prost::alloc::string::String,
330    #[prost(string, tag = "3")]
331    pub text: ::prost::alloc::string::String,
332    /// url is optional
333    ///
334    /// <https://creativecommons.org/licenses/by-sa/4.0/>
335    #[prost(string, tag = "4")]
336    pub url: ::prost::alloc::string::String,
337}
338#[derive(serde::Deserialize, serde::Serialize)]
339#[allow(clippy::derive_partial_eq_without_eq)]
340#[derive(Clone, PartialEq, ::prost::Message)]
341pub struct Author {
342    #[prost(string, tag = "1")]
343    pub first_name: ::prost::alloc::string::String,
344    #[prost(string, tag = "2")]
345    pub last_name: ::prost::alloc::string::String,
346    #[prost(string, optional, tag = "3")]
347    pub email: ::core::option::Option<::prost::alloc::string::String>,
348    #[prost(string, optional, tag = "4")]
349    pub orcid: ::core::option::Option<::prost::alloc::string::String>,
350    #[prost(string, optional, tag = "5")]
351    pub id: ::core::option::Option<::prost::alloc::string::String>,
352}
353#[derive(serde::Deserialize, serde::Serialize)]
354#[allow(clippy::derive_partial_eq_without_eq)]
355#[derive(Clone, PartialEq, ::prost::Message)]
356pub struct RuleBinding {
357    #[prost(string, tag = "1")]
358    pub rule_id: ::prost::alloc::string::String,
359    #[prost(string, tag = "2")]
360    pub origin: ::prost::alloc::string::String,
361}
362#[derive(serde::Deserialize, serde::Serialize)]
363#[allow(clippy::derive_partial_eq_without_eq)]
364#[derive(Clone, PartialEq, ::prost::Message)]
365pub struct GenericResource {
366    #[prost(oneof = "generic_resource::Resource", tags = "1, 2, 3, 4")]
367    pub resource: ::core::option::Option<generic_resource::Resource>,
368}
369/// Nested message and enum types in `GenericResource`.
370pub mod generic_resource {
371    #[derive(serde::Deserialize, serde::Serialize)]
372    #[allow(clippy::derive_partial_eq_without_eq)]
373    #[derive(Clone, PartialEq, ::prost::Oneof)]
374    pub enum Resource {
375        #[prost(message, tag = "1")]
376        Project(super::Project),
377        #[prost(message, tag = "2")]
378        Collection(super::Collection),
379        #[prost(message, tag = "3")]
380        Dataset(super::Dataset),
381        #[prost(message, tag = "4")]
382        Object(super::Object),
383    }
384}
385#[derive(serde::Deserialize, serde::Serialize)]
386#[allow(clippy::derive_partial_eq_without_eq)]
387#[derive(Clone, PartialEq, ::prost::Message)]
388pub struct Project {
389    #[prost(string, tag = "1")]
390    pub id: ::prost::alloc::string::String,
391    /// Short name according to BucketNamingRules
392    #[prost(string, tag = "2")]
393    pub name: ::prost::alloc::string::String,
394    /// Long name
395    #[prost(string, tag = "15")]
396    pub title: ::prost::alloc::string::String,
397    /// Long name
398    #[prost(string, tag = "3")]
399    pub description: ::prost::alloc::string::String,
400    /// Project specific labels / hooks
401    #[prost(message, repeated, tag = "4")]
402    pub key_values: ::prost::alloc::vec::Vec<KeyValue>,
403    /// Relations to internal and external sources
404    #[prost(message, repeated, tag = "5")]
405    pub relations: ::prost::alloc::vec::Vec<Relation>,
406    #[prost(message, optional, tag = "6")]
407    pub stats: ::core::option::Option<Stats>,
408    #[prost(enumeration = "DataClass", tag = "7")]
409    pub data_class: i32,
410    #[prost(message, optional, tag = "8")]
411    pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
412    #[prost(string, tag = "9")]
413    pub created_by: ::prost::alloc::string::String,
414    #[prost(message, repeated, tag = "16")]
415    pub authors: ::prost::alloc::vec::Vec<Author>,
416    #[prost(enumeration = "Status", tag = "10")]
417    pub status: i32,
418    #[prost(bool, tag = "11")]
419    pub dynamic: bool,
420    #[prost(message, repeated, tag = "12")]
421    pub endpoints: ::prost::alloc::vec::Vec<DataEndpoint>,
422    #[prost(string, tag = "13")]
423    pub metadata_license_tag: ::prost::alloc::string::String,
424    #[prost(string, tag = "14")]
425    pub default_data_license_tag: ::prost::alloc::string::String,
426    #[prost(message, repeated, tag = "17")]
427    pub rule_bindings: ::prost::alloc::vec::Vec<RuleBinding>,
428}
429#[derive(serde::Deserialize, serde::Serialize)]
430#[allow(clippy::derive_partial_eq_without_eq)]
431#[derive(Clone, PartialEq, ::prost::Message)]
432pub struct Collection {
433    /// ASDASDASDOPASKIDPO
434    #[prost(string, tag = "1")]
435    pub id: ::prost::alloc::string::String,
436    /// my_mags
437    #[prost(string, tag = "2")]
438    pub name: ::prost::alloc::string::String,
439    #[prost(string, tag = "15")]
440    pub title: ::prost::alloc::string::String,
441    /// ENA asda234928349028 MAG 1293819203819028i V1
442    #[prost(string, tag = "3")]
443    pub description: ::prost::alloc::string::String,
444    /// Collection specific labels / hooks
445    #[prost(message, repeated, tag = "4")]
446    pub key_values: ::prost::alloc::vec::Vec<KeyValue>,
447    /// Relations to internal and external sources
448    #[prost(message, repeated, tag = "5")]
449    pub relations: ::prost::alloc::vec::Vec<Relation>,
450    #[prost(message, optional, tag = "6")]
451    pub stats: ::core::option::Option<Stats>,
452    #[prost(enumeration = "DataClass", tag = "7")]
453    pub data_class: i32,
454    #[prost(message, optional, tag = "8")]
455    pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
456    #[prost(string, tag = "9")]
457    pub created_by: ::prost::alloc::string::String,
458    #[prost(message, repeated, tag = "16")]
459    pub authors: ::prost::alloc::vec::Vec<Author>,
460    #[prost(enumeration = "Status", tag = "10")]
461    pub status: i32,
462    #[prost(bool, tag = "11")]
463    pub dynamic: bool,
464    #[prost(message, repeated, tag = "12")]
465    pub endpoints: ::prost::alloc::vec::Vec<DataEndpoint>,
466    #[prost(string, tag = "13")]
467    pub metadata_license_tag: ::prost::alloc::string::String,
468    #[prost(string, tag = "14")]
469    pub default_data_license_tag: ::prost::alloc::string::String,
470    #[prost(message, repeated, tag = "17")]
471    pub rule_bindings: ::prost::alloc::vec::Vec<RuleBinding>,
472}
473#[derive(serde::Deserialize, serde::Serialize)]
474#[allow(clippy::derive_partial_eq_without_eq)]
475#[derive(Clone, PartialEq, ::prost::Message)]
476pub struct Dataset {
477    #[prost(string, tag = "1")]
478    pub id: ::prost::alloc::string::String,
479    #[prost(string, tag = "2")]
480    pub name: ::prost::alloc::string::String,
481    /// Long name
482    #[prost(string, tag = "15")]
483    pub title: ::prost::alloc::string::String,
484    #[prost(string, tag = "3")]
485    pub description: ::prost::alloc::string::String,
486    /// Dataset specific labels / hooks
487    #[prost(message, repeated, tag = "4")]
488    pub key_values: ::prost::alloc::vec::Vec<KeyValue>,
489    /// Relations to internal and external sources
490    #[prost(message, repeated, tag = "5")]
491    pub relations: ::prost::alloc::vec::Vec<Relation>,
492    #[prost(message, optional, tag = "6")]
493    pub stats: ::core::option::Option<Stats>,
494    #[prost(enumeration = "DataClass", tag = "7")]
495    pub data_class: i32,
496    #[prost(message, optional, tag = "8")]
497    pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
498    #[prost(string, tag = "9")]
499    pub created_by: ::prost::alloc::string::String,
500    #[prost(message, repeated, tag = "16")]
501    pub authors: ::prost::alloc::vec::Vec<Author>,
502    #[prost(enumeration = "Status", tag = "10")]
503    pub status: i32,
504    #[prost(bool, tag = "11")]
505    pub dynamic: bool,
506    #[prost(message, repeated, tag = "12")]
507    pub endpoints: ::prost::alloc::vec::Vec<DataEndpoint>,
508    #[prost(string, tag = "13")]
509    pub metadata_license_tag: ::prost::alloc::string::String,
510    #[prost(string, tag = "14")]
511    pub default_data_license_tag: ::prost::alloc::string::String,
512    #[prost(message, repeated, tag = "17")]
513    pub rule_bindings: ::prost::alloc::vec::Vec<RuleBinding>,
514}
515#[derive(serde::Deserialize, serde::Serialize)]
516#[allow(clippy::derive_partial_eq_without_eq)]
517#[derive(Clone, PartialEq, ::prost::Message)]
518pub struct Object {
519    #[prost(string, tag = "1")]
520    pub id: ::prost::alloc::string::String,
521    #[prost(string, tag = "2")]
522    pub name: ::prost::alloc::string::String,
523    /// Long name
524    #[prost(string, tag = "16")]
525    pub title: ::prost::alloc::string::String,
526    #[prost(string, tag = "3")]
527    pub description: ::prost::alloc::string::String,
528    /// Collection specific labels / hooks
529    #[prost(message, repeated, tag = "4")]
530    pub key_values: ::prost::alloc::vec::Vec<KeyValue>,
531    /// Relations to internal and external sources
532    #[prost(message, repeated, tag = "5")]
533    pub relations: ::prost::alloc::vec::Vec<Relation>,
534    /// Object only
535    #[prost(int64, tag = "6")]
536    pub content_len: i64,
537    #[prost(enumeration = "DataClass", tag = "7")]
538    pub data_class: i32,
539    #[prost(message, optional, tag = "8")]
540    pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
541    #[prost(string, tag = "9")]
542    pub created_by: ::prost::alloc::string::String,
543    #[prost(message, repeated, tag = "17")]
544    pub authors: ::prost::alloc::vec::Vec<Author>,
545    #[prost(enumeration = "Status", tag = "10")]
546    pub status: i32,
547    #[prost(bool, tag = "11")]
548    pub dynamic: bool,
549    #[prost(message, repeated, tag = "12")]
550    pub endpoints: ::prost::alloc::vec::Vec<DataEndpoint>,
551    /// Object specific attributes
552    #[prost(message, repeated, tag = "13")]
553    pub hashes: ::prost::alloc::vec::Vec<Hash>,
554    #[prost(string, tag = "14")]
555    pub metadata_license_tag: ::prost::alloc::string::String,
556    #[prost(string, tag = "15")]
557    pub data_license_tag: ::prost::alloc::string::String,
558    #[prost(message, repeated, tag = "18")]
559    pub rule_bindings: ::prost::alloc::vec::Vec<RuleBinding>,
560}
561/// --------------- ENUMS ------------------------
562/// Defines the public announcement type
563#[derive(serde::Deserialize, serde::Serialize)]
564#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
565#[repr(i32)]
566pub enum AnnouncementType {
567    Unspecified = 0,
568    Orga = 1,
569    Release = 2,
570    Update = 3,
571    Maintenance = 4,
572    Blog = 5,
573}
574impl AnnouncementType {
575    /// String value of the enum field names used in the ProtoBuf definition.
576    ///
577    /// The values are not transformed in any way and thus are considered stable
578    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
579    pub fn as_str_name(&self) -> &'static str {
580        match self {
581            AnnouncementType::Unspecified => "ANNOUNCEMENT_TYPE_UNSPECIFIED",
582            AnnouncementType::Orga => "ANNOUNCEMENT_TYPE_ORGA",
583            AnnouncementType::Release => "ANNOUNCEMENT_TYPE_RELEASE",
584            AnnouncementType::Update => "ANNOUNCEMENT_TYPE_UPDATE",
585            AnnouncementType::Maintenance => "ANNOUNCEMENT_TYPE_MAINTENANCE",
586            AnnouncementType::Blog => "ANNOUNCEMENT_TYPE_BLOG",
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            "ANNOUNCEMENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
593            "ANNOUNCEMENT_TYPE_ORGA" => Some(Self::Orga),
594            "ANNOUNCEMENT_TYPE_RELEASE" => Some(Self::Release),
595            "ANNOUNCEMENT_TYPE_UPDATE" => Some(Self::Update),
596            "ANNOUNCEMENT_TYPE_MAINTENANCE" => Some(Self::Maintenance),
597            "ANNOUNCEMENT_TYPE_BLOG" => Some(Self::Blog),
598            _ => None,
599        }
600    }
601}
602/// Dataclass defines the confidentiality of the object
603#[derive(serde::Deserialize, serde::Serialize)]
604#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
605#[repr(i32)]
606pub enum DataClass {
607    Unspecified = 0,
608    Public = 1,
609    Private = 2,
610    Workspace = 4,
611    Confidential = 5,
612}
613impl DataClass {
614    /// String value of the enum field names used in the ProtoBuf definition.
615    ///
616    /// The values are not transformed in any way and thus are considered stable
617    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
618    pub fn as_str_name(&self) -> &'static str {
619        match self {
620            DataClass::Unspecified => "DATA_CLASS_UNSPECIFIED",
621            DataClass::Public => "DATA_CLASS_PUBLIC",
622            DataClass::Private => "DATA_CLASS_PRIVATE",
623            DataClass::Workspace => "DATA_CLASS_WORKSPACE",
624            DataClass::Confidential => "DATA_CLASS_CONFIDENTIAL",
625        }
626    }
627    /// Creates an enum from field names used in the ProtoBuf definition.
628    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
629        match value {
630            "DATA_CLASS_UNSPECIFIED" => Some(Self::Unspecified),
631            "DATA_CLASS_PUBLIC" => Some(Self::Public),
632            "DATA_CLASS_PRIVATE" => Some(Self::Private),
633            "DATA_CLASS_WORKSPACE" => Some(Self::Workspace),
634            "DATA_CLASS_CONFIDENTIAL" => Some(Self::Confidential),
635            _ => None,
636        }
637    }
638}
639/// Which kind of endpoint
640#[derive(serde::Deserialize, serde::Serialize)]
641#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
642#[repr(i32)]
643pub enum EndpointVariant {
644    Unspecified = 0,
645    Persistent = 1,
646    Volatile = 2,
647}
648impl EndpointVariant {
649    /// String value of the enum field names used in the ProtoBuf definition.
650    ///
651    /// The values are not transformed in any way and thus are considered stable
652    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
653    pub fn as_str_name(&self) -> &'static str {
654        match self {
655            EndpointVariant::Unspecified => "ENDPOINT_VARIANT_UNSPECIFIED",
656            EndpointVariant::Persistent => "ENDPOINT_VARIANT_PERSISTENT",
657            EndpointVariant::Volatile => "ENDPOINT_VARIANT_VOLATILE",
658        }
659    }
660    /// Creates an enum from field names used in the ProtoBuf definition.
661    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
662        match value {
663            "ENDPOINT_VARIANT_UNSPECIFIED" => Some(Self::Unspecified),
664            "ENDPOINT_VARIANT_PERSISTENT" => Some(Self::Persistent),
665            "ENDPOINT_VARIANT_VOLATILE" => Some(Self::Volatile),
666            _ => None,
667        }
668    }
669}
670/// Which features does the endpoint have
671#[derive(serde::Deserialize, serde::Serialize)]
672#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
673#[repr(i32)]
674pub enum EndpointHostVariant {
675    Unspecified = 0,
676    Grpc = 1,
677    S3 = 2,
678}
679impl EndpointHostVariant {
680    /// String value of the enum field names used in the ProtoBuf definition.
681    ///
682    /// The values are not transformed in any way and thus are considered stable
683    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
684    pub fn as_str_name(&self) -> &'static str {
685        match self {
686            EndpointHostVariant::Unspecified => "ENDPOINT_HOST_VARIANT_UNSPECIFIED",
687            EndpointHostVariant::Grpc => "ENDPOINT_HOST_VARIANT_GRPC",
688            EndpointHostVariant::S3 => "ENDPOINT_HOST_VARIANT_S3",
689        }
690    }
691    /// Creates an enum from field names used in the ProtoBuf definition.
692    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
693        match value {
694            "ENDPOINT_HOST_VARIANT_UNSPECIFIED" => Some(Self::Unspecified),
695            "ENDPOINT_HOST_VARIANT_GRPC" => Some(Self::Grpc),
696            "ENDPOINT_HOST_VARIANT_S3" => Some(Self::S3),
697            _ => None,
698        }
699    }
700}
701/// Permission Levels
702#[derive(serde::Deserialize, serde::Serialize)]
703#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
704#[repr(i32)]
705pub enum PermissionLevel {
706    Unspecified = 0,
707    None = 2,
708    Read = 3,
709    Append = 4,
710    Write = 5,
711    Admin = 6,
712}
713impl PermissionLevel {
714    /// String value of the enum field names used in the ProtoBuf definition.
715    ///
716    /// The values are not transformed in any way and thus are considered stable
717    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
718    pub fn as_str_name(&self) -> &'static str {
719        match self {
720            PermissionLevel::Unspecified => "PERMISSION_LEVEL_UNSPECIFIED",
721            PermissionLevel::None => "PERMISSION_LEVEL_NONE",
722            PermissionLevel::Read => "PERMISSION_LEVEL_READ",
723            PermissionLevel::Append => "PERMISSION_LEVEL_APPEND",
724            PermissionLevel::Write => "PERMISSION_LEVEL_WRITE",
725            PermissionLevel::Admin => "PERMISSION_LEVEL_ADMIN",
726        }
727    }
728    /// Creates an enum from field names used in the ProtoBuf definition.
729    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
730        match value {
731            "PERMISSION_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
732            "PERMISSION_LEVEL_NONE" => Some(Self::None),
733            "PERMISSION_LEVEL_READ" => Some(Self::Read),
734            "PERMISSION_LEVEL_APPEND" => Some(Self::Append),
735            "PERMISSION_LEVEL_WRITE" => Some(Self::Write),
736            "PERMISSION_LEVEL_ADMIN" => Some(Self::Admin),
737            _ => None,
738        }
739    }
740}
741/// KeyValueVariants
742#[derive(serde::Deserialize, serde::Serialize)]
743#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
744#[repr(i32)]
745pub enum KeyValueVariant {
746    Unspecified = 0,
747    Label = 1,
748    /// A Label that only admins can remove
749    StaticLabel = 2,
750    Hook = 3,
751    HookStatus = 4,
752}
753impl KeyValueVariant {
754    /// String value of the enum field names used in the ProtoBuf definition.
755    ///
756    /// The values are not transformed in any way and thus are considered stable
757    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
758    pub fn as_str_name(&self) -> &'static str {
759        match self {
760            KeyValueVariant::Unspecified => "KEY_VALUE_VARIANT_UNSPECIFIED",
761            KeyValueVariant::Label => "KEY_VALUE_VARIANT_LABEL",
762            KeyValueVariant::StaticLabel => "KEY_VALUE_VARIANT_STATIC_LABEL",
763            KeyValueVariant::Hook => "KEY_VALUE_VARIANT_HOOK",
764            KeyValueVariant::HookStatus => "KEY_VALUE_VARIANT_HOOK_STATUS",
765        }
766    }
767    /// Creates an enum from field names used in the ProtoBuf definition.
768    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
769        match value {
770            "KEY_VALUE_VARIANT_UNSPECIFIED" => Some(Self::Unspecified),
771            "KEY_VALUE_VARIANT_LABEL" => Some(Self::Label),
772            "KEY_VALUE_VARIANT_STATIC_LABEL" => Some(Self::StaticLabel),
773            "KEY_VALUE_VARIANT_HOOK" => Some(Self::Hook),
774            "KEY_VALUE_VARIANT_HOOK_STATUS" => Some(Self::HookStatus),
775            _ => None,
776        }
777    }
778}
779/// External Relations
780#[derive(serde::Deserialize, serde::Serialize)]
781#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
782#[repr(i32)]
783pub enum ExternalRelationVariant {
784    Unspecified = 0,
785    Url = 1,
786    Identifier = 2,
787    Custom = 3,
788}
789impl ExternalRelationVariant {
790    /// String value of the enum field names used in the ProtoBuf definition.
791    ///
792    /// The values are not transformed in any way and thus are considered stable
793    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
794    pub fn as_str_name(&self) -> &'static str {
795        match self {
796            ExternalRelationVariant::Unspecified => {
797                "EXTERNAL_RELATION_VARIANT_UNSPECIFIED"
798            }
799            ExternalRelationVariant::Url => "EXTERNAL_RELATION_VARIANT_URL",
800            ExternalRelationVariant::Identifier => "EXTERNAL_RELATION_VARIANT_IDENTIFIER",
801            ExternalRelationVariant::Custom => "EXTERNAL_RELATION_VARIANT_CUSTOM",
802        }
803    }
804    /// Creates an enum from field names used in the ProtoBuf definition.
805    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
806        match value {
807            "EXTERNAL_RELATION_VARIANT_UNSPECIFIED" => Some(Self::Unspecified),
808            "EXTERNAL_RELATION_VARIANT_URL" => Some(Self::Url),
809            "EXTERNAL_RELATION_VARIANT_IDENTIFIER" => Some(Self::Identifier),
810            "EXTERNAL_RELATION_VARIANT_CUSTOM" => Some(Self::Custom),
811            _ => None,
812        }
813    }
814}
815/// InternalRelations
816#[derive(serde::Deserialize, serde::Serialize)]
817#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
818#[repr(i32)]
819pub enum InternalRelationVariant {
820    Unspecified = 0,
821    BelongsTo = 1,
822    Origin = 2,
823    Version = 3,
824    Metadata = 4,
825    Policy = 5,
826    Deleted = 6,
827    Custom = 7,
828}
829impl InternalRelationVariant {
830    /// String value of the enum field names used in the ProtoBuf definition.
831    ///
832    /// The values are not transformed in any way and thus are considered stable
833    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
834    pub fn as_str_name(&self) -> &'static str {
835        match self {
836            InternalRelationVariant::Unspecified => {
837                "INTERNAL_RELATION_VARIANT_UNSPECIFIED"
838            }
839            InternalRelationVariant::BelongsTo => "INTERNAL_RELATION_VARIANT_BELONGS_TO",
840            InternalRelationVariant::Origin => "INTERNAL_RELATION_VARIANT_ORIGIN",
841            InternalRelationVariant::Version => "INTERNAL_RELATION_VARIANT_VERSION",
842            InternalRelationVariant::Metadata => "INTERNAL_RELATION_VARIANT_METADATA",
843            InternalRelationVariant::Policy => "INTERNAL_RELATION_VARIANT_POLICY",
844            InternalRelationVariant::Deleted => "INTERNAL_RELATION_VARIANT_DELETED",
845            InternalRelationVariant::Custom => "INTERNAL_RELATION_VARIANT_CUSTOM",
846        }
847    }
848    /// Creates an enum from field names used in the ProtoBuf definition.
849    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
850        match value {
851            "INTERNAL_RELATION_VARIANT_UNSPECIFIED" => Some(Self::Unspecified),
852            "INTERNAL_RELATION_VARIANT_BELONGS_TO" => Some(Self::BelongsTo),
853            "INTERNAL_RELATION_VARIANT_ORIGIN" => Some(Self::Origin),
854            "INTERNAL_RELATION_VARIANT_VERSION" => Some(Self::Version),
855            "INTERNAL_RELATION_VARIANT_METADATA" => Some(Self::Metadata),
856            "INTERNAL_RELATION_VARIANT_POLICY" => Some(Self::Policy),
857            "INTERNAL_RELATION_VARIANT_DELETED" => Some(Self::Deleted),
858            "INTERNAL_RELATION_VARIANT_CUSTOM" => Some(Self::Custom),
859            _ => None,
860        }
861    }
862}
863/// internal object relation type (direction)
864#[derive(serde::Deserialize, serde::Serialize)]
865#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
866#[repr(i32)]
867pub enum RelationDirection {
868    Unspecified = 0,
869    Inbound = 1,
870    Outbound = 2,
871}
872impl RelationDirection {
873    /// String value of the enum field names used in the ProtoBuf definition.
874    ///
875    /// The values are not transformed in any way and thus are considered stable
876    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
877    pub fn as_str_name(&self) -> &'static str {
878        match self {
879            RelationDirection::Unspecified => "RELATION_DIRECTION_UNSPECIFIED",
880            RelationDirection::Inbound => "RELATION_DIRECTION_INBOUND",
881            RelationDirection::Outbound => "RELATION_DIRECTION_OUTBOUND",
882        }
883    }
884    /// Creates an enum from field names used in the ProtoBuf definition.
885    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
886        match value {
887            "RELATION_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
888            "RELATION_DIRECTION_INBOUND" => Some(Self::Inbound),
889            "RELATION_DIRECTION_OUTBOUND" => Some(Self::Outbound),
890            _ => None,
891        }
892    }
893}
894/// Used for the internal associated services to validate permissions
895/// Actions are similar to HTTP verbs
896#[derive(serde::Deserialize, serde::Serialize)]
897#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
898#[repr(i32)]
899pub enum ResourceAction {
900    Unspecified = 0,
901    Create = 1,
902    Append = 2,
903    Update = 3,
904    Read = 4,
905    Delete = 5,
906}
907impl ResourceAction {
908    /// String value of the enum field names used in the ProtoBuf definition.
909    ///
910    /// The values are not transformed in any way and thus are considered stable
911    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
912    pub fn as_str_name(&self) -> &'static str {
913        match self {
914            ResourceAction::Unspecified => "RESOURCE_ACTION_UNSPECIFIED",
915            ResourceAction::Create => "RESOURCE_ACTION_CREATE",
916            ResourceAction::Append => "RESOURCE_ACTION_APPEND",
917            ResourceAction::Update => "RESOURCE_ACTION_UPDATE",
918            ResourceAction::Read => "RESOURCE_ACTION_READ",
919            ResourceAction::Delete => "RESOURCE_ACTION_DELETE",
920        }
921    }
922    /// Creates an enum from field names used in the ProtoBuf definition.
923    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
924        match value {
925            "RESOURCE_ACTION_UNSPECIFIED" => Some(Self::Unspecified),
926            "RESOURCE_ACTION_CREATE" => Some(Self::Create),
927            "RESOURCE_ACTION_APPEND" => Some(Self::Append),
928            "RESOURCE_ACTION_UPDATE" => Some(Self::Update),
929            "RESOURCE_ACTION_READ" => Some(Self::Read),
930            "RESOURCE_ACTION_DELETE" => Some(Self::Delete),
931            _ => None,
932        }
933    }
934}
935/// An arbitrary status for Objects
936#[derive(serde::Deserialize, serde::Serialize)]
937#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
938#[repr(i32)]
939pub enum Status {
940    /// Unspecified
941    Unspecified = 0,
942    /// This object is initializing -> Staging
943    Initializing = 1,
944    /// Data got uploaded and a validating hook got triggered
945    Validating = 2,
946    /// Data is available
947    Available = 3,
948    /// Data is temporarily not available
949    Unavailable = 4,
950    /// Validating failed or fatal error in data proxy
951    Error = 5,
952    /// Object got deleted
953    Deleted = 6,
954}
955impl Status {
956    /// String value of the enum field names used in the ProtoBuf definition.
957    ///
958    /// The values are not transformed in any way and thus are considered stable
959    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
960    pub fn as_str_name(&self) -> &'static str {
961        match self {
962            Status::Unspecified => "STATUS_UNSPECIFIED",
963            Status::Initializing => "STATUS_INITIALIZING",
964            Status::Validating => "STATUS_VALIDATING",
965            Status::Available => "STATUS_AVAILABLE",
966            Status::Unavailable => "STATUS_UNAVAILABLE",
967            Status::Error => "STATUS_ERROR",
968            Status::Deleted => "STATUS_DELETED",
969        }
970    }
971    /// Creates an enum from field names used in the ProtoBuf definition.
972    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
973        match value {
974            "STATUS_UNSPECIFIED" => Some(Self::Unspecified),
975            "STATUS_INITIALIZING" => Some(Self::Initializing),
976            "STATUS_VALIDATING" => Some(Self::Validating),
977            "STATUS_AVAILABLE" => Some(Self::Available),
978            "STATUS_UNAVAILABLE" => Some(Self::Unavailable),
979            "STATUS_ERROR" => Some(Self::Error),
980            "STATUS_DELETED" => Some(Self::Deleted),
981            _ => None,
982        }
983    }
984}
985/// Status for endpoints
986#[derive(serde::Deserialize, serde::Serialize)]
987#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
988#[repr(i32)]
989pub enum ComponentStatus {
990    Unspecified = 0,
991    Initializing = 1,
992    Available = 2,
993    Degraded = 3,
994    Unavailable = 4,
995    Maintenance = 5,
996}
997impl ComponentStatus {
998    /// String value of the enum field names used in the ProtoBuf definition.
999    ///
1000    /// The values are not transformed in any way and thus are considered stable
1001    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1002    pub fn as_str_name(&self) -> &'static str {
1003        match self {
1004            ComponentStatus::Unspecified => "COMPONENT_STATUS_UNSPECIFIED",
1005            ComponentStatus::Initializing => "COMPONENT_STATUS_INITIALIZING",
1006            ComponentStatus::Available => "COMPONENT_STATUS_AVAILABLE",
1007            ComponentStatus::Degraded => "COMPONENT_STATUS_DEGRADED",
1008            ComponentStatus::Unavailable => "COMPONENT_STATUS_UNAVAILABLE",
1009            ComponentStatus::Maintenance => "COMPONENT_STATUS_MAINTENANCE",
1010        }
1011    }
1012    /// Creates an enum from field names used in the ProtoBuf definition.
1013    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1014        match value {
1015            "COMPONENT_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1016            "COMPONENT_STATUS_INITIALIZING" => Some(Self::Initializing),
1017            "COMPONENT_STATUS_AVAILABLE" => Some(Self::Available),
1018            "COMPONENT_STATUS_DEGRADED" => Some(Self::Degraded),
1019            "COMPONENT_STATUS_UNAVAILABLE" => Some(Self::Unavailable),
1020            "COMPONENT_STATUS_MAINTENANCE" => Some(Self::Maintenance),
1021            _ => None,
1022        }
1023    }
1024}
1025#[derive(serde::Deserialize, serde::Serialize)]
1026#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1027#[repr(i32)]
1028pub enum Hashalgorithm {
1029    Unspecified = 0,
1030    Md5 = 1,
1031    Sha256 = 2,
1032}
1033impl Hashalgorithm {
1034    /// String value of the enum field names used in the ProtoBuf definition.
1035    ///
1036    /// The values are not transformed in any way and thus are considered stable
1037    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1038    pub fn as_str_name(&self) -> &'static str {
1039        match self {
1040            Hashalgorithm::Unspecified => "HASHALGORITHM_UNSPECIFIED",
1041            Hashalgorithm::Md5 => "HASHALGORITHM_MD5",
1042            Hashalgorithm::Sha256 => "HASHALGORITHM_SHA256",
1043        }
1044    }
1045    /// Creates an enum from field names used in the ProtoBuf definition.
1046    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1047        match value {
1048            "HASHALGORITHM_UNSPECIFIED" => Some(Self::Unspecified),
1049            "HASHALGORITHM_MD5" => Some(Self::Md5),
1050            "HASHALGORITHM_SHA256" => Some(Self::Sha256),
1051            _ => None,
1052        }
1053    }
1054}
1055#[derive(serde::Deserialize, serde::Serialize)]
1056#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1057#[repr(i32)]
1058pub enum ResourceVariant {
1059    Unspecified = 0,
1060    Project = 1,
1061    Collection = 2,
1062    Dataset = 3,
1063    Object = 4,
1064}
1065impl ResourceVariant {
1066    /// String value of the enum field names used in the ProtoBuf definition.
1067    ///
1068    /// The values are not transformed in any way and thus are considered stable
1069    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1070    pub fn as_str_name(&self) -> &'static str {
1071        match self {
1072            ResourceVariant::Unspecified => "RESOURCE_VARIANT_UNSPECIFIED",
1073            ResourceVariant::Project => "RESOURCE_VARIANT_PROJECT",
1074            ResourceVariant::Collection => "RESOURCE_VARIANT_COLLECTION",
1075            ResourceVariant::Dataset => "RESOURCE_VARIANT_DATASET",
1076            ResourceVariant::Object => "RESOURCE_VARIANT_OBJECT",
1077        }
1078    }
1079    /// Creates an enum from field names used in the ProtoBuf definition.
1080    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1081        match value {
1082            "RESOURCE_VARIANT_UNSPECIFIED" => Some(Self::Unspecified),
1083            "RESOURCE_VARIANT_PROJECT" => Some(Self::Project),
1084            "RESOURCE_VARIANT_COLLECTION" => Some(Self::Collection),
1085            "RESOURCE_VARIANT_DATASET" => Some(Self::Dataset),
1086            "RESOURCE_VARIANT_OBJECT" => Some(Self::Object),
1087            _ => None,
1088        }
1089    }
1090}
1091#[derive(serde::Deserialize, serde::Serialize)]
1092#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1093#[repr(i32)]
1094pub enum ReplicationStatus {
1095    Unspecified = 0,
1096    Waiting = 1,
1097    Running = 2,
1098    Finished = 3,
1099    Error = 4,
1100}
1101impl ReplicationStatus {
1102    /// String value of the enum field names used in the ProtoBuf definition.
1103    ///
1104    /// The values are not transformed in any way and thus are considered stable
1105    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1106    pub fn as_str_name(&self) -> &'static str {
1107        match self {
1108            ReplicationStatus::Unspecified => "REPLICATION_STATUS_UNSPECIFIED",
1109            ReplicationStatus::Waiting => "REPLICATION_STATUS_WAITING",
1110            ReplicationStatus::Running => "REPLICATION_STATUS_RUNNING",
1111            ReplicationStatus::Finished => "REPLICATION_STATUS_FINISHED",
1112            ReplicationStatus::Error => "REPLICATION_STATUS_ERROR",
1113        }
1114    }
1115    /// Creates an enum from field names used in the ProtoBuf definition.
1116    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1117        match value {
1118            "REPLICATION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1119            "REPLICATION_STATUS_WAITING" => Some(Self::Waiting),
1120            "REPLICATION_STATUS_RUNNING" => Some(Self::Running),
1121            "REPLICATION_STATUS_FINISHED" => Some(Self::Finished),
1122            "REPLICATION_STATUS_ERROR" => Some(Self::Error),
1123            _ => None,
1124        }
1125    }
1126}