google_cloud_rust_raw/identity/accesscontextmanager/v1/
access_policy.rs

1// This file is generated by rust-protobuf 2.28.0. Do not edit
2// @generated
3
4// https://github.com/rust-lang/rust-clippy/issues/702
5#![allow(unknown_lints)]
6#![allow(clippy::all)]
7
8#![allow(unused_attributes)]
9#![cfg_attr(rustfmt, rustfmt::skip)]
10
11#![allow(box_pointers)]
12#![allow(dead_code)]
13#![allow(missing_docs)]
14#![allow(non_camel_case_types)]
15#![allow(non_snake_case)]
16#![allow(non_upper_case_globals)]
17#![allow(trivial_casts)]
18#![allow(unused_imports)]
19#![allow(unused_results)]
20//! Generated file from `google/identity/accesscontextmanager/v1/access_policy.proto`
21
22/// Generated files are compatible only with the same version
23/// of protobuf runtime.
24// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0;
25
26#[derive(PartialEq,Clone,Default)]
27pub struct AccessPolicy {
28    // message fields
29    pub name: ::std::string::String,
30    pub parent: ::std::string::String,
31    pub title: ::std::string::String,
32    pub scopes: ::protobuf::RepeatedField<::std::string::String>,
33    pub create_time: ::protobuf::SingularPtrField<::protobuf::well_known_types::Timestamp>,
34    pub update_time: ::protobuf::SingularPtrField<::protobuf::well_known_types::Timestamp>,
35    pub etag: ::std::string::String,
36    // special fields
37    pub unknown_fields: ::protobuf::UnknownFields,
38    pub cached_size: ::protobuf::CachedSize,
39}
40
41impl<'a> ::std::default::Default for &'a AccessPolicy {
42    fn default() -> &'a AccessPolicy {
43        <AccessPolicy as ::protobuf::Message>::default_instance()
44    }
45}
46
47impl AccessPolicy {
48    pub fn new() -> AccessPolicy {
49        ::std::default::Default::default()
50    }
51
52    // string name = 1;
53
54
55    pub fn get_name(&self) -> &str {
56        &self.name
57    }
58    pub fn clear_name(&mut self) {
59        self.name.clear();
60    }
61
62    // Param is passed by value, moved
63    pub fn set_name(&mut self, v: ::std::string::String) {
64        self.name = v;
65    }
66
67    // Mutable pointer to the field.
68    // If field is not initialized, it is initialized with default value first.
69    pub fn mut_name(&mut self) -> &mut ::std::string::String {
70        &mut self.name
71    }
72
73    // Take field
74    pub fn take_name(&mut self) -> ::std::string::String {
75        ::std::mem::replace(&mut self.name, ::std::string::String::new())
76    }
77
78    // string parent = 2;
79
80
81    pub fn get_parent(&self) -> &str {
82        &self.parent
83    }
84    pub fn clear_parent(&mut self) {
85        self.parent.clear();
86    }
87
88    // Param is passed by value, moved
89    pub fn set_parent(&mut self, v: ::std::string::String) {
90        self.parent = v;
91    }
92
93    // Mutable pointer to the field.
94    // If field is not initialized, it is initialized with default value first.
95    pub fn mut_parent(&mut self) -> &mut ::std::string::String {
96        &mut self.parent
97    }
98
99    // Take field
100    pub fn take_parent(&mut self) -> ::std::string::String {
101        ::std::mem::replace(&mut self.parent, ::std::string::String::new())
102    }
103
104    // string title = 3;
105
106
107    pub fn get_title(&self) -> &str {
108        &self.title
109    }
110    pub fn clear_title(&mut self) {
111        self.title.clear();
112    }
113
114    // Param is passed by value, moved
115    pub fn set_title(&mut self, v: ::std::string::String) {
116        self.title = v;
117    }
118
119    // Mutable pointer to the field.
120    // If field is not initialized, it is initialized with default value first.
121    pub fn mut_title(&mut self) -> &mut ::std::string::String {
122        &mut self.title
123    }
124
125    // Take field
126    pub fn take_title(&mut self) -> ::std::string::String {
127        ::std::mem::replace(&mut self.title, ::std::string::String::new())
128    }
129
130    // repeated string scopes = 7;
131
132
133    pub fn get_scopes(&self) -> &[::std::string::String] {
134        &self.scopes
135    }
136    pub fn clear_scopes(&mut self) {
137        self.scopes.clear();
138    }
139
140    // Param is passed by value, moved
141    pub fn set_scopes(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
142        self.scopes = v;
143    }
144
145    // Mutable pointer to the field.
146    pub fn mut_scopes(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
147        &mut self.scopes
148    }
149
150    // Take field
151    pub fn take_scopes(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
152        ::std::mem::replace(&mut self.scopes, ::protobuf::RepeatedField::new())
153    }
154
155    // .google.protobuf.Timestamp create_time = 4;
156
157
158    pub fn get_create_time(&self) -> &::protobuf::well_known_types::Timestamp {
159        self.create_time.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Timestamp as ::protobuf::Message>::default_instance())
160    }
161    pub fn clear_create_time(&mut self) {
162        self.create_time.clear();
163    }
164
165    pub fn has_create_time(&self) -> bool {
166        self.create_time.is_some()
167    }
168
169    // Param is passed by value, moved
170    pub fn set_create_time(&mut self, v: ::protobuf::well_known_types::Timestamp) {
171        self.create_time = ::protobuf::SingularPtrField::some(v);
172    }
173
174    // Mutable pointer to the field.
175    // If field is not initialized, it is initialized with default value first.
176    pub fn mut_create_time(&mut self) -> &mut ::protobuf::well_known_types::Timestamp {
177        if self.create_time.is_none() {
178            self.create_time.set_default();
179        }
180        self.create_time.as_mut().unwrap()
181    }
182
183    // Take field
184    pub fn take_create_time(&mut self) -> ::protobuf::well_known_types::Timestamp {
185        self.create_time.take().unwrap_or_else(|| ::protobuf::well_known_types::Timestamp::new())
186    }
187
188    // .google.protobuf.Timestamp update_time = 5;
189
190
191    pub fn get_update_time(&self) -> &::protobuf::well_known_types::Timestamp {
192        self.update_time.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Timestamp as ::protobuf::Message>::default_instance())
193    }
194    pub fn clear_update_time(&mut self) {
195        self.update_time.clear();
196    }
197
198    pub fn has_update_time(&self) -> bool {
199        self.update_time.is_some()
200    }
201
202    // Param is passed by value, moved
203    pub fn set_update_time(&mut self, v: ::protobuf::well_known_types::Timestamp) {
204        self.update_time = ::protobuf::SingularPtrField::some(v);
205    }
206
207    // Mutable pointer to the field.
208    // If field is not initialized, it is initialized with default value first.
209    pub fn mut_update_time(&mut self) -> &mut ::protobuf::well_known_types::Timestamp {
210        if self.update_time.is_none() {
211            self.update_time.set_default();
212        }
213        self.update_time.as_mut().unwrap()
214    }
215
216    // Take field
217    pub fn take_update_time(&mut self) -> ::protobuf::well_known_types::Timestamp {
218        self.update_time.take().unwrap_or_else(|| ::protobuf::well_known_types::Timestamp::new())
219    }
220
221    // string etag = 6;
222
223
224    pub fn get_etag(&self) -> &str {
225        &self.etag
226    }
227    pub fn clear_etag(&mut self) {
228        self.etag.clear();
229    }
230
231    // Param is passed by value, moved
232    pub fn set_etag(&mut self, v: ::std::string::String) {
233        self.etag = v;
234    }
235
236    // Mutable pointer to the field.
237    // If field is not initialized, it is initialized with default value first.
238    pub fn mut_etag(&mut self) -> &mut ::std::string::String {
239        &mut self.etag
240    }
241
242    // Take field
243    pub fn take_etag(&mut self) -> ::std::string::String {
244        ::std::mem::replace(&mut self.etag, ::std::string::String::new())
245    }
246}
247
248impl ::protobuf::Message for AccessPolicy {
249    fn is_initialized(&self) -> bool {
250        for v in &self.create_time {
251            if !v.is_initialized() {
252                return false;
253            }
254        };
255        for v in &self.update_time {
256            if !v.is_initialized() {
257                return false;
258            }
259        };
260        true
261    }
262
263    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
264        while !is.eof()? {
265            let (field_number, wire_type) = is.read_tag_unpack()?;
266            match field_number {
267                1 => {
268                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
269                },
270                2 => {
271                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.parent)?;
272                },
273                3 => {
274                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.title)?;
275                },
276                7 => {
277                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.scopes)?;
278                },
279                4 => {
280                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.create_time)?;
281                },
282                5 => {
283                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.update_time)?;
284                },
285                6 => {
286                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.etag)?;
287                },
288                _ => {
289                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
290                },
291            };
292        }
293        ::std::result::Result::Ok(())
294    }
295
296    // Compute sizes of nested messages
297    #[allow(unused_variables)]
298    fn compute_size(&self) -> u32 {
299        let mut my_size = 0;
300        if !self.name.is_empty() {
301            my_size += ::protobuf::rt::string_size(1, &self.name);
302        }
303        if !self.parent.is_empty() {
304            my_size += ::protobuf::rt::string_size(2, &self.parent);
305        }
306        if !self.title.is_empty() {
307            my_size += ::protobuf::rt::string_size(3, &self.title);
308        }
309        for value in &self.scopes {
310            my_size += ::protobuf::rt::string_size(7, &value);
311        };
312        if let Some(ref v) = self.create_time.as_ref() {
313            let len = v.compute_size();
314            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
315        }
316        if let Some(ref v) = self.update_time.as_ref() {
317            let len = v.compute_size();
318            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
319        }
320        if !self.etag.is_empty() {
321            my_size += ::protobuf::rt::string_size(6, &self.etag);
322        }
323        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
324        self.cached_size.set(my_size);
325        my_size
326    }
327
328    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
329        if !self.name.is_empty() {
330            os.write_string(1, &self.name)?;
331        }
332        if !self.parent.is_empty() {
333            os.write_string(2, &self.parent)?;
334        }
335        if !self.title.is_empty() {
336            os.write_string(3, &self.title)?;
337        }
338        for v in &self.scopes {
339            os.write_string(7, &v)?;
340        };
341        if let Some(ref v) = self.create_time.as_ref() {
342            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
343            os.write_raw_varint32(v.get_cached_size())?;
344            v.write_to_with_cached_sizes(os)?;
345        }
346        if let Some(ref v) = self.update_time.as_ref() {
347            os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
348            os.write_raw_varint32(v.get_cached_size())?;
349            v.write_to_with_cached_sizes(os)?;
350        }
351        if !self.etag.is_empty() {
352            os.write_string(6, &self.etag)?;
353        }
354        os.write_unknown_fields(self.get_unknown_fields())?;
355        ::std::result::Result::Ok(())
356    }
357
358    fn get_cached_size(&self) -> u32 {
359        self.cached_size.get()
360    }
361
362    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
363        &self.unknown_fields
364    }
365
366    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
367        &mut self.unknown_fields
368    }
369
370    fn as_any(&self) -> &dyn (::std::any::Any) {
371        self as &dyn (::std::any::Any)
372    }
373    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
374        self as &mut dyn (::std::any::Any)
375    }
376    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
377        self
378    }
379
380    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
381        Self::descriptor_static()
382    }
383
384    fn new() -> AccessPolicy {
385        AccessPolicy::new()
386    }
387
388    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
389        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
390        descriptor.get(|| {
391            let mut fields = ::std::vec::Vec::new();
392            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
393                "name",
394                |m: &AccessPolicy| { &m.name },
395                |m: &mut AccessPolicy| { &mut m.name },
396            ));
397            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
398                "parent",
399                |m: &AccessPolicy| { &m.parent },
400                |m: &mut AccessPolicy| { &mut m.parent },
401            ));
402            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
403                "title",
404                |m: &AccessPolicy| { &m.title },
405                |m: &mut AccessPolicy| { &mut m.title },
406            ));
407            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
408                "scopes",
409                |m: &AccessPolicy| { &m.scopes },
410                |m: &mut AccessPolicy| { &mut m.scopes },
411            ));
412            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Timestamp>>(
413                "create_time",
414                |m: &AccessPolicy| { &m.create_time },
415                |m: &mut AccessPolicy| { &mut m.create_time },
416            ));
417            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Timestamp>>(
418                "update_time",
419                |m: &AccessPolicy| { &m.update_time },
420                |m: &mut AccessPolicy| { &mut m.update_time },
421            ));
422            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
423                "etag",
424                |m: &AccessPolicy| { &m.etag },
425                |m: &mut AccessPolicy| { &mut m.etag },
426            ));
427            ::protobuf::reflect::MessageDescriptor::new_pb_name::<AccessPolicy>(
428                "AccessPolicy",
429                fields,
430                file_descriptor_proto()
431            )
432        })
433    }
434
435    fn default_instance() -> &'static AccessPolicy {
436        static instance: ::protobuf::rt::LazyV2<AccessPolicy> = ::protobuf::rt::LazyV2::INIT;
437        instance.get(AccessPolicy::new)
438    }
439}
440
441impl ::protobuf::Clear for AccessPolicy {
442    fn clear(&mut self) {
443        self.name.clear();
444        self.parent.clear();
445        self.title.clear();
446        self.scopes.clear();
447        self.create_time.clear();
448        self.update_time.clear();
449        self.etag.clear();
450        self.unknown_fields.clear();
451    }
452}
453
454impl ::std::fmt::Debug for AccessPolicy {
455    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
456        ::protobuf::text_format::fmt(self, f)
457    }
458}
459
460impl ::protobuf::reflect::ProtobufValue for AccessPolicy {
461    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
462        ::protobuf::reflect::ReflectValueRef::Message(self)
463    }
464}
465
466static file_descriptor_proto_data: &'static [u8] = b"\
467    \n;google/identity/accesscontextmanager/v1/access_policy.proto\x12'googl\
468    e.identity.accesscontextmanager.v1\x1a\x19google/api/resource.proto\x1a\
469    \x1fgoogle/protobuf/timestamp.proto\"\xcd\x02\n\x0cAccessPolicy\x12\x12\
470    \n\x04name\x18\x01\x20\x01(\tR\x04name\x12\x16\n\x06parent\x18\x02\x20\
471    \x01(\tR\x06parent\x12\x14\n\x05title\x18\x03\x20\x01(\tR\x05title\x12\
472    \x16\n\x06scopes\x18\x07\x20\x03(\tR\x06scopes\x12;\n\x0bcreate_time\x18\
473    \x04\x20\x01(\x0b2\x1a.google.protobuf.TimestampR\ncreateTime\x12;\n\x0b\
474    update_time\x18\x05\x20\x01(\x0b2\x1a.google.protobuf.TimestampR\nupdate\
475    Time\x12\x12\n\x04etag\x18\x06\x20\x01(\tR\x04etag:U\xeaAR\n0accessconte\
476    xtmanager.googleapis.com/AccessPolicy\x12\x1eaccessPolicies/{access_poli\
477    cy}B\xa2\x02\n+com.google.identity.accesscontextmanager.v1B\x0bPolicyPro\
478    toP\x01Z\\cloud.google.com/go/accesscontextmanager/apiv1/accesscontextma\
479    nagerpb;accesscontextmanagerpb\xa2\x02\x04GACM\xaa\x02'Google.Identity.A\
480    ccessContextManager.V1\xca\x02'Google\\Identity\\AccessContextManager\\V\
481    1\xea\x02*Google::Identity::AccessContextManager::V1J\xdc\x18\n\x06\x12\
482    \x04\x0e\0P\x01\n\xbc\x04\n\x01\x0c\x12\x03\x0e\0\x122\xb1\x04\x20Copyri\
483    ght\x202022\x20Google\x20LLC\n\n\x20Licensed\x20under\x20the\x20Apache\
484    \x20License,\x20Version\x202.0\x20(the\x20\"License\");\n\x20you\x20may\
485    \x20not\x20use\x20this\x20file\x20except\x20in\x20compliance\x20with\x20\
486    the\x20License.\n\x20You\x20may\x20obtain\x20a\x20copy\x20of\x20the\x20L\
487    icense\x20at\n\n\x20\x20\x20\x20\x20http://www.apache.org/licenses/LICEN\
488    SE-2.0\n\n\x20Unless\x20required\x20by\x20applicable\x20law\x20or\x20agr\
489    eed\x20to\x20in\x20writing,\x20software\n\x20distributed\x20under\x20the\
490    \x20License\x20is\x20distributed\x20on\x20an\x20\"AS\x20IS\"\x20BASIS,\n\
491    \x20WITHOUT\x20WARRANTIES\x20OR\x20CONDITIONS\x20OF\x20ANY\x20KIND,\x20e\
492    ither\x20express\x20or\x20implied.\n\x20See\x20the\x20License\x20for\x20\
493    the\x20specific\x20language\x20governing\x20permissions\x20and\n\x20limi\
494    tations\x20under\x20the\x20License.\n\n\x08\n\x01\x02\x12\x03\x10\00\n\t\
495    \n\x02\x03\0\x12\x03\x12\0#\n\t\n\x02\x03\x01\x12\x03\x13\0)\n\x08\n\x01\
496    \x08\x12\x03\x15\0D\n\t\n\x02\x08%\x12\x03\x15\0D\n\x08\n\x01\x08\x12\
497    \x03\x16\0s\n\t\n\x02\x08\x0b\x12\x03\x16\0s\n\x08\n\x01\x08\x12\x03\x17\
498    \0\"\n\t\n\x02\x08\n\x12\x03\x17\0\"\n\x08\n\x01\x08\x12\x03\x18\0,\n\t\
499    \n\x02\x08\x08\x12\x03\x18\0,\n\x08\n\x01\x08\x12\x03\x19\0D\n\t\n\x02\
500    \x08\x01\x12\x03\x19\0D\n\x08\n\x01\x08\x12\x03\x1a\0\"\n\t\n\x02\x08$\
501    \x12\x03\x1a\0\"\n\x08\n\x01\x08\x12\x03\x1b\0D\n\t\n\x02\x08)\x12\x03\
502    \x1b\0D\n\x08\n\x01\x08\x12\x03\x1c\0C\n\t\n\x02\x08-\x12\x03\x1c\0C\n\
503    \xfd\x02\n\x02\x04\0\x12\x04#\0P\x01\x1a\xf0\x02\x20`AccessPolicy`\x20is\
504    \x20a\x20container\x20for\x20`AccessLevels`\x20(which\x20define\x20the\
505    \x20necessary\n\x20attributes\x20to\x20use\x20Google\x20Cloud\x20service\
506    s)\x20and\x20`ServicePerimeters`\x20(which\n\x20define\x20regions\x20of\
507    \x20services\x20able\x20to\x20freely\x20pass\x20data\x20within\x20a\x20p\
508    erimeter).\x20An\n\x20access\x20policy\x20is\x20globally\x20visible\x20w\
509    ithin\x20an\x20organization,\x20and\x20the\n\x20restrictions\x20it\x20sp\
510    ecifies\x20apply\x20to\x20all\x20projects\x20within\x20an\x20organizatio\
511    n.\n\n\n\n\x03\x04\0\x01\x12\x03#\x08\x14\n\x0b\n\x03\x04\0\x07\x12\x04$\
512    \x02'\x04\n\r\n\x05\x04\0\x07\x9d\x08\x12\x04$\x02'\x04\nj\n\x04\x04\0\
513    \x02\0\x12\x03+\x02\x12\x1a]\x20Output\x20only.\x20Resource\x20name\x20o\
514    f\x20the\x20`AccessPolicy`.\x20Format:\n\x20`accessPolicies/{access_poli\
515    cy}`\n\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03+\x02\x08\n\x0c\n\x05\x04\0\
516    \x02\0\x01\x12\x03+\t\r\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03+\x10\x11\n\
517    \xaa\x01\n\x04\x04\0\x02\x01\x12\x030\x02\x14\x1a\x9c\x01\x20Required.\
518    \x20The\x20parent\x20of\x20this\x20`AccessPolicy`\x20in\x20the\x20Cloud\
519    \x20Resource\n\x20Hierarchy.\x20Currently\x20immutable\x20once\x20create\
520    d.\x20Format:\n\x20`organizations/{organization_id}`\n\n\x0c\n\x05\x04\0\
521    \x02\x01\x05\x12\x030\x02\x08\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x030\t\
522    \x0f\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x030\x12\x13\nH\n\x04\x04\0\x02\
523    \x02\x12\x033\x02\x13\x1a;\x20Required.\x20Human\x20readable\x20title.\
524    \x20Does\x20not\x20affect\x20behavior.\n\n\x0c\n\x05\x04\0\x02\x02\x05\
525    \x12\x033\x02\x08\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x033\t\x0e\n\x0c\n\
526    \x05\x04\0\x02\x02\x03\x12\x033\x11\x12\n\xcb\x06\n\x04\x04\0\x02\x03\
527    \x12\x03C\x02\x1d\x1a\xbd\x06\x20The\x20scopes\x20of\x20a\x20policy\x20d\
528    efine\x20which\x20resources\x20an\x20ACM\x20policy\x20can\x20restrict,\n\
529    \x20and\x20where\x20ACM\x20resources\x20can\x20be\x20referenced.\n\x20Fo\
530    r\x20example,\x20a\x20policy\x20with\x20scopes=[\"folders/123\"]\x20has\
531    \x20the\x20following\n\x20behavior:\n\x20-\x20vpcsc\x20perimeters\x20can\
532    \x20only\x20restrict\x20projects\x20within\x20folders/123\n\x20-\x20acce\
533    ss\x20levels\x20can\x20only\x20be\x20referenced\x20by\x20resources\x20wi\
534    thin\x20folders/123.\n\x20If\x20empty,\x20there\x20are\x20no\x20limitati\
535    ons\x20on\x20which\x20resources\x20can\x20be\x20restricted\x20by\n\x20an\
536    \x20ACM\x20policy,\x20and\x20there\x20are\x20no\x20limitations\x20on\x20\
537    where\x20ACM\x20resources\x20can\x20be\n\x20referenced.\n\x20Only\x20one\
538    \x20policy\x20can\x20include\x20a\x20given\x20scope\x20(attempting\x20to\
539    \x20create\x20a\x20second\n\x20policy\x20which\x20includes\x20\"folders/\
540    123\"\x20will\x20result\x20in\x20an\x20error).\n\x20Currently,\x20scopes\
541    \x20cannot\x20be\x20modified\x20after\x20a\x20policy\x20is\x20created.\n\
542    \x20Currently,\x20policies\x20can\x20only\x20have\x20a\x20single\x20scop\
543    e.\n\x20Format:\x20list\x20of\x20`folders/{folder_number}`\x20or\x20`pro\
544    jects/{project_number}`\n\n\x0c\n\x05\x04\0\x02\x03\x04\x12\x03C\x02\n\n\
545    \x0c\n\x05\x04\0\x02\x03\x05\x12\x03C\x0b\x11\n\x0c\n\x05\x04\0\x02\x03\
546    \x01\x12\x03C\x12\x18\n\x0c\n\x05\x04\0\x02\x03\x03\x12\x03C\x1b\x1c\nG\
547    \n\x04\x04\0\x02\x04\x12\x03F\x02,\x1a:\x20Output\x20only.\x20Time\x20th\
548    e\x20`AccessPolicy`\x20was\x20created\x20in\x20UTC.\n\n\x0c\n\x05\x04\0\
549    \x02\x04\x06\x12\x03F\x02\x1b\n\x0c\n\x05\x04\0\x02\x04\x01\x12\x03F\x1c\
550    '\n\x0c\n\x05\x04\0\x02\x04\x03\x12\x03F*+\nG\n\x04\x04\0\x02\x05\x12\
551    \x03I\x02,\x1a:\x20Output\x20only.\x20Time\x20the\x20`AccessPolicy`\x20w\
552    as\x20updated\x20in\x20UTC.\n\n\x0c\n\x05\x04\0\x02\x05\x06\x12\x03I\x02\
553    \x1b\n\x0c\n\x05\x04\0\x02\x05\x01\x12\x03I\x1c'\n\x0c\n\x05\x04\0\x02\
554    \x05\x03\x12\x03I*+\n\xab\x02\n\x04\x04\0\x02\x06\x12\x03O\x02\x12\x1a\
555    \x9d\x02\x20Output\x20only.\x20An\x20opaque\x20identifier\x20for\x20the\
556    \x20current\x20version\x20of\x20the\n\x20`AccessPolicy`.\x20This\x20will\
557    \x20always\x20be\x20a\x20strongly\x20validated\x20etag,\x20meaning\x20th\
558    at\n\x20two\x20Access\x20Polices\x20will\x20be\x20identical\x20if\x20and\
559    \x20only\x20if\x20their\x20etags\x20are\n\x20identical.\x20Clients\x20sh\
560    ould\x20not\x20expect\x20this\x20to\x20be\x20in\x20any\x20specific\x20fo\
561    rmat.\n\n\x0c\n\x05\x04\0\x02\x06\x05\x12\x03O\x02\x08\n\x0c\n\x05\x04\0\
562    \x02\x06\x01\x12\x03O\t\r\n\x0c\n\x05\x04\0\x02\x06\x03\x12\x03O\x10\x11\
563    b\x06proto3\
564";
565
566static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
567
568fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
569    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
570}
571
572pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
573    file_descriptor_proto_lazy.get(|| {
574        parse_descriptor_proto()
575    })
576}