Skip to main content

google_cloud_dataplex_v1/
client.rs

1// Copyright 2025 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Code generated by sidekick. DO NOT EDIT.
16#![allow(rustdoc::redundant_explicit_links)]
17#![allow(rustdoc::broken_intra_doc_links)]
18
19/// Implements a client for the Cloud Dataplex API.
20///
21/// # Example
22/// ```
23/// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
24/// use google_cloud_gax::paginator::ItemPaginator as _;
25/// # async fn sample() -> Result<(), Box<dyn std::error::Error>> {
26///     let client = BusinessGlossaryService::builder().build().await?;
27///     let parent = "parent_value";
28///     let mut list = client.list_glossaries()
29///         .set_parent(parent)
30///         .by_item();
31///     while let Some(item) = list.next().await.transpose()? {
32///         println!("{:?}", item);
33///     }
34/// # Ok(()) }
35/// ```
36///
37/// # Service Description
38///
39/// BusinessGlossaryService provides APIs for managing business glossary
40/// resources for enterprise customers.
41/// The resources currently supported in Business Glossary are:
42///
43/// 1. Glossary
44/// 1. GlossaryCategory
45/// 1. GlossaryTerm
46///
47/// # Configuration
48///
49/// To configure `BusinessGlossaryService` use the `with_*` methods in the type returned
50/// by [builder()][BusinessGlossaryService::builder]. The default configuration should
51/// work for most applications. Common configuration changes include
52///
53/// * [with_endpoint()]: by default this client uses the global default endpoint
54///   (`https://dataplex.googleapis.com`). Applications using regional
55///   endpoints or running in restricted networks (e.g. a network configured
56//    with [Private Google Access with VPC Service Controls]) may want to
57///   override this default.
58/// * [with_credentials()]: by default this client uses
59///   [Application Default Credentials]. Applications using custom
60///   authentication may need to override this default.
61///
62/// [with_endpoint()]: super::builder::business_glossary_service::ClientBuilder::with_endpoint
63/// [with_credentials()]: super::builder::business_glossary_service::ClientBuilder::with_credentials
64/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
65/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
66///
67/// # Pooling and Cloning
68///
69/// `BusinessGlossaryService` holds a connection pool internally, it is advised to
70/// create one and reuse it. You do not need to wrap `BusinessGlossaryService` in
71/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
72/// already uses an `Arc` internally.
73#[derive(Clone, Debug)]
74pub struct BusinessGlossaryService {
75    inner: std::sync::Arc<dyn super::stub::dynamic::BusinessGlossaryService>,
76}
77
78impl BusinessGlossaryService {
79    /// Returns a builder for [BusinessGlossaryService].
80    ///
81    /// ```
82    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
83    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
84    /// let client = BusinessGlossaryService::builder().build().await?;
85    /// # Ok(()) }
86    /// ```
87    pub fn builder() -> super::builder::business_glossary_service::ClientBuilder {
88        crate::new_client_builder(super::builder::business_glossary_service::client::Factory)
89    }
90
91    /// Creates a new client from the provided stub.
92    ///
93    /// The most common case for calling this function is in tests mocking the
94    /// client's behavior.
95    pub fn from_stub<T>(stub: T) -> Self
96    where
97        T: super::stub::BusinessGlossaryService + 'static,
98    {
99        Self {
100            inner: std::sync::Arc::new(stub),
101        }
102    }
103
104    pub(crate) async fn new(
105        config: gaxi::options::ClientConfig,
106    ) -> crate::ClientBuilderResult<Self> {
107        let inner = Self::build_inner(config).await?;
108        Ok(Self { inner })
109    }
110
111    async fn build_inner(
112        conf: gaxi::options::ClientConfig,
113    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::BusinessGlossaryService>>
114    {
115        if gaxi::options::tracing_enabled(&conf) {
116            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
117        }
118        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
119    }
120
121    async fn build_transport(
122        conf: gaxi::options::ClientConfig,
123    ) -> crate::ClientBuilderResult<impl super::stub::BusinessGlossaryService> {
124        super::transport::BusinessGlossaryService::new(conf).await
125    }
126
127    async fn build_with_tracing(
128        conf: gaxi::options::ClientConfig,
129    ) -> crate::ClientBuilderResult<impl super::stub::BusinessGlossaryService> {
130        Self::build_transport(conf)
131            .await
132            .map(super::tracing::BusinessGlossaryService::new)
133    }
134
135    /// Creates a new Glossary resource.
136    ///
137    /// # Long running operations
138    ///
139    /// This method is used to start, and/or poll a [long-running Operation].
140    /// The [Working with long-running operations] chapter in the [user guide]
141    /// covers these operations in detail.
142    ///
143    /// [long-running operation]: https://google.aip.dev/151
144    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
145    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
146    ///
147    /// # Example
148    /// ```
149    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
150    /// use google_cloud_lro::Poller;
151    /// use google_cloud_dataplex_v1::model::Glossary;
152    /// use google_cloud_dataplex_v1::Result;
153    /// async fn sample(
154    ///    client: &BusinessGlossaryService, parent: &str
155    /// ) -> Result<()> {
156    ///     let response = client.create_glossary()
157    ///         .set_parent(parent)
158    ///         .set_glossary_id("glossary_id_value")
159    ///         .set_glossary(
160    ///             Glossary::new()/* set fields */
161    ///         )
162    ///         .poller().until_done().await?;
163    ///     println!("response {:?}", response);
164    ///     Ok(())
165    /// }
166    /// ```
167    pub fn create_glossary(&self) -> super::builder::business_glossary_service::CreateGlossary {
168        super::builder::business_glossary_service::CreateGlossary::new(self.inner.clone())
169    }
170
171    /// Updates a Glossary resource.
172    ///
173    /// # Long running operations
174    ///
175    /// This method is used to start, and/or poll a [long-running Operation].
176    /// The [Working with long-running operations] chapter in the [user guide]
177    /// covers these operations in detail.
178    ///
179    /// [long-running operation]: https://google.aip.dev/151
180    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
181    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
182    ///
183    /// # Example
184    /// ```
185    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
186    /// use google_cloud_lro::Poller;
187    /// # extern crate wkt as google_cloud_wkt;
188    /// use google_cloud_wkt::FieldMask;
189    /// use google_cloud_dataplex_v1::model::Glossary;
190    /// use google_cloud_dataplex_v1::Result;
191    /// async fn sample(
192    ///    client: &BusinessGlossaryService, name: &str
193    /// ) -> Result<()> {
194    ///     let response = client.update_glossary()
195    ///         .set_glossary(
196    ///             Glossary::new().set_name(name)/* set fields */
197    ///         )
198    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
199    ///         .poller().until_done().await?;
200    ///     println!("response {:?}", response);
201    ///     Ok(())
202    /// }
203    /// ```
204    pub fn update_glossary(&self) -> super::builder::business_glossary_service::UpdateGlossary {
205        super::builder::business_glossary_service::UpdateGlossary::new(self.inner.clone())
206    }
207
208    /// Deletes a Glossary resource. All the categories and terms within the
209    /// Glossary must be deleted before the Glossary can be deleted.
210    ///
211    /// # Long running operations
212    ///
213    /// This method is used to start, and/or poll a [long-running Operation].
214    /// The [Working with long-running operations] chapter in the [user guide]
215    /// covers these operations in detail.
216    ///
217    /// [long-running operation]: https://google.aip.dev/151
218    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
219    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
220    ///
221    /// # Example
222    /// ```
223    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
224    /// use google_cloud_lro::Poller;
225    /// use google_cloud_dataplex_v1::Result;
226    /// async fn sample(
227    ///    client: &BusinessGlossaryService, name: &str
228    /// ) -> Result<()> {
229    ///     client.delete_glossary()
230    ///         .set_name(name)
231    ///         .poller().until_done().await?;
232    ///     Ok(())
233    /// }
234    /// ```
235    pub fn delete_glossary(&self) -> super::builder::business_glossary_service::DeleteGlossary {
236        super::builder::business_glossary_service::DeleteGlossary::new(self.inner.clone())
237    }
238
239    /// Gets a Glossary resource.
240    ///
241    /// # Example
242    /// ```
243    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
244    /// use google_cloud_dataplex_v1::Result;
245    /// async fn sample(
246    ///    client: &BusinessGlossaryService, name: &str
247    /// ) -> Result<()> {
248    ///     let response = client.get_glossary()
249    ///         .set_name(name)
250    ///         .send().await?;
251    ///     println!("response {:?}", response);
252    ///     Ok(())
253    /// }
254    /// ```
255    pub fn get_glossary(&self) -> super::builder::business_glossary_service::GetGlossary {
256        super::builder::business_glossary_service::GetGlossary::new(self.inner.clone())
257    }
258
259    /// Lists Glossary resources in a project and location.
260    ///
261    /// # Example
262    /// ```
263    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
264    /// use google_cloud_gax::paginator::ItemPaginator as _;
265    /// use google_cloud_dataplex_v1::Result;
266    /// async fn sample(
267    ///    client: &BusinessGlossaryService, parent: &str
268    /// ) -> Result<()> {
269    ///     let mut list = client.list_glossaries()
270    ///         .set_parent(parent)
271    ///         .by_item();
272    ///     while let Some(item) = list.next().await.transpose()? {
273    ///         println!("{:?}", item);
274    ///     }
275    ///     Ok(())
276    /// }
277    /// ```
278    pub fn list_glossaries(&self) -> super::builder::business_glossary_service::ListGlossaries {
279        super::builder::business_glossary_service::ListGlossaries::new(self.inner.clone())
280    }
281
282    /// Creates a new GlossaryCategory resource.
283    ///
284    /// # Example
285    /// ```
286    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
287    /// use google_cloud_dataplex_v1::Result;
288    /// async fn sample(
289    ///    client: &BusinessGlossaryService
290    /// ) -> Result<()> {
291    ///     let response = client.create_glossary_category()
292    ///         /* set fields */
293    ///         .send().await?;
294    ///     println!("response {:?}", response);
295    ///     Ok(())
296    /// }
297    /// ```
298    pub fn create_glossary_category(
299        &self,
300    ) -> super::builder::business_glossary_service::CreateGlossaryCategory {
301        super::builder::business_glossary_service::CreateGlossaryCategory::new(self.inner.clone())
302    }
303
304    /// Updates a GlossaryCategory resource.
305    ///
306    /// # Example
307    /// ```
308    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
309    /// use google_cloud_dataplex_v1::Result;
310    /// async fn sample(
311    ///    client: &BusinessGlossaryService
312    /// ) -> Result<()> {
313    ///     let response = client.update_glossary_category()
314    ///         /* set fields */
315    ///         .send().await?;
316    ///     println!("response {:?}", response);
317    ///     Ok(())
318    /// }
319    /// ```
320    pub fn update_glossary_category(
321        &self,
322    ) -> super::builder::business_glossary_service::UpdateGlossaryCategory {
323        super::builder::business_glossary_service::UpdateGlossaryCategory::new(self.inner.clone())
324    }
325
326    /// Deletes a GlossaryCategory resource. All the GlossaryCategories and
327    /// GlossaryTerms nested directly under the specified GlossaryCategory will be
328    /// moved one level up to the parent in the hierarchy.
329    ///
330    /// # Example
331    /// ```
332    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
333    /// use google_cloud_dataplex_v1::Result;
334    /// async fn sample(
335    ///    client: &BusinessGlossaryService
336    /// ) -> Result<()> {
337    ///     client.delete_glossary_category()
338    ///         /* set fields */
339    ///         .send().await?;
340    ///     Ok(())
341    /// }
342    /// ```
343    pub fn delete_glossary_category(
344        &self,
345    ) -> super::builder::business_glossary_service::DeleteGlossaryCategory {
346        super::builder::business_glossary_service::DeleteGlossaryCategory::new(self.inner.clone())
347    }
348
349    /// Gets a GlossaryCategory resource.
350    ///
351    /// # Example
352    /// ```
353    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
354    /// use google_cloud_dataplex_v1::Result;
355    /// async fn sample(
356    ///    client: &BusinessGlossaryService
357    /// ) -> Result<()> {
358    ///     let response = client.get_glossary_category()
359    ///         /* set fields */
360    ///         .send().await?;
361    ///     println!("response {:?}", response);
362    ///     Ok(())
363    /// }
364    /// ```
365    pub fn get_glossary_category(
366        &self,
367    ) -> super::builder::business_glossary_service::GetGlossaryCategory {
368        super::builder::business_glossary_service::GetGlossaryCategory::new(self.inner.clone())
369    }
370
371    /// Lists GlossaryCategory resources in a Glossary.
372    ///
373    /// # Example
374    /// ```
375    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
376    /// use google_cloud_gax::paginator::ItemPaginator as _;
377    /// use google_cloud_dataplex_v1::Result;
378    /// async fn sample(
379    ///    client: &BusinessGlossaryService, parent: &str
380    /// ) -> Result<()> {
381    ///     let mut list = client.list_glossary_categories()
382    ///         .set_parent(parent)
383    ///         .by_item();
384    ///     while let Some(item) = list.next().await.transpose()? {
385    ///         println!("{:?}", item);
386    ///     }
387    ///     Ok(())
388    /// }
389    /// ```
390    pub fn list_glossary_categories(
391        &self,
392    ) -> super::builder::business_glossary_service::ListGlossaryCategories {
393        super::builder::business_glossary_service::ListGlossaryCategories::new(self.inner.clone())
394    }
395
396    /// Creates a new GlossaryTerm resource.
397    ///
398    /// # Example
399    /// ```
400    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
401    /// use google_cloud_dataplex_v1::Result;
402    /// async fn sample(
403    ///    client: &BusinessGlossaryService
404    /// ) -> Result<()> {
405    ///     let response = client.create_glossary_term()
406    ///         /* set fields */
407    ///         .send().await?;
408    ///     println!("response {:?}", response);
409    ///     Ok(())
410    /// }
411    /// ```
412    pub fn create_glossary_term(
413        &self,
414    ) -> super::builder::business_glossary_service::CreateGlossaryTerm {
415        super::builder::business_glossary_service::CreateGlossaryTerm::new(self.inner.clone())
416    }
417
418    /// Updates a GlossaryTerm resource.
419    ///
420    /// # Example
421    /// ```
422    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
423    /// use google_cloud_dataplex_v1::Result;
424    /// async fn sample(
425    ///    client: &BusinessGlossaryService
426    /// ) -> Result<()> {
427    ///     let response = client.update_glossary_term()
428    ///         /* set fields */
429    ///         .send().await?;
430    ///     println!("response {:?}", response);
431    ///     Ok(())
432    /// }
433    /// ```
434    pub fn update_glossary_term(
435        &self,
436    ) -> super::builder::business_glossary_service::UpdateGlossaryTerm {
437        super::builder::business_glossary_service::UpdateGlossaryTerm::new(self.inner.clone())
438    }
439
440    /// Deletes a GlossaryTerm resource.
441    ///
442    /// # Example
443    /// ```
444    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
445    /// use google_cloud_dataplex_v1::Result;
446    /// async fn sample(
447    ///    client: &BusinessGlossaryService
448    /// ) -> Result<()> {
449    ///     client.delete_glossary_term()
450    ///         /* set fields */
451    ///         .send().await?;
452    ///     Ok(())
453    /// }
454    /// ```
455    pub fn delete_glossary_term(
456        &self,
457    ) -> super::builder::business_glossary_service::DeleteGlossaryTerm {
458        super::builder::business_glossary_service::DeleteGlossaryTerm::new(self.inner.clone())
459    }
460
461    /// Gets a GlossaryTerm resource.
462    ///
463    /// # Example
464    /// ```
465    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
466    /// use google_cloud_dataplex_v1::Result;
467    /// async fn sample(
468    ///    client: &BusinessGlossaryService
469    /// ) -> Result<()> {
470    ///     let response = client.get_glossary_term()
471    ///         /* set fields */
472    ///         .send().await?;
473    ///     println!("response {:?}", response);
474    ///     Ok(())
475    /// }
476    /// ```
477    pub fn get_glossary_term(&self) -> super::builder::business_glossary_service::GetGlossaryTerm {
478        super::builder::business_glossary_service::GetGlossaryTerm::new(self.inner.clone())
479    }
480
481    /// Lists GlossaryTerm resources in a Glossary.
482    ///
483    /// # Example
484    /// ```
485    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
486    /// use google_cloud_gax::paginator::ItemPaginator as _;
487    /// use google_cloud_dataplex_v1::Result;
488    /// async fn sample(
489    ///    client: &BusinessGlossaryService, parent: &str
490    /// ) -> Result<()> {
491    ///     let mut list = client.list_glossary_terms()
492    ///         .set_parent(parent)
493    ///         .by_item();
494    ///     while let Some(item) = list.next().await.transpose()? {
495    ///         println!("{:?}", item);
496    ///     }
497    ///     Ok(())
498    /// }
499    /// ```
500    pub fn list_glossary_terms(
501        &self,
502    ) -> super::builder::business_glossary_service::ListGlossaryTerms {
503        super::builder::business_glossary_service::ListGlossaryTerms::new(self.inner.clone())
504    }
505
506    /// Lists information about the supported locations for this service.
507    ///
508    /// # Example
509    /// ```
510    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
511    /// use google_cloud_gax::paginator::ItemPaginator as _;
512    /// use google_cloud_dataplex_v1::Result;
513    /// async fn sample(
514    ///    client: &BusinessGlossaryService
515    /// ) -> Result<()> {
516    ///     let mut list = client.list_locations()
517    ///         /* set fields */
518    ///         .by_item();
519    ///     while let Some(item) = list.next().await.transpose()? {
520    ///         println!("{:?}", item);
521    ///     }
522    ///     Ok(())
523    /// }
524    /// ```
525    pub fn list_locations(&self) -> super::builder::business_glossary_service::ListLocations {
526        super::builder::business_glossary_service::ListLocations::new(self.inner.clone())
527    }
528
529    /// Gets information about a location.
530    ///
531    /// # Example
532    /// ```
533    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
534    /// use google_cloud_dataplex_v1::Result;
535    /// async fn sample(
536    ///    client: &BusinessGlossaryService
537    /// ) -> Result<()> {
538    ///     let response = client.get_location()
539    ///         /* set fields */
540    ///         .send().await?;
541    ///     println!("response {:?}", response);
542    ///     Ok(())
543    /// }
544    /// ```
545    pub fn get_location(&self) -> super::builder::business_glossary_service::GetLocation {
546        super::builder::business_glossary_service::GetLocation::new(self.inner.clone())
547    }
548
549    /// Sets the access control policy on the specified resource. Replaces
550    /// any existing policy.
551    ///
552    /// Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
553    /// errors.
554    ///
555    /// # Example
556    /// ```
557    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
558    /// use google_cloud_dataplex_v1::Result;
559    /// async fn sample(
560    ///    client: &BusinessGlossaryService
561    /// ) -> Result<()> {
562    ///     let response = client.set_iam_policy()
563    ///         /* set fields */
564    ///         .send().await?;
565    ///     println!("response {:?}", response);
566    ///     Ok(())
567    /// }
568    /// ```
569    pub fn set_iam_policy(&self) -> super::builder::business_glossary_service::SetIamPolicy {
570        super::builder::business_glossary_service::SetIamPolicy::new(self.inner.clone())
571    }
572
573    /// Gets the access control policy for a resource. Returns an empty policy
574    /// if the resource exists and does not have a policy set.
575    ///
576    /// # Example
577    /// ```
578    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
579    /// use google_cloud_dataplex_v1::Result;
580    /// async fn sample(
581    ///    client: &BusinessGlossaryService
582    /// ) -> Result<()> {
583    ///     let response = client.get_iam_policy()
584    ///         /* set fields */
585    ///         .send().await?;
586    ///     println!("response {:?}", response);
587    ///     Ok(())
588    /// }
589    /// ```
590    pub fn get_iam_policy(&self) -> super::builder::business_glossary_service::GetIamPolicy {
591        super::builder::business_glossary_service::GetIamPolicy::new(self.inner.clone())
592    }
593
594    /// Returns permissions that a caller has on the specified resource. If the
595    /// resource does not exist, this will return an empty set of
596    /// permissions, not a `NOT_FOUND` error.
597    ///
598    /// Note: This operation is designed to be used for building
599    /// permission-aware UIs and command-line tools, not for authorization
600    /// checking. This operation may "fail open" without warning.
601    ///
602    /// # Example
603    /// ```
604    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
605    /// use google_cloud_dataplex_v1::Result;
606    /// async fn sample(
607    ///    client: &BusinessGlossaryService
608    /// ) -> Result<()> {
609    ///     let response = client.test_iam_permissions()
610    ///         /* set fields */
611    ///         .send().await?;
612    ///     println!("response {:?}", response);
613    ///     Ok(())
614    /// }
615    /// ```
616    pub fn test_iam_permissions(
617        &self,
618    ) -> super::builder::business_glossary_service::TestIamPermissions {
619        super::builder::business_glossary_service::TestIamPermissions::new(self.inner.clone())
620    }
621
622    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
623    ///
624    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
625    ///
626    /// # Example
627    /// ```
628    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
629    /// use google_cloud_gax::paginator::ItemPaginator as _;
630    /// use google_cloud_dataplex_v1::Result;
631    /// async fn sample(
632    ///    client: &BusinessGlossaryService
633    /// ) -> Result<()> {
634    ///     let mut list = client.list_operations()
635    ///         /* set fields */
636    ///         .by_item();
637    ///     while let Some(item) = list.next().await.transpose()? {
638    ///         println!("{:?}", item);
639    ///     }
640    ///     Ok(())
641    /// }
642    /// ```
643    pub fn list_operations(&self) -> super::builder::business_glossary_service::ListOperations {
644        super::builder::business_glossary_service::ListOperations::new(self.inner.clone())
645    }
646
647    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
648    ///
649    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
650    ///
651    /// # Example
652    /// ```
653    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
654    /// use google_cloud_dataplex_v1::Result;
655    /// async fn sample(
656    ///    client: &BusinessGlossaryService
657    /// ) -> Result<()> {
658    ///     let response = client.get_operation()
659    ///         /* set fields */
660    ///         .send().await?;
661    ///     println!("response {:?}", response);
662    ///     Ok(())
663    /// }
664    /// ```
665    pub fn get_operation(&self) -> super::builder::business_glossary_service::GetOperation {
666        super::builder::business_glossary_service::GetOperation::new(self.inner.clone())
667    }
668
669    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
670    ///
671    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
672    ///
673    /// # Example
674    /// ```
675    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
676    /// use google_cloud_dataplex_v1::Result;
677    /// async fn sample(
678    ///    client: &BusinessGlossaryService
679    /// ) -> Result<()> {
680    ///     client.delete_operation()
681    ///         /* set fields */
682    ///         .send().await?;
683    ///     Ok(())
684    /// }
685    /// ```
686    pub fn delete_operation(&self) -> super::builder::business_glossary_service::DeleteOperation {
687        super::builder::business_glossary_service::DeleteOperation::new(self.inner.clone())
688    }
689
690    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
691    ///
692    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
693    ///
694    /// # Example
695    /// ```
696    /// # use google_cloud_dataplex_v1::client::BusinessGlossaryService;
697    /// use google_cloud_dataplex_v1::Result;
698    /// async fn sample(
699    ///    client: &BusinessGlossaryService
700    /// ) -> Result<()> {
701    ///     client.cancel_operation()
702    ///         /* set fields */
703    ///         .send().await?;
704    ///     Ok(())
705    /// }
706    /// ```
707    pub fn cancel_operation(&self) -> super::builder::business_glossary_service::CancelOperation {
708        super::builder::business_glossary_service::CancelOperation::new(self.inner.clone())
709    }
710}
711
712/// Implements a client for the Cloud Dataplex API.
713///
714/// # Example
715/// ```
716/// # use google_cloud_dataplex_v1::client::CatalogService;
717/// use google_cloud_gax::paginator::ItemPaginator as _;
718/// # async fn sample() -> Result<(), Box<dyn std::error::Error>> {
719///     let client = CatalogService::builder().build().await?;
720///     let parent = "parent_value";
721///     let mut list = client.list_entry_types()
722///         .set_parent(parent)
723///         .by_item();
724///     while let Some(item) = list.next().await.transpose()? {
725///         println!("{:?}", item);
726///     }
727/// # Ok(()) }
728/// ```
729///
730/// # Service Description
731///
732/// The primary resources offered by this service are EntryGroups, EntryTypes,
733/// AspectTypes, Entries and EntryLinks. They collectively let data
734/// administrators organize, manage, secure, and catalog data located across
735/// cloud projects in their organization in a variety of storage systems,
736/// including Cloud Storage and BigQuery.
737///
738/// # Configuration
739///
740/// To configure `CatalogService` use the `with_*` methods in the type returned
741/// by [builder()][CatalogService::builder]. The default configuration should
742/// work for most applications. Common configuration changes include
743///
744/// * [with_endpoint()]: by default this client uses the global default endpoint
745///   (`https://dataplex.googleapis.com`). Applications using regional
746///   endpoints or running in restricted networks (e.g. a network configured
747//    with [Private Google Access with VPC Service Controls]) may want to
748///   override this default.
749/// * [with_credentials()]: by default this client uses
750///   [Application Default Credentials]. Applications using custom
751///   authentication may need to override this default.
752///
753/// [with_endpoint()]: super::builder::catalog_service::ClientBuilder::with_endpoint
754/// [with_credentials()]: super::builder::catalog_service::ClientBuilder::with_credentials
755/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
756/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
757///
758/// # Pooling and Cloning
759///
760/// `CatalogService` holds a connection pool internally, it is advised to
761/// create one and reuse it. You do not need to wrap `CatalogService` in
762/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
763/// already uses an `Arc` internally.
764#[derive(Clone, Debug)]
765pub struct CatalogService {
766    inner: std::sync::Arc<dyn super::stub::dynamic::CatalogService>,
767}
768
769impl CatalogService {
770    /// Returns a builder for [CatalogService].
771    ///
772    /// ```
773    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
774    /// # use google_cloud_dataplex_v1::client::CatalogService;
775    /// let client = CatalogService::builder().build().await?;
776    /// # Ok(()) }
777    /// ```
778    pub fn builder() -> super::builder::catalog_service::ClientBuilder {
779        crate::new_client_builder(super::builder::catalog_service::client::Factory)
780    }
781
782    /// Creates a new client from the provided stub.
783    ///
784    /// The most common case for calling this function is in tests mocking the
785    /// client's behavior.
786    pub fn from_stub<T>(stub: T) -> Self
787    where
788        T: super::stub::CatalogService + 'static,
789    {
790        Self {
791            inner: std::sync::Arc::new(stub),
792        }
793    }
794
795    pub(crate) async fn new(
796        config: gaxi::options::ClientConfig,
797    ) -> crate::ClientBuilderResult<Self> {
798        let inner = Self::build_inner(config).await?;
799        Ok(Self { inner })
800    }
801
802    async fn build_inner(
803        conf: gaxi::options::ClientConfig,
804    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::CatalogService>> {
805        if gaxi::options::tracing_enabled(&conf) {
806            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
807        }
808        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
809    }
810
811    async fn build_transport(
812        conf: gaxi::options::ClientConfig,
813    ) -> crate::ClientBuilderResult<impl super::stub::CatalogService> {
814        super::transport::CatalogService::new(conf).await
815    }
816
817    async fn build_with_tracing(
818        conf: gaxi::options::ClientConfig,
819    ) -> crate::ClientBuilderResult<impl super::stub::CatalogService> {
820        Self::build_transport(conf)
821            .await
822            .map(super::tracing::CatalogService::new)
823    }
824
825    /// Creates an EntryType.
826    ///
827    /// # Long running operations
828    ///
829    /// This method is used to start, and/or poll a [long-running Operation].
830    /// The [Working with long-running operations] chapter in the [user guide]
831    /// covers these operations in detail.
832    ///
833    /// [long-running operation]: https://google.aip.dev/151
834    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
835    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
836    ///
837    /// # Example
838    /// ```
839    /// # use google_cloud_dataplex_v1::client::CatalogService;
840    /// use google_cloud_lro::Poller;
841    /// use google_cloud_dataplex_v1::model::EntryType;
842    /// use google_cloud_dataplex_v1::Result;
843    /// async fn sample(
844    ///    client: &CatalogService, parent: &str
845    /// ) -> Result<()> {
846    ///     let response = client.create_entry_type()
847    ///         .set_parent(parent)
848    ///         .set_entry_type(
849    ///             EntryType::new()/* set fields */
850    ///         )
851    ///         .poller().until_done().await?;
852    ///     println!("response {:?}", response);
853    ///     Ok(())
854    /// }
855    /// ```
856    pub fn create_entry_type(&self) -> super::builder::catalog_service::CreateEntryType {
857        super::builder::catalog_service::CreateEntryType::new(self.inner.clone())
858    }
859
860    /// Updates an EntryType.
861    ///
862    /// # Long running operations
863    ///
864    /// This method is used to start, and/or poll a [long-running Operation].
865    /// The [Working with long-running operations] chapter in the [user guide]
866    /// covers these operations in detail.
867    ///
868    /// [long-running operation]: https://google.aip.dev/151
869    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
870    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
871    ///
872    /// # Example
873    /// ```
874    /// # use google_cloud_dataplex_v1::client::CatalogService;
875    /// use google_cloud_lro::Poller;
876    /// # extern crate wkt as google_cloud_wkt;
877    /// use google_cloud_wkt::FieldMask;
878    /// use google_cloud_dataplex_v1::model::EntryType;
879    /// use google_cloud_dataplex_v1::Result;
880    /// async fn sample(
881    ///    client: &CatalogService, name: &str
882    /// ) -> Result<()> {
883    ///     let response = client.update_entry_type()
884    ///         .set_entry_type(
885    ///             EntryType::new().set_name(name)/* set fields */
886    ///         )
887    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
888    ///         .poller().until_done().await?;
889    ///     println!("response {:?}", response);
890    ///     Ok(())
891    /// }
892    /// ```
893    pub fn update_entry_type(&self) -> super::builder::catalog_service::UpdateEntryType {
894        super::builder::catalog_service::UpdateEntryType::new(self.inner.clone())
895    }
896
897    /// Deletes an EntryType.
898    ///
899    /// # Long running operations
900    ///
901    /// This method is used to start, and/or poll a [long-running Operation].
902    /// The [Working with long-running operations] chapter in the [user guide]
903    /// covers these operations in detail.
904    ///
905    /// [long-running operation]: https://google.aip.dev/151
906    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
907    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
908    ///
909    /// # Example
910    /// ```
911    /// # use google_cloud_dataplex_v1::client::CatalogService;
912    /// use google_cloud_lro::Poller;
913    /// use google_cloud_dataplex_v1::Result;
914    /// async fn sample(
915    ///    client: &CatalogService, name: &str
916    /// ) -> Result<()> {
917    ///     client.delete_entry_type()
918    ///         .set_name(name)
919    ///         .poller().until_done().await?;
920    ///     Ok(())
921    /// }
922    /// ```
923    pub fn delete_entry_type(&self) -> super::builder::catalog_service::DeleteEntryType {
924        super::builder::catalog_service::DeleteEntryType::new(self.inner.clone())
925    }
926
927    /// Lists EntryType resources in a project and location.
928    ///
929    /// # Example
930    /// ```
931    /// # use google_cloud_dataplex_v1::client::CatalogService;
932    /// use google_cloud_gax::paginator::ItemPaginator as _;
933    /// use google_cloud_dataplex_v1::Result;
934    /// async fn sample(
935    ///    client: &CatalogService, parent: &str
936    /// ) -> Result<()> {
937    ///     let mut list = client.list_entry_types()
938    ///         .set_parent(parent)
939    ///         .by_item();
940    ///     while let Some(item) = list.next().await.transpose()? {
941    ///         println!("{:?}", item);
942    ///     }
943    ///     Ok(())
944    /// }
945    /// ```
946    pub fn list_entry_types(&self) -> super::builder::catalog_service::ListEntryTypes {
947        super::builder::catalog_service::ListEntryTypes::new(self.inner.clone())
948    }
949
950    /// Gets an EntryType.
951    ///
952    /// # Example
953    /// ```
954    /// # use google_cloud_dataplex_v1::client::CatalogService;
955    /// use google_cloud_dataplex_v1::Result;
956    /// async fn sample(
957    ///    client: &CatalogService, name: &str
958    /// ) -> Result<()> {
959    ///     let response = client.get_entry_type()
960    ///         .set_name(name)
961    ///         .send().await?;
962    ///     println!("response {:?}", response);
963    ///     Ok(())
964    /// }
965    /// ```
966    pub fn get_entry_type(&self) -> super::builder::catalog_service::GetEntryType {
967        super::builder::catalog_service::GetEntryType::new(self.inner.clone())
968    }
969
970    /// Creates an AspectType.
971    ///
972    /// # Long running operations
973    ///
974    /// This method is used to start, and/or poll a [long-running Operation].
975    /// The [Working with long-running operations] chapter in the [user guide]
976    /// covers these operations in detail.
977    ///
978    /// [long-running operation]: https://google.aip.dev/151
979    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
980    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
981    ///
982    /// # Example
983    /// ```
984    /// # use google_cloud_dataplex_v1::client::CatalogService;
985    /// use google_cloud_lro::Poller;
986    /// use google_cloud_dataplex_v1::model::AspectType;
987    /// use google_cloud_dataplex_v1::Result;
988    /// async fn sample(
989    ///    client: &CatalogService, parent: &str
990    /// ) -> Result<()> {
991    ///     let response = client.create_aspect_type()
992    ///         .set_parent(parent)
993    ///         .set_aspect_type(
994    ///             AspectType::new()/* set fields */
995    ///         )
996    ///         .poller().until_done().await?;
997    ///     println!("response {:?}", response);
998    ///     Ok(())
999    /// }
1000    /// ```
1001    pub fn create_aspect_type(&self) -> super::builder::catalog_service::CreateAspectType {
1002        super::builder::catalog_service::CreateAspectType::new(self.inner.clone())
1003    }
1004
1005    /// Updates an AspectType.
1006    ///
1007    /// # Long running operations
1008    ///
1009    /// This method is used to start, and/or poll a [long-running Operation].
1010    /// The [Working with long-running operations] chapter in the [user guide]
1011    /// covers these operations in detail.
1012    ///
1013    /// [long-running operation]: https://google.aip.dev/151
1014    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1015    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1016    ///
1017    /// # Example
1018    /// ```
1019    /// # use google_cloud_dataplex_v1::client::CatalogService;
1020    /// use google_cloud_lro::Poller;
1021    /// # extern crate wkt as google_cloud_wkt;
1022    /// use google_cloud_wkt::FieldMask;
1023    /// use google_cloud_dataplex_v1::model::AspectType;
1024    /// use google_cloud_dataplex_v1::Result;
1025    /// async fn sample(
1026    ///    client: &CatalogService, name: &str
1027    /// ) -> Result<()> {
1028    ///     let response = client.update_aspect_type()
1029    ///         .set_aspect_type(
1030    ///             AspectType::new().set_name(name)/* set fields */
1031    ///         )
1032    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
1033    ///         .poller().until_done().await?;
1034    ///     println!("response {:?}", response);
1035    ///     Ok(())
1036    /// }
1037    /// ```
1038    pub fn update_aspect_type(&self) -> super::builder::catalog_service::UpdateAspectType {
1039        super::builder::catalog_service::UpdateAspectType::new(self.inner.clone())
1040    }
1041
1042    /// Deletes an AspectType.
1043    ///
1044    /// # Long running operations
1045    ///
1046    /// This method is used to start, and/or poll a [long-running Operation].
1047    /// The [Working with long-running operations] chapter in the [user guide]
1048    /// covers these operations in detail.
1049    ///
1050    /// [long-running operation]: https://google.aip.dev/151
1051    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1052    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1053    ///
1054    /// # Example
1055    /// ```
1056    /// # use google_cloud_dataplex_v1::client::CatalogService;
1057    /// use google_cloud_lro::Poller;
1058    /// use google_cloud_dataplex_v1::Result;
1059    /// async fn sample(
1060    ///    client: &CatalogService, name: &str
1061    /// ) -> Result<()> {
1062    ///     client.delete_aspect_type()
1063    ///         .set_name(name)
1064    ///         .poller().until_done().await?;
1065    ///     Ok(())
1066    /// }
1067    /// ```
1068    pub fn delete_aspect_type(&self) -> super::builder::catalog_service::DeleteAspectType {
1069        super::builder::catalog_service::DeleteAspectType::new(self.inner.clone())
1070    }
1071
1072    /// Lists AspectType resources in a project and location.
1073    ///
1074    /// # Example
1075    /// ```
1076    /// # use google_cloud_dataplex_v1::client::CatalogService;
1077    /// use google_cloud_gax::paginator::ItemPaginator as _;
1078    /// use google_cloud_dataplex_v1::Result;
1079    /// async fn sample(
1080    ///    client: &CatalogService, parent: &str
1081    /// ) -> Result<()> {
1082    ///     let mut list = client.list_aspect_types()
1083    ///         .set_parent(parent)
1084    ///         .by_item();
1085    ///     while let Some(item) = list.next().await.transpose()? {
1086    ///         println!("{:?}", item);
1087    ///     }
1088    ///     Ok(())
1089    /// }
1090    /// ```
1091    pub fn list_aspect_types(&self) -> super::builder::catalog_service::ListAspectTypes {
1092        super::builder::catalog_service::ListAspectTypes::new(self.inner.clone())
1093    }
1094
1095    /// Gets an AspectType.
1096    ///
1097    /// # Example
1098    /// ```
1099    /// # use google_cloud_dataplex_v1::client::CatalogService;
1100    /// use google_cloud_dataplex_v1::Result;
1101    /// async fn sample(
1102    ///    client: &CatalogService, name: &str
1103    /// ) -> Result<()> {
1104    ///     let response = client.get_aspect_type()
1105    ///         .set_name(name)
1106    ///         .send().await?;
1107    ///     println!("response {:?}", response);
1108    ///     Ok(())
1109    /// }
1110    /// ```
1111    pub fn get_aspect_type(&self) -> super::builder::catalog_service::GetAspectType {
1112        super::builder::catalog_service::GetAspectType::new(self.inner.clone())
1113    }
1114
1115    /// Creates an EntryGroup.
1116    ///
1117    /// # Long running operations
1118    ///
1119    /// This method is used to start, and/or poll a [long-running Operation].
1120    /// The [Working with long-running operations] chapter in the [user guide]
1121    /// covers these operations in detail.
1122    ///
1123    /// [long-running operation]: https://google.aip.dev/151
1124    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1125    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1126    ///
1127    /// # Example
1128    /// ```
1129    /// # use google_cloud_dataplex_v1::client::CatalogService;
1130    /// use google_cloud_lro::Poller;
1131    /// use google_cloud_dataplex_v1::model::EntryGroup;
1132    /// use google_cloud_dataplex_v1::Result;
1133    /// async fn sample(
1134    ///    client: &CatalogService, parent: &str
1135    /// ) -> Result<()> {
1136    ///     let response = client.create_entry_group()
1137    ///         .set_parent(parent)
1138    ///         .set_entry_group(
1139    ///             EntryGroup::new()/* set fields */
1140    ///         )
1141    ///         .poller().until_done().await?;
1142    ///     println!("response {:?}", response);
1143    ///     Ok(())
1144    /// }
1145    /// ```
1146    pub fn create_entry_group(&self) -> super::builder::catalog_service::CreateEntryGroup {
1147        super::builder::catalog_service::CreateEntryGroup::new(self.inner.clone())
1148    }
1149
1150    /// Updates an EntryGroup.
1151    ///
1152    /// # Long running operations
1153    ///
1154    /// This method is used to start, and/or poll a [long-running Operation].
1155    /// The [Working with long-running operations] chapter in the [user guide]
1156    /// covers these operations in detail.
1157    ///
1158    /// [long-running operation]: https://google.aip.dev/151
1159    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1160    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1161    ///
1162    /// # Example
1163    /// ```
1164    /// # use google_cloud_dataplex_v1::client::CatalogService;
1165    /// use google_cloud_lro::Poller;
1166    /// # extern crate wkt as google_cloud_wkt;
1167    /// use google_cloud_wkt::FieldMask;
1168    /// use google_cloud_dataplex_v1::model::EntryGroup;
1169    /// use google_cloud_dataplex_v1::Result;
1170    /// async fn sample(
1171    ///    client: &CatalogService, name: &str
1172    /// ) -> Result<()> {
1173    ///     let response = client.update_entry_group()
1174    ///         .set_entry_group(
1175    ///             EntryGroup::new().set_name(name)/* set fields */
1176    ///         )
1177    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
1178    ///         .poller().until_done().await?;
1179    ///     println!("response {:?}", response);
1180    ///     Ok(())
1181    /// }
1182    /// ```
1183    pub fn update_entry_group(&self) -> super::builder::catalog_service::UpdateEntryGroup {
1184        super::builder::catalog_service::UpdateEntryGroup::new(self.inner.clone())
1185    }
1186
1187    /// Deletes an EntryGroup.
1188    ///
1189    /// # Long running operations
1190    ///
1191    /// This method is used to start, and/or poll a [long-running Operation].
1192    /// The [Working with long-running operations] chapter in the [user guide]
1193    /// covers these operations in detail.
1194    ///
1195    /// [long-running operation]: https://google.aip.dev/151
1196    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1197    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1198    ///
1199    /// # Example
1200    /// ```
1201    /// # use google_cloud_dataplex_v1::client::CatalogService;
1202    /// use google_cloud_lro::Poller;
1203    /// use google_cloud_dataplex_v1::Result;
1204    /// async fn sample(
1205    ///    client: &CatalogService, name: &str
1206    /// ) -> Result<()> {
1207    ///     client.delete_entry_group()
1208    ///         .set_name(name)
1209    ///         .poller().until_done().await?;
1210    ///     Ok(())
1211    /// }
1212    /// ```
1213    pub fn delete_entry_group(&self) -> super::builder::catalog_service::DeleteEntryGroup {
1214        super::builder::catalog_service::DeleteEntryGroup::new(self.inner.clone())
1215    }
1216
1217    /// Lists EntryGroup resources in a project and location.
1218    ///
1219    /// # Example
1220    /// ```
1221    /// # use google_cloud_dataplex_v1::client::CatalogService;
1222    /// use google_cloud_gax::paginator::ItemPaginator as _;
1223    /// use google_cloud_dataplex_v1::Result;
1224    /// async fn sample(
1225    ///    client: &CatalogService, parent: &str
1226    /// ) -> Result<()> {
1227    ///     let mut list = client.list_entry_groups()
1228    ///         .set_parent(parent)
1229    ///         .by_item();
1230    ///     while let Some(item) = list.next().await.transpose()? {
1231    ///         println!("{:?}", item);
1232    ///     }
1233    ///     Ok(())
1234    /// }
1235    /// ```
1236    pub fn list_entry_groups(&self) -> super::builder::catalog_service::ListEntryGroups {
1237        super::builder::catalog_service::ListEntryGroups::new(self.inner.clone())
1238    }
1239
1240    /// Gets an EntryGroup.
1241    ///
1242    /// # Example
1243    /// ```
1244    /// # use google_cloud_dataplex_v1::client::CatalogService;
1245    /// use google_cloud_dataplex_v1::Result;
1246    /// async fn sample(
1247    ///    client: &CatalogService, name: &str
1248    /// ) -> Result<()> {
1249    ///     let response = client.get_entry_group()
1250    ///         .set_name(name)
1251    ///         .send().await?;
1252    ///     println!("response {:?}", response);
1253    ///     Ok(())
1254    /// }
1255    /// ```
1256    pub fn get_entry_group(&self) -> super::builder::catalog_service::GetEntryGroup {
1257        super::builder::catalog_service::GetEntryGroup::new(self.inner.clone())
1258    }
1259
1260    /// Creates an Entry.
1261    ///
1262    /// # Example
1263    /// ```
1264    /// # use google_cloud_dataplex_v1::client::CatalogService;
1265    /// use google_cloud_dataplex_v1::model::Entry;
1266    /// use google_cloud_dataplex_v1::Result;
1267    /// async fn sample(
1268    ///    client: &CatalogService, parent: &str
1269    /// ) -> Result<()> {
1270    ///     let response = client.create_entry()
1271    ///         .set_parent(parent)
1272    ///         .set_entry_id("entry_id_value")
1273    ///         .set_entry(
1274    ///             Entry::new()/* set fields */
1275    ///         )
1276    ///         .send().await?;
1277    ///     println!("response {:?}", response);
1278    ///     Ok(())
1279    /// }
1280    /// ```
1281    pub fn create_entry(&self) -> super::builder::catalog_service::CreateEntry {
1282        super::builder::catalog_service::CreateEntry::new(self.inner.clone())
1283    }
1284
1285    /// Updates an Entry.
1286    ///
1287    /// # Example
1288    /// ```
1289    /// # use google_cloud_dataplex_v1::client::CatalogService;
1290    /// # extern crate wkt as google_cloud_wkt;
1291    /// use google_cloud_wkt::FieldMask;
1292    /// use google_cloud_dataplex_v1::model::Entry;
1293    /// use google_cloud_dataplex_v1::Result;
1294    /// async fn sample(
1295    ///    client: &CatalogService, name: &str
1296    /// ) -> Result<()> {
1297    ///     let response = client.update_entry()
1298    ///         .set_entry(
1299    ///             Entry::new().set_name(name)/* set fields */
1300    ///         )
1301    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
1302    ///         .send().await?;
1303    ///     println!("response {:?}", response);
1304    ///     Ok(())
1305    /// }
1306    /// ```
1307    pub fn update_entry(&self) -> super::builder::catalog_service::UpdateEntry {
1308        super::builder::catalog_service::UpdateEntry::new(self.inner.clone())
1309    }
1310
1311    /// Deletes an Entry.
1312    ///
1313    /// # Example
1314    /// ```
1315    /// # use google_cloud_dataplex_v1::client::CatalogService;
1316    /// use google_cloud_dataplex_v1::Result;
1317    /// async fn sample(
1318    ///    client: &CatalogService, name: &str
1319    /// ) -> Result<()> {
1320    ///     let response = client.delete_entry()
1321    ///         .set_name(name)
1322    ///         .send().await?;
1323    ///     println!("response {:?}", response);
1324    ///     Ok(())
1325    /// }
1326    /// ```
1327    pub fn delete_entry(&self) -> super::builder::catalog_service::DeleteEntry {
1328        super::builder::catalog_service::DeleteEntry::new(self.inner.clone())
1329    }
1330
1331    /// Lists Entries within an EntryGroup.
1332    /// Caution: The Vertex AI, Bigtable, Spanner, Pub/Sub, Dataform, and Dataproc
1333    /// Metastore metadata that is stored in Dataplex Universal Catalog is
1334    /// changing. For more information, see [Changes to metadata stored in
1335    /// Dataplex Universal
1336    /// Catalog](https://cloud.google.com/dataplex/docs/metadata-changes).
1337    ///
1338    /// # Example
1339    /// ```
1340    /// # use google_cloud_dataplex_v1::client::CatalogService;
1341    /// use google_cloud_gax::paginator::ItemPaginator as _;
1342    /// use google_cloud_dataplex_v1::Result;
1343    /// async fn sample(
1344    ///    client: &CatalogService, parent: &str
1345    /// ) -> Result<()> {
1346    ///     let mut list = client.list_entries()
1347    ///         .set_parent(parent)
1348    ///         .by_item();
1349    ///     while let Some(item) = list.next().await.transpose()? {
1350    ///         println!("{:?}", item);
1351    ///     }
1352    ///     Ok(())
1353    /// }
1354    /// ```
1355    pub fn list_entries(&self) -> super::builder::catalog_service::ListEntries {
1356        super::builder::catalog_service::ListEntries::new(self.inner.clone())
1357    }
1358
1359    /// Gets an Entry.
1360    /// Caution: The Vertex AI, Bigtable, Spanner, Pub/Sub, Dataform, and Dataproc
1361    /// Metastore metadata that is stored in Dataplex Universal Catalog is
1362    /// changing. For more information, see [Changes to metadata stored in
1363    /// Dataplex Universal
1364    /// Catalog](https://cloud.google.com/dataplex/docs/metadata-changes).
1365    ///
1366    /// # Example
1367    /// ```
1368    /// # use google_cloud_dataplex_v1::client::CatalogService;
1369    /// use google_cloud_dataplex_v1::Result;
1370    /// async fn sample(
1371    ///    client: &CatalogService, name: &str
1372    /// ) -> Result<()> {
1373    ///     let response = client.get_entry()
1374    ///         .set_name(name)
1375    ///         .send().await?;
1376    ///     println!("response {:?}", response);
1377    ///     Ok(())
1378    /// }
1379    /// ```
1380    pub fn get_entry(&self) -> super::builder::catalog_service::GetEntry {
1381        super::builder::catalog_service::GetEntry::new(self.inner.clone())
1382    }
1383
1384    /// Looks up an entry by name using the permission on the source system.
1385    /// Caution: The Vertex AI, Bigtable, Spanner, Pub/Sub, Dataform, and Dataproc
1386    /// Metastore metadata that is stored in Dataplex Universal Catalog is
1387    /// changing. For more information, see [Changes to metadata stored in
1388    /// Dataplex Universal
1389    /// Catalog](https://cloud.google.com/dataplex/docs/metadata-changes).
1390    ///
1391    /// # Example
1392    /// ```
1393    /// # use google_cloud_dataplex_v1::client::CatalogService;
1394    /// use google_cloud_dataplex_v1::Result;
1395    /// async fn sample(
1396    ///    client: &CatalogService
1397    /// ) -> Result<()> {
1398    ///     let response = client.lookup_entry()
1399    ///         /* set fields */
1400    ///         .send().await?;
1401    ///     println!("response {:?}", response);
1402    ///     Ok(())
1403    /// }
1404    /// ```
1405    pub fn lookup_entry(&self) -> super::builder::catalog_service::LookupEntry {
1406        super::builder::catalog_service::LookupEntry::new(self.inner.clone())
1407    }
1408
1409    /// Searches for Entries matching the given query and scope.
1410    ///
1411    /// # Example
1412    /// ```
1413    /// # use google_cloud_dataplex_v1::client::CatalogService;
1414    /// use google_cloud_gax::paginator::ItemPaginator as _;
1415    /// use google_cloud_dataplex_v1::Result;
1416    /// async fn sample(
1417    ///    client: &CatalogService
1418    /// ) -> Result<()> {
1419    ///     let mut list = client.search_entries()
1420    ///         /* set fields */
1421    ///         .by_item();
1422    ///     while let Some(item) = list.next().await.transpose()? {
1423    ///         println!("{:?}", item);
1424    ///     }
1425    ///     Ok(())
1426    /// }
1427    /// ```
1428    pub fn search_entries(&self) -> super::builder::catalog_service::SearchEntries {
1429        super::builder::catalog_service::SearchEntries::new(self.inner.clone())
1430    }
1431
1432    /// Creates a metadata job. For example, use a metadata job to import metadata
1433    /// from a third-party system into Dataplex Universal Catalog.
1434    ///
1435    /// # Long running operations
1436    ///
1437    /// This method is used to start, and/or poll a [long-running Operation].
1438    /// The [Working with long-running operations] chapter in the [user guide]
1439    /// covers these operations in detail.
1440    ///
1441    /// [long-running operation]: https://google.aip.dev/151
1442    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1443    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1444    ///
1445    /// # Example
1446    /// ```
1447    /// # use google_cloud_dataplex_v1::client::CatalogService;
1448    /// use google_cloud_lro::Poller;
1449    /// use google_cloud_dataplex_v1::model::MetadataJob;
1450    /// use google_cloud_dataplex_v1::Result;
1451    /// async fn sample(
1452    ///    client: &CatalogService, parent: &str
1453    /// ) -> Result<()> {
1454    ///     let response = client.create_metadata_job()
1455    ///         .set_parent(parent)
1456    ///         .set_metadata_job(
1457    ///             MetadataJob::new()/* set fields */
1458    ///         )
1459    ///         .poller().until_done().await?;
1460    ///     println!("response {:?}", response);
1461    ///     Ok(())
1462    /// }
1463    /// ```
1464    pub fn create_metadata_job(&self) -> super::builder::catalog_service::CreateMetadataJob {
1465        super::builder::catalog_service::CreateMetadataJob::new(self.inner.clone())
1466    }
1467
1468    /// Gets a metadata job.
1469    ///
1470    /// # Example
1471    /// ```
1472    /// # use google_cloud_dataplex_v1::client::CatalogService;
1473    /// use google_cloud_dataplex_v1::Result;
1474    /// async fn sample(
1475    ///    client: &CatalogService, name: &str
1476    /// ) -> Result<()> {
1477    ///     let response = client.get_metadata_job()
1478    ///         .set_name(name)
1479    ///         .send().await?;
1480    ///     println!("response {:?}", response);
1481    ///     Ok(())
1482    /// }
1483    /// ```
1484    pub fn get_metadata_job(&self) -> super::builder::catalog_service::GetMetadataJob {
1485        super::builder::catalog_service::GetMetadataJob::new(self.inner.clone())
1486    }
1487
1488    /// Lists metadata jobs.
1489    ///
1490    /// # Example
1491    /// ```
1492    /// # use google_cloud_dataplex_v1::client::CatalogService;
1493    /// use google_cloud_gax::paginator::ItemPaginator as _;
1494    /// use google_cloud_dataplex_v1::Result;
1495    /// async fn sample(
1496    ///    client: &CatalogService, parent: &str
1497    /// ) -> Result<()> {
1498    ///     let mut list = client.list_metadata_jobs()
1499    ///         .set_parent(parent)
1500    ///         .by_item();
1501    ///     while let Some(item) = list.next().await.transpose()? {
1502    ///         println!("{:?}", item);
1503    ///     }
1504    ///     Ok(())
1505    /// }
1506    /// ```
1507    pub fn list_metadata_jobs(&self) -> super::builder::catalog_service::ListMetadataJobs {
1508        super::builder::catalog_service::ListMetadataJobs::new(self.inner.clone())
1509    }
1510
1511    /// Cancels a metadata job.
1512    ///
1513    /// If you cancel a metadata import job that is in progress, the changes in the
1514    /// job might be partially applied. We recommend that you reset the state of
1515    /// the entry groups in your project by running another metadata job that
1516    /// reverts the changes from the canceled job.
1517    ///
1518    /// # Example
1519    /// ```
1520    /// # use google_cloud_dataplex_v1::client::CatalogService;
1521    /// use google_cloud_dataplex_v1::Result;
1522    /// async fn sample(
1523    ///    client: &CatalogService
1524    /// ) -> Result<()> {
1525    ///     client.cancel_metadata_job()
1526    ///         /* set fields */
1527    ///         .send().await?;
1528    ///     Ok(())
1529    /// }
1530    /// ```
1531    pub fn cancel_metadata_job(&self) -> super::builder::catalog_service::CancelMetadataJob {
1532        super::builder::catalog_service::CancelMetadataJob::new(self.inner.clone())
1533    }
1534
1535    /// Creates an Entry Link.
1536    ///
1537    /// # Example
1538    /// ```
1539    /// # use google_cloud_dataplex_v1::client::CatalogService;
1540    /// use google_cloud_dataplex_v1::model::EntryLink;
1541    /// use google_cloud_dataplex_v1::Result;
1542    /// async fn sample(
1543    ///    client: &CatalogService, parent: &str
1544    /// ) -> Result<()> {
1545    ///     let response = client.create_entry_link()
1546    ///         .set_parent(parent)
1547    ///         .set_entry_link(
1548    ///             EntryLink::new()/* set fields */
1549    ///         )
1550    ///         .send().await?;
1551    ///     println!("response {:?}", response);
1552    ///     Ok(())
1553    /// }
1554    /// ```
1555    pub fn create_entry_link(&self) -> super::builder::catalog_service::CreateEntryLink {
1556        super::builder::catalog_service::CreateEntryLink::new(self.inner.clone())
1557    }
1558
1559    /// Deletes an Entry Link.
1560    ///
1561    /// # Example
1562    /// ```
1563    /// # use google_cloud_dataplex_v1::client::CatalogService;
1564    /// use google_cloud_dataplex_v1::Result;
1565    /// async fn sample(
1566    ///    client: &CatalogService, name: &str
1567    /// ) -> Result<()> {
1568    ///     let response = client.delete_entry_link()
1569    ///         .set_name(name)
1570    ///         .send().await?;
1571    ///     println!("response {:?}", response);
1572    ///     Ok(())
1573    /// }
1574    /// ```
1575    pub fn delete_entry_link(&self) -> super::builder::catalog_service::DeleteEntryLink {
1576        super::builder::catalog_service::DeleteEntryLink::new(self.inner.clone())
1577    }
1578
1579    /// Gets an Entry Link.
1580    ///
1581    /// # Example
1582    /// ```
1583    /// # use google_cloud_dataplex_v1::client::CatalogService;
1584    /// use google_cloud_dataplex_v1::Result;
1585    /// async fn sample(
1586    ///    client: &CatalogService, name: &str
1587    /// ) -> Result<()> {
1588    ///     let response = client.get_entry_link()
1589    ///         .set_name(name)
1590    ///         .send().await?;
1591    ///     println!("response {:?}", response);
1592    ///     Ok(())
1593    /// }
1594    /// ```
1595    pub fn get_entry_link(&self) -> super::builder::catalog_service::GetEntryLink {
1596        super::builder::catalog_service::GetEntryLink::new(self.inner.clone())
1597    }
1598
1599    /// Lists information about the supported locations for this service.
1600    ///
1601    /// # Example
1602    /// ```
1603    /// # use google_cloud_dataplex_v1::client::CatalogService;
1604    /// use google_cloud_gax::paginator::ItemPaginator as _;
1605    /// use google_cloud_dataplex_v1::Result;
1606    /// async fn sample(
1607    ///    client: &CatalogService
1608    /// ) -> Result<()> {
1609    ///     let mut list = client.list_locations()
1610    ///         /* set fields */
1611    ///         .by_item();
1612    ///     while let Some(item) = list.next().await.transpose()? {
1613    ///         println!("{:?}", item);
1614    ///     }
1615    ///     Ok(())
1616    /// }
1617    /// ```
1618    pub fn list_locations(&self) -> super::builder::catalog_service::ListLocations {
1619        super::builder::catalog_service::ListLocations::new(self.inner.clone())
1620    }
1621
1622    /// Gets information about a location.
1623    ///
1624    /// # Example
1625    /// ```
1626    /// # use google_cloud_dataplex_v1::client::CatalogService;
1627    /// use google_cloud_dataplex_v1::Result;
1628    /// async fn sample(
1629    ///    client: &CatalogService
1630    /// ) -> Result<()> {
1631    ///     let response = client.get_location()
1632    ///         /* set fields */
1633    ///         .send().await?;
1634    ///     println!("response {:?}", response);
1635    ///     Ok(())
1636    /// }
1637    /// ```
1638    pub fn get_location(&self) -> super::builder::catalog_service::GetLocation {
1639        super::builder::catalog_service::GetLocation::new(self.inner.clone())
1640    }
1641
1642    /// Sets the access control policy on the specified resource. Replaces
1643    /// any existing policy.
1644    ///
1645    /// Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
1646    /// errors.
1647    ///
1648    /// # Example
1649    /// ```
1650    /// # use google_cloud_dataplex_v1::client::CatalogService;
1651    /// use google_cloud_dataplex_v1::Result;
1652    /// async fn sample(
1653    ///    client: &CatalogService
1654    /// ) -> Result<()> {
1655    ///     let response = client.set_iam_policy()
1656    ///         /* set fields */
1657    ///         .send().await?;
1658    ///     println!("response {:?}", response);
1659    ///     Ok(())
1660    /// }
1661    /// ```
1662    pub fn set_iam_policy(&self) -> super::builder::catalog_service::SetIamPolicy {
1663        super::builder::catalog_service::SetIamPolicy::new(self.inner.clone())
1664    }
1665
1666    /// Gets the access control policy for a resource. Returns an empty policy
1667    /// if the resource exists and does not have a policy set.
1668    ///
1669    /// # Example
1670    /// ```
1671    /// # use google_cloud_dataplex_v1::client::CatalogService;
1672    /// use google_cloud_dataplex_v1::Result;
1673    /// async fn sample(
1674    ///    client: &CatalogService
1675    /// ) -> Result<()> {
1676    ///     let response = client.get_iam_policy()
1677    ///         /* set fields */
1678    ///         .send().await?;
1679    ///     println!("response {:?}", response);
1680    ///     Ok(())
1681    /// }
1682    /// ```
1683    pub fn get_iam_policy(&self) -> super::builder::catalog_service::GetIamPolicy {
1684        super::builder::catalog_service::GetIamPolicy::new(self.inner.clone())
1685    }
1686
1687    /// Returns permissions that a caller has on the specified resource. If the
1688    /// resource does not exist, this will return an empty set of
1689    /// permissions, not a `NOT_FOUND` error.
1690    ///
1691    /// Note: This operation is designed to be used for building
1692    /// permission-aware UIs and command-line tools, not for authorization
1693    /// checking. This operation may "fail open" without warning.
1694    ///
1695    /// # Example
1696    /// ```
1697    /// # use google_cloud_dataplex_v1::client::CatalogService;
1698    /// use google_cloud_dataplex_v1::Result;
1699    /// async fn sample(
1700    ///    client: &CatalogService
1701    /// ) -> Result<()> {
1702    ///     let response = client.test_iam_permissions()
1703    ///         /* set fields */
1704    ///         .send().await?;
1705    ///     println!("response {:?}", response);
1706    ///     Ok(())
1707    /// }
1708    /// ```
1709    pub fn test_iam_permissions(&self) -> super::builder::catalog_service::TestIamPermissions {
1710        super::builder::catalog_service::TestIamPermissions::new(self.inner.clone())
1711    }
1712
1713    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
1714    ///
1715    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
1716    ///
1717    /// # Example
1718    /// ```
1719    /// # use google_cloud_dataplex_v1::client::CatalogService;
1720    /// use google_cloud_gax::paginator::ItemPaginator as _;
1721    /// use google_cloud_dataplex_v1::Result;
1722    /// async fn sample(
1723    ///    client: &CatalogService
1724    /// ) -> Result<()> {
1725    ///     let mut list = client.list_operations()
1726    ///         /* set fields */
1727    ///         .by_item();
1728    ///     while let Some(item) = list.next().await.transpose()? {
1729    ///         println!("{:?}", item);
1730    ///     }
1731    ///     Ok(())
1732    /// }
1733    /// ```
1734    pub fn list_operations(&self) -> super::builder::catalog_service::ListOperations {
1735        super::builder::catalog_service::ListOperations::new(self.inner.clone())
1736    }
1737
1738    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
1739    ///
1740    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
1741    ///
1742    /// # Example
1743    /// ```
1744    /// # use google_cloud_dataplex_v1::client::CatalogService;
1745    /// use google_cloud_dataplex_v1::Result;
1746    /// async fn sample(
1747    ///    client: &CatalogService
1748    /// ) -> Result<()> {
1749    ///     let response = client.get_operation()
1750    ///         /* set fields */
1751    ///         .send().await?;
1752    ///     println!("response {:?}", response);
1753    ///     Ok(())
1754    /// }
1755    /// ```
1756    pub fn get_operation(&self) -> super::builder::catalog_service::GetOperation {
1757        super::builder::catalog_service::GetOperation::new(self.inner.clone())
1758    }
1759
1760    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
1761    ///
1762    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
1763    ///
1764    /// # Example
1765    /// ```
1766    /// # use google_cloud_dataplex_v1::client::CatalogService;
1767    /// use google_cloud_dataplex_v1::Result;
1768    /// async fn sample(
1769    ///    client: &CatalogService
1770    /// ) -> Result<()> {
1771    ///     client.delete_operation()
1772    ///         /* set fields */
1773    ///         .send().await?;
1774    ///     Ok(())
1775    /// }
1776    /// ```
1777    pub fn delete_operation(&self) -> super::builder::catalog_service::DeleteOperation {
1778        super::builder::catalog_service::DeleteOperation::new(self.inner.clone())
1779    }
1780
1781    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
1782    ///
1783    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
1784    ///
1785    /// # Example
1786    /// ```
1787    /// # use google_cloud_dataplex_v1::client::CatalogService;
1788    /// use google_cloud_dataplex_v1::Result;
1789    /// async fn sample(
1790    ///    client: &CatalogService
1791    /// ) -> Result<()> {
1792    ///     client.cancel_operation()
1793    ///         /* set fields */
1794    ///         .send().await?;
1795    ///     Ok(())
1796    /// }
1797    /// ```
1798    pub fn cancel_operation(&self) -> super::builder::catalog_service::CancelOperation {
1799        super::builder::catalog_service::CancelOperation::new(self.inner.clone())
1800    }
1801}
1802
1803/// Implements a client for the Cloud Dataplex API.
1804///
1805/// # Example
1806/// ```
1807/// # use google_cloud_dataplex_v1::client::CmekService;
1808/// use google_cloud_gax::paginator::ItemPaginator as _;
1809/// # async fn sample() -> Result<(), Box<dyn std::error::Error>> {
1810///     let client = CmekService::builder().build().await?;
1811///     let parent = "parent_value";
1812///     let mut list = client.list_encryption_configs()
1813///         .set_parent(parent)
1814///         .by_item();
1815///     while let Some(item) = list.next().await.transpose()? {
1816///         println!("{:?}", item);
1817///     }
1818/// # Ok(()) }
1819/// ```
1820///
1821/// # Service Description
1822///
1823/// Dataplex Universal Catalog Customer Managed Encryption Keys (CMEK) Service
1824///
1825/// # Configuration
1826///
1827/// To configure `CmekService` use the `with_*` methods in the type returned
1828/// by [builder()][CmekService::builder]. The default configuration should
1829/// work for most applications. Common configuration changes include
1830///
1831/// * [with_endpoint()]: by default this client uses the global default endpoint
1832///   (`https://dataplex.googleapis.com`). Applications using regional
1833///   endpoints or running in restricted networks (e.g. a network configured
1834//    with [Private Google Access with VPC Service Controls]) may want to
1835///   override this default.
1836/// * [with_credentials()]: by default this client uses
1837///   [Application Default Credentials]. Applications using custom
1838///   authentication may need to override this default.
1839///
1840/// [with_endpoint()]: super::builder::cmek_service::ClientBuilder::with_endpoint
1841/// [with_credentials()]: super::builder::cmek_service::ClientBuilder::with_credentials
1842/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
1843/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
1844///
1845/// # Pooling and Cloning
1846///
1847/// `CmekService` holds a connection pool internally, it is advised to
1848/// create one and reuse it. You do not need to wrap `CmekService` in
1849/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
1850/// already uses an `Arc` internally.
1851#[derive(Clone, Debug)]
1852pub struct CmekService {
1853    inner: std::sync::Arc<dyn super::stub::dynamic::CmekService>,
1854}
1855
1856impl CmekService {
1857    /// Returns a builder for [CmekService].
1858    ///
1859    /// ```
1860    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
1861    /// # use google_cloud_dataplex_v1::client::CmekService;
1862    /// let client = CmekService::builder().build().await?;
1863    /// # Ok(()) }
1864    /// ```
1865    pub fn builder() -> super::builder::cmek_service::ClientBuilder {
1866        crate::new_client_builder(super::builder::cmek_service::client::Factory)
1867    }
1868
1869    /// Creates a new client from the provided stub.
1870    ///
1871    /// The most common case for calling this function is in tests mocking the
1872    /// client's behavior.
1873    pub fn from_stub<T>(stub: T) -> Self
1874    where
1875        T: super::stub::CmekService + 'static,
1876    {
1877        Self {
1878            inner: std::sync::Arc::new(stub),
1879        }
1880    }
1881
1882    pub(crate) async fn new(
1883        config: gaxi::options::ClientConfig,
1884    ) -> crate::ClientBuilderResult<Self> {
1885        let inner = Self::build_inner(config).await?;
1886        Ok(Self { inner })
1887    }
1888
1889    async fn build_inner(
1890        conf: gaxi::options::ClientConfig,
1891    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::CmekService>> {
1892        if gaxi::options::tracing_enabled(&conf) {
1893            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
1894        }
1895        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
1896    }
1897
1898    async fn build_transport(
1899        conf: gaxi::options::ClientConfig,
1900    ) -> crate::ClientBuilderResult<impl super::stub::CmekService> {
1901        super::transport::CmekService::new(conf).await
1902    }
1903
1904    async fn build_with_tracing(
1905        conf: gaxi::options::ClientConfig,
1906    ) -> crate::ClientBuilderResult<impl super::stub::CmekService> {
1907        Self::build_transport(conf)
1908            .await
1909            .map(super::tracing::CmekService::new)
1910    }
1911
1912    /// Create an EncryptionConfig.
1913    ///
1914    /// # Long running operations
1915    ///
1916    /// This method is used to start, and/or poll a [long-running Operation].
1917    /// The [Working with long-running operations] chapter in the [user guide]
1918    /// covers these operations in detail.
1919    ///
1920    /// [long-running operation]: https://google.aip.dev/151
1921    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1922    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1923    ///
1924    /// # Example
1925    /// ```
1926    /// # use google_cloud_dataplex_v1::client::CmekService;
1927    /// use google_cloud_lro::Poller;
1928    /// use google_cloud_dataplex_v1::model::EncryptionConfig;
1929    /// use google_cloud_dataplex_v1::Result;
1930    /// async fn sample(
1931    ///    client: &CmekService, parent: &str
1932    /// ) -> Result<()> {
1933    ///     let response = client.create_encryption_config()
1934    ///         .set_parent(parent)
1935    ///         .set_encryption_config(
1936    ///             EncryptionConfig::new()/* set fields */
1937    ///         )
1938    ///         .poller().until_done().await?;
1939    ///     println!("response {:?}", response);
1940    ///     Ok(())
1941    /// }
1942    /// ```
1943    pub fn create_encryption_config(&self) -> super::builder::cmek_service::CreateEncryptionConfig {
1944        super::builder::cmek_service::CreateEncryptionConfig::new(self.inner.clone())
1945    }
1946
1947    /// Update an EncryptionConfig.
1948    ///
1949    /// # Long running operations
1950    ///
1951    /// This method is used to start, and/or poll a [long-running Operation].
1952    /// The [Working with long-running operations] chapter in the [user guide]
1953    /// covers these operations in detail.
1954    ///
1955    /// [long-running operation]: https://google.aip.dev/151
1956    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1957    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1958    ///
1959    /// # Example
1960    /// ```
1961    /// # use google_cloud_dataplex_v1::client::CmekService;
1962    /// use google_cloud_lro::Poller;
1963    /// # extern crate wkt as google_cloud_wkt;
1964    /// use google_cloud_wkt::FieldMask;
1965    /// use google_cloud_dataplex_v1::model::EncryptionConfig;
1966    /// use google_cloud_dataplex_v1::Result;
1967    /// async fn sample(
1968    ///    client: &CmekService, name: &str
1969    /// ) -> Result<()> {
1970    ///     let response = client.update_encryption_config()
1971    ///         .set_encryption_config(
1972    ///             EncryptionConfig::new().set_name(name)/* set fields */
1973    ///         )
1974    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
1975    ///         .poller().until_done().await?;
1976    ///     println!("response {:?}", response);
1977    ///     Ok(())
1978    /// }
1979    /// ```
1980    pub fn update_encryption_config(&self) -> super::builder::cmek_service::UpdateEncryptionConfig {
1981        super::builder::cmek_service::UpdateEncryptionConfig::new(self.inner.clone())
1982    }
1983
1984    /// Delete an EncryptionConfig.
1985    ///
1986    /// # Long running operations
1987    ///
1988    /// This method is used to start, and/or poll a [long-running Operation].
1989    /// The [Working with long-running operations] chapter in the [user guide]
1990    /// covers these operations in detail.
1991    ///
1992    /// [long-running operation]: https://google.aip.dev/151
1993    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1994    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1995    ///
1996    /// # Example
1997    /// ```
1998    /// # use google_cloud_dataplex_v1::client::CmekService;
1999    /// use google_cloud_lro::Poller;
2000    /// use google_cloud_dataplex_v1::Result;
2001    /// async fn sample(
2002    ///    client: &CmekService, name: &str
2003    /// ) -> Result<()> {
2004    ///     client.delete_encryption_config()
2005    ///         .set_name(name)
2006    ///         .poller().until_done().await?;
2007    ///     Ok(())
2008    /// }
2009    /// ```
2010    pub fn delete_encryption_config(&self) -> super::builder::cmek_service::DeleteEncryptionConfig {
2011        super::builder::cmek_service::DeleteEncryptionConfig::new(self.inner.clone())
2012    }
2013
2014    /// List EncryptionConfigs.
2015    ///
2016    /// # Example
2017    /// ```
2018    /// # use google_cloud_dataplex_v1::client::CmekService;
2019    /// use google_cloud_gax::paginator::ItemPaginator as _;
2020    /// use google_cloud_dataplex_v1::Result;
2021    /// async fn sample(
2022    ///    client: &CmekService, parent: &str
2023    /// ) -> Result<()> {
2024    ///     let mut list = client.list_encryption_configs()
2025    ///         .set_parent(parent)
2026    ///         .by_item();
2027    ///     while let Some(item) = list.next().await.transpose()? {
2028    ///         println!("{:?}", item);
2029    ///     }
2030    ///     Ok(())
2031    /// }
2032    /// ```
2033    pub fn list_encryption_configs(&self) -> super::builder::cmek_service::ListEncryptionConfigs {
2034        super::builder::cmek_service::ListEncryptionConfigs::new(self.inner.clone())
2035    }
2036
2037    /// Get an EncryptionConfig.
2038    ///
2039    /// # Example
2040    /// ```
2041    /// # use google_cloud_dataplex_v1::client::CmekService;
2042    /// use google_cloud_dataplex_v1::Result;
2043    /// async fn sample(
2044    ///    client: &CmekService, name: &str
2045    /// ) -> Result<()> {
2046    ///     let response = client.get_encryption_config()
2047    ///         .set_name(name)
2048    ///         .send().await?;
2049    ///     println!("response {:?}", response);
2050    ///     Ok(())
2051    /// }
2052    /// ```
2053    pub fn get_encryption_config(&self) -> super::builder::cmek_service::GetEncryptionConfig {
2054        super::builder::cmek_service::GetEncryptionConfig::new(self.inner.clone())
2055    }
2056
2057    /// Lists information about the supported locations for this service.
2058    ///
2059    /// # Example
2060    /// ```
2061    /// # use google_cloud_dataplex_v1::client::CmekService;
2062    /// use google_cloud_gax::paginator::ItemPaginator as _;
2063    /// use google_cloud_dataplex_v1::Result;
2064    /// async fn sample(
2065    ///    client: &CmekService
2066    /// ) -> Result<()> {
2067    ///     let mut list = client.list_locations()
2068    ///         /* set fields */
2069    ///         .by_item();
2070    ///     while let Some(item) = list.next().await.transpose()? {
2071    ///         println!("{:?}", item);
2072    ///     }
2073    ///     Ok(())
2074    /// }
2075    /// ```
2076    pub fn list_locations(&self) -> super::builder::cmek_service::ListLocations {
2077        super::builder::cmek_service::ListLocations::new(self.inner.clone())
2078    }
2079
2080    /// Gets information about a location.
2081    ///
2082    /// # Example
2083    /// ```
2084    /// # use google_cloud_dataplex_v1::client::CmekService;
2085    /// use google_cloud_dataplex_v1::Result;
2086    /// async fn sample(
2087    ///    client: &CmekService
2088    /// ) -> Result<()> {
2089    ///     let response = client.get_location()
2090    ///         /* set fields */
2091    ///         .send().await?;
2092    ///     println!("response {:?}", response);
2093    ///     Ok(())
2094    /// }
2095    /// ```
2096    pub fn get_location(&self) -> super::builder::cmek_service::GetLocation {
2097        super::builder::cmek_service::GetLocation::new(self.inner.clone())
2098    }
2099
2100    /// Sets the access control policy on the specified resource. Replaces
2101    /// any existing policy.
2102    ///
2103    /// Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
2104    /// errors.
2105    ///
2106    /// # Example
2107    /// ```
2108    /// # use google_cloud_dataplex_v1::client::CmekService;
2109    /// use google_cloud_dataplex_v1::Result;
2110    /// async fn sample(
2111    ///    client: &CmekService
2112    /// ) -> Result<()> {
2113    ///     let response = client.set_iam_policy()
2114    ///         /* set fields */
2115    ///         .send().await?;
2116    ///     println!("response {:?}", response);
2117    ///     Ok(())
2118    /// }
2119    /// ```
2120    pub fn set_iam_policy(&self) -> super::builder::cmek_service::SetIamPolicy {
2121        super::builder::cmek_service::SetIamPolicy::new(self.inner.clone())
2122    }
2123
2124    /// Gets the access control policy for a resource. Returns an empty policy
2125    /// if the resource exists and does not have a policy set.
2126    ///
2127    /// # Example
2128    /// ```
2129    /// # use google_cloud_dataplex_v1::client::CmekService;
2130    /// use google_cloud_dataplex_v1::Result;
2131    /// async fn sample(
2132    ///    client: &CmekService
2133    /// ) -> Result<()> {
2134    ///     let response = client.get_iam_policy()
2135    ///         /* set fields */
2136    ///         .send().await?;
2137    ///     println!("response {:?}", response);
2138    ///     Ok(())
2139    /// }
2140    /// ```
2141    pub fn get_iam_policy(&self) -> super::builder::cmek_service::GetIamPolicy {
2142        super::builder::cmek_service::GetIamPolicy::new(self.inner.clone())
2143    }
2144
2145    /// Returns permissions that a caller has on the specified resource. If the
2146    /// resource does not exist, this will return an empty set of
2147    /// permissions, not a `NOT_FOUND` error.
2148    ///
2149    /// Note: This operation is designed to be used for building
2150    /// permission-aware UIs and command-line tools, not for authorization
2151    /// checking. This operation may "fail open" without warning.
2152    ///
2153    /// # Example
2154    /// ```
2155    /// # use google_cloud_dataplex_v1::client::CmekService;
2156    /// use google_cloud_dataplex_v1::Result;
2157    /// async fn sample(
2158    ///    client: &CmekService
2159    /// ) -> Result<()> {
2160    ///     let response = client.test_iam_permissions()
2161    ///         /* set fields */
2162    ///         .send().await?;
2163    ///     println!("response {:?}", response);
2164    ///     Ok(())
2165    /// }
2166    /// ```
2167    pub fn test_iam_permissions(&self) -> super::builder::cmek_service::TestIamPermissions {
2168        super::builder::cmek_service::TestIamPermissions::new(self.inner.clone())
2169    }
2170
2171    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
2172    ///
2173    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
2174    ///
2175    /// # Example
2176    /// ```
2177    /// # use google_cloud_dataplex_v1::client::CmekService;
2178    /// use google_cloud_gax::paginator::ItemPaginator as _;
2179    /// use google_cloud_dataplex_v1::Result;
2180    /// async fn sample(
2181    ///    client: &CmekService
2182    /// ) -> Result<()> {
2183    ///     let mut list = client.list_operations()
2184    ///         /* set fields */
2185    ///         .by_item();
2186    ///     while let Some(item) = list.next().await.transpose()? {
2187    ///         println!("{:?}", item);
2188    ///     }
2189    ///     Ok(())
2190    /// }
2191    /// ```
2192    pub fn list_operations(&self) -> super::builder::cmek_service::ListOperations {
2193        super::builder::cmek_service::ListOperations::new(self.inner.clone())
2194    }
2195
2196    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
2197    ///
2198    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
2199    ///
2200    /// # Example
2201    /// ```
2202    /// # use google_cloud_dataplex_v1::client::CmekService;
2203    /// use google_cloud_dataplex_v1::Result;
2204    /// async fn sample(
2205    ///    client: &CmekService
2206    /// ) -> Result<()> {
2207    ///     let response = client.get_operation()
2208    ///         /* set fields */
2209    ///         .send().await?;
2210    ///     println!("response {:?}", response);
2211    ///     Ok(())
2212    /// }
2213    /// ```
2214    pub fn get_operation(&self) -> super::builder::cmek_service::GetOperation {
2215        super::builder::cmek_service::GetOperation::new(self.inner.clone())
2216    }
2217
2218    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
2219    ///
2220    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
2221    ///
2222    /// # Example
2223    /// ```
2224    /// # use google_cloud_dataplex_v1::client::CmekService;
2225    /// use google_cloud_dataplex_v1::Result;
2226    /// async fn sample(
2227    ///    client: &CmekService
2228    /// ) -> Result<()> {
2229    ///     client.delete_operation()
2230    ///         /* set fields */
2231    ///         .send().await?;
2232    ///     Ok(())
2233    /// }
2234    /// ```
2235    pub fn delete_operation(&self) -> super::builder::cmek_service::DeleteOperation {
2236        super::builder::cmek_service::DeleteOperation::new(self.inner.clone())
2237    }
2238
2239    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
2240    ///
2241    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
2242    ///
2243    /// # Example
2244    /// ```
2245    /// # use google_cloud_dataplex_v1::client::CmekService;
2246    /// use google_cloud_dataplex_v1::Result;
2247    /// async fn sample(
2248    ///    client: &CmekService
2249    /// ) -> Result<()> {
2250    ///     client.cancel_operation()
2251    ///         /* set fields */
2252    ///         .send().await?;
2253    ///     Ok(())
2254    /// }
2255    /// ```
2256    pub fn cancel_operation(&self) -> super::builder::cmek_service::CancelOperation {
2257        super::builder::cmek_service::CancelOperation::new(self.inner.clone())
2258    }
2259}
2260
2261/// Implements a client for the Cloud Dataplex API.
2262///
2263/// # Example
2264/// ```
2265/// # use google_cloud_dataplex_v1::client::ContentService;
2266/// use google_cloud_gax::paginator::ItemPaginator as _;
2267/// # async fn sample() -> Result<(), Box<dyn std::error::Error>> {
2268///     let client = ContentService::builder().build().await?;
2269///     let parent = "parent_value";
2270///     let mut list = client.list_content()
2271///         .set_parent(parent)
2272///         .by_item();
2273///     while let Some(item) = list.next().await.transpose()? {
2274///         println!("{:?}", item);
2275///     }
2276/// # Ok(()) }
2277/// ```
2278///
2279/// # Service Description
2280///
2281/// ContentService manages Notebook and SQL Scripts for Dataplex Universal
2282/// Catalog.
2283///
2284/// # Configuration
2285///
2286/// To configure `ContentService` use the `with_*` methods in the type returned
2287/// by [builder()][ContentService::builder]. The default configuration should
2288/// work for most applications. Common configuration changes include
2289///
2290/// * [with_endpoint()]: by default this client uses the global default endpoint
2291///   (`https://dataplex.googleapis.com`). Applications using regional
2292///   endpoints or running in restricted networks (e.g. a network configured
2293//    with [Private Google Access with VPC Service Controls]) may want to
2294///   override this default.
2295/// * [with_credentials()]: by default this client uses
2296///   [Application Default Credentials]. Applications using custom
2297///   authentication may need to override this default.
2298///
2299/// [with_endpoint()]: super::builder::content_service::ClientBuilder::with_endpoint
2300/// [with_credentials()]: super::builder::content_service::ClientBuilder::with_credentials
2301/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
2302/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
2303///
2304/// # Pooling and Cloning
2305///
2306/// `ContentService` holds a connection pool internally, it is advised to
2307/// create one and reuse it. You do not need to wrap `ContentService` in
2308/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
2309/// already uses an `Arc` internally.
2310#[derive(Clone, Debug)]
2311pub struct ContentService {
2312    inner: std::sync::Arc<dyn super::stub::dynamic::ContentService>,
2313}
2314
2315impl ContentService {
2316    /// Returns a builder for [ContentService].
2317    ///
2318    /// ```
2319    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
2320    /// # use google_cloud_dataplex_v1::client::ContentService;
2321    /// let client = ContentService::builder().build().await?;
2322    /// # Ok(()) }
2323    /// ```
2324    pub fn builder() -> super::builder::content_service::ClientBuilder {
2325        crate::new_client_builder(super::builder::content_service::client::Factory)
2326    }
2327
2328    /// Creates a new client from the provided stub.
2329    ///
2330    /// The most common case for calling this function is in tests mocking the
2331    /// client's behavior.
2332    pub fn from_stub<T>(stub: T) -> Self
2333    where
2334        T: super::stub::ContentService + 'static,
2335    {
2336        Self {
2337            inner: std::sync::Arc::new(stub),
2338        }
2339    }
2340
2341    pub(crate) async fn new(
2342        config: gaxi::options::ClientConfig,
2343    ) -> crate::ClientBuilderResult<Self> {
2344        let inner = Self::build_inner(config).await?;
2345        Ok(Self { inner })
2346    }
2347
2348    async fn build_inner(
2349        conf: gaxi::options::ClientConfig,
2350    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::ContentService>> {
2351        if gaxi::options::tracing_enabled(&conf) {
2352            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
2353        }
2354        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
2355    }
2356
2357    async fn build_transport(
2358        conf: gaxi::options::ClientConfig,
2359    ) -> crate::ClientBuilderResult<impl super::stub::ContentService> {
2360        super::transport::ContentService::new(conf).await
2361    }
2362
2363    async fn build_with_tracing(
2364        conf: gaxi::options::ClientConfig,
2365    ) -> crate::ClientBuilderResult<impl super::stub::ContentService> {
2366        Self::build_transport(conf)
2367            .await
2368            .map(super::tracing::ContentService::new)
2369    }
2370
2371    /// Create a content.
2372    ///
2373    /// # Example
2374    /// ```
2375    /// # use google_cloud_dataplex_v1::client::ContentService;
2376    /// use google_cloud_dataplex_v1::model::Content;
2377    /// use google_cloud_dataplex_v1::Result;
2378    /// async fn sample(
2379    ///    client: &ContentService, parent: &str
2380    /// ) -> Result<()> {
2381    ///     let response = client.create_content()
2382    ///         .set_parent(parent)
2383    ///         .set_content(
2384    ///             Content::new()/* set fields */
2385    ///         )
2386    ///         .send().await?;
2387    ///     println!("response {:?}", response);
2388    ///     Ok(())
2389    /// }
2390    /// ```
2391    pub fn create_content(&self) -> super::builder::content_service::CreateContent {
2392        super::builder::content_service::CreateContent::new(self.inner.clone())
2393    }
2394
2395    /// Update a content. Only supports full resource update.
2396    ///
2397    /// # Example
2398    /// ```
2399    /// # use google_cloud_dataplex_v1::client::ContentService;
2400    /// # extern crate wkt as google_cloud_wkt;
2401    /// use google_cloud_wkt::FieldMask;
2402    /// use google_cloud_dataplex_v1::model::Content;
2403    /// use google_cloud_dataplex_v1::Result;
2404    /// async fn sample(
2405    ///    client: &ContentService, name: &str
2406    /// ) -> Result<()> {
2407    ///     let response = client.update_content()
2408    ///         .set_content(
2409    ///             Content::new().set_name(name)/* set fields */
2410    ///         )
2411    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
2412    ///         .send().await?;
2413    ///     println!("response {:?}", response);
2414    ///     Ok(())
2415    /// }
2416    /// ```
2417    pub fn update_content(&self) -> super::builder::content_service::UpdateContent {
2418        super::builder::content_service::UpdateContent::new(self.inner.clone())
2419    }
2420
2421    /// Delete a content.
2422    ///
2423    /// # Example
2424    /// ```
2425    /// # use google_cloud_dataplex_v1::client::ContentService;
2426    /// use google_cloud_dataplex_v1::Result;
2427    /// async fn sample(
2428    ///    client: &ContentService, name: &str
2429    /// ) -> Result<()> {
2430    ///     client.delete_content()
2431    ///         .set_name(name)
2432    ///         .send().await?;
2433    ///     Ok(())
2434    /// }
2435    /// ```
2436    pub fn delete_content(&self) -> super::builder::content_service::DeleteContent {
2437        super::builder::content_service::DeleteContent::new(self.inner.clone())
2438    }
2439
2440    /// Get a content resource.
2441    ///
2442    /// # Example
2443    /// ```
2444    /// # use google_cloud_dataplex_v1::client::ContentService;
2445    /// use google_cloud_dataplex_v1::Result;
2446    /// async fn sample(
2447    ///    client: &ContentService, name: &str
2448    /// ) -> Result<()> {
2449    ///     let response = client.get_content()
2450    ///         .set_name(name)
2451    ///         .send().await?;
2452    ///     println!("response {:?}", response);
2453    ///     Ok(())
2454    /// }
2455    /// ```
2456    pub fn get_content(&self) -> super::builder::content_service::GetContent {
2457        super::builder::content_service::GetContent::new(self.inner.clone())
2458    }
2459
2460    /// Gets the access control policy for a contentitem resource. A `NOT_FOUND`
2461    /// error is returned if the resource does not exist. An empty policy is
2462    /// returned if the resource exists but does not have a policy set on it.
2463    ///
2464    /// Caller must have Google IAM `dataplex.content.getIamPolicy` permission
2465    /// on the resource.
2466    ///
2467    /// # Example
2468    /// ```
2469    /// # use google_cloud_dataplex_v1::client::ContentService;
2470    /// use google_cloud_dataplex_v1::Result;
2471    /// async fn sample(
2472    ///    client: &ContentService
2473    /// ) -> Result<()> {
2474    ///     let response = client.get_iam_policy()
2475    ///         /* set fields */
2476    ///         .send().await?;
2477    ///     println!("response {:?}", response);
2478    ///     Ok(())
2479    /// }
2480    /// ```
2481    pub fn get_iam_policy(&self) -> super::builder::content_service::GetIamPolicy {
2482        super::builder::content_service::GetIamPolicy::new(self.inner.clone())
2483    }
2484
2485    /// Sets the access control policy on the specified contentitem resource.
2486    /// Replaces any existing policy.
2487    ///
2488    /// Caller must have Google IAM `dataplex.content.setIamPolicy` permission
2489    /// on the resource.
2490    ///
2491    /// # Example
2492    /// ```
2493    /// # use google_cloud_dataplex_v1::client::ContentService;
2494    /// use google_cloud_dataplex_v1::Result;
2495    /// async fn sample(
2496    ///    client: &ContentService
2497    /// ) -> Result<()> {
2498    ///     let response = client.set_iam_policy()
2499    ///         /* set fields */
2500    ///         .send().await?;
2501    ///     println!("response {:?}", response);
2502    ///     Ok(())
2503    /// }
2504    /// ```
2505    pub fn set_iam_policy(&self) -> super::builder::content_service::SetIamPolicy {
2506        super::builder::content_service::SetIamPolicy::new(self.inner.clone())
2507    }
2508
2509    /// Returns the caller's permissions on a resource.
2510    /// If the resource does not exist, an empty set of
2511    /// permissions is returned (a `NOT_FOUND` error is not returned).
2512    ///
2513    /// A caller is not required to have Google IAM permission to make this
2514    /// request.
2515    ///
2516    /// Note: This operation is designed to be used for building permission-aware
2517    /// UIs and command-line tools, not for authorization checking. This operation
2518    /// may "fail open" without warning.
2519    ///
2520    /// # Example
2521    /// ```
2522    /// # use google_cloud_dataplex_v1::client::ContentService;
2523    /// use google_cloud_dataplex_v1::Result;
2524    /// async fn sample(
2525    ///    client: &ContentService
2526    /// ) -> Result<()> {
2527    ///     let response = client.test_iam_permissions()
2528    ///         /* set fields */
2529    ///         .send().await?;
2530    ///     println!("response {:?}", response);
2531    ///     Ok(())
2532    /// }
2533    /// ```
2534    pub fn test_iam_permissions(&self) -> super::builder::content_service::TestIamPermissions {
2535        super::builder::content_service::TestIamPermissions::new(self.inner.clone())
2536    }
2537
2538    /// List content.
2539    ///
2540    /// # Example
2541    /// ```
2542    /// # use google_cloud_dataplex_v1::client::ContentService;
2543    /// use google_cloud_gax::paginator::ItemPaginator as _;
2544    /// use google_cloud_dataplex_v1::Result;
2545    /// async fn sample(
2546    ///    client: &ContentService, parent: &str
2547    /// ) -> Result<()> {
2548    ///     let mut list = client.list_content()
2549    ///         .set_parent(parent)
2550    ///         .by_item();
2551    ///     while let Some(item) = list.next().await.transpose()? {
2552    ///         println!("{:?}", item);
2553    ///     }
2554    ///     Ok(())
2555    /// }
2556    /// ```
2557    pub fn list_content(&self) -> super::builder::content_service::ListContent {
2558        super::builder::content_service::ListContent::new(self.inner.clone())
2559    }
2560
2561    /// Lists information about the supported locations for this service.
2562    ///
2563    /// # Example
2564    /// ```
2565    /// # use google_cloud_dataplex_v1::client::ContentService;
2566    /// use google_cloud_gax::paginator::ItemPaginator as _;
2567    /// use google_cloud_dataplex_v1::Result;
2568    /// async fn sample(
2569    ///    client: &ContentService
2570    /// ) -> Result<()> {
2571    ///     let mut list = client.list_locations()
2572    ///         /* set fields */
2573    ///         .by_item();
2574    ///     while let Some(item) = list.next().await.transpose()? {
2575    ///         println!("{:?}", item);
2576    ///     }
2577    ///     Ok(())
2578    /// }
2579    /// ```
2580    pub fn list_locations(&self) -> super::builder::content_service::ListLocations {
2581        super::builder::content_service::ListLocations::new(self.inner.clone())
2582    }
2583
2584    /// Gets information about a location.
2585    ///
2586    /// # Example
2587    /// ```
2588    /// # use google_cloud_dataplex_v1::client::ContentService;
2589    /// use google_cloud_dataplex_v1::Result;
2590    /// async fn sample(
2591    ///    client: &ContentService
2592    /// ) -> Result<()> {
2593    ///     let response = client.get_location()
2594    ///         /* set fields */
2595    ///         .send().await?;
2596    ///     println!("response {:?}", response);
2597    ///     Ok(())
2598    /// }
2599    /// ```
2600    pub fn get_location(&self) -> super::builder::content_service::GetLocation {
2601        super::builder::content_service::GetLocation::new(self.inner.clone())
2602    }
2603
2604    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
2605    ///
2606    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
2607    ///
2608    /// # Example
2609    /// ```
2610    /// # use google_cloud_dataplex_v1::client::ContentService;
2611    /// use google_cloud_gax::paginator::ItemPaginator as _;
2612    /// use google_cloud_dataplex_v1::Result;
2613    /// async fn sample(
2614    ///    client: &ContentService
2615    /// ) -> Result<()> {
2616    ///     let mut list = client.list_operations()
2617    ///         /* set fields */
2618    ///         .by_item();
2619    ///     while let Some(item) = list.next().await.transpose()? {
2620    ///         println!("{:?}", item);
2621    ///     }
2622    ///     Ok(())
2623    /// }
2624    /// ```
2625    pub fn list_operations(&self) -> super::builder::content_service::ListOperations {
2626        super::builder::content_service::ListOperations::new(self.inner.clone())
2627    }
2628
2629    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
2630    ///
2631    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
2632    ///
2633    /// # Example
2634    /// ```
2635    /// # use google_cloud_dataplex_v1::client::ContentService;
2636    /// use google_cloud_dataplex_v1::Result;
2637    /// async fn sample(
2638    ///    client: &ContentService
2639    /// ) -> Result<()> {
2640    ///     let response = client.get_operation()
2641    ///         /* set fields */
2642    ///         .send().await?;
2643    ///     println!("response {:?}", response);
2644    ///     Ok(())
2645    /// }
2646    /// ```
2647    pub fn get_operation(&self) -> super::builder::content_service::GetOperation {
2648        super::builder::content_service::GetOperation::new(self.inner.clone())
2649    }
2650
2651    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
2652    ///
2653    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
2654    ///
2655    /// # Example
2656    /// ```
2657    /// # use google_cloud_dataplex_v1::client::ContentService;
2658    /// use google_cloud_dataplex_v1::Result;
2659    /// async fn sample(
2660    ///    client: &ContentService
2661    /// ) -> Result<()> {
2662    ///     client.delete_operation()
2663    ///         /* set fields */
2664    ///         .send().await?;
2665    ///     Ok(())
2666    /// }
2667    /// ```
2668    pub fn delete_operation(&self) -> super::builder::content_service::DeleteOperation {
2669        super::builder::content_service::DeleteOperation::new(self.inner.clone())
2670    }
2671
2672    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
2673    ///
2674    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
2675    ///
2676    /// # Example
2677    /// ```
2678    /// # use google_cloud_dataplex_v1::client::ContentService;
2679    /// use google_cloud_dataplex_v1::Result;
2680    /// async fn sample(
2681    ///    client: &ContentService
2682    /// ) -> Result<()> {
2683    ///     client.cancel_operation()
2684    ///         /* set fields */
2685    ///         .send().await?;
2686    ///     Ok(())
2687    /// }
2688    /// ```
2689    pub fn cancel_operation(&self) -> super::builder::content_service::CancelOperation {
2690        super::builder::content_service::CancelOperation::new(self.inner.clone())
2691    }
2692}
2693
2694/// Implements a client for the Cloud Dataplex API.
2695///
2696/// # Example
2697/// ```
2698/// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
2699/// use google_cloud_gax::paginator::ItemPaginator as _;
2700/// # async fn sample() -> Result<(), Box<dyn std::error::Error>> {
2701///     let client = DataTaxonomyService::builder().build().await?;
2702///     let parent = "parent_value";
2703///     let mut list = client.list_data_taxonomies()
2704///         .set_parent(parent)
2705///         .by_item();
2706///     while let Some(item) = list.next().await.transpose()? {
2707///         println!("{:?}", item);
2708///     }
2709/// # Ok(()) }
2710/// ```
2711///
2712/// # Service Description
2713///
2714/// DataTaxonomyService enables attribute-based governance. The resources
2715/// currently offered include DataTaxonomy and DataAttribute.
2716///
2717/// # Configuration
2718///
2719/// To configure `DataTaxonomyService` use the `with_*` methods in the type returned
2720/// by [builder()][DataTaxonomyService::builder]. The default configuration should
2721/// work for most applications. Common configuration changes include
2722///
2723/// * [with_endpoint()]: by default this client uses the global default endpoint
2724///   (`https://dataplex.googleapis.com`). Applications using regional
2725///   endpoints or running in restricted networks (e.g. a network configured
2726//    with [Private Google Access with VPC Service Controls]) may want to
2727///   override this default.
2728/// * [with_credentials()]: by default this client uses
2729///   [Application Default Credentials]. Applications using custom
2730///   authentication may need to override this default.
2731///
2732/// [with_endpoint()]: super::builder::data_taxonomy_service::ClientBuilder::with_endpoint
2733/// [with_credentials()]: super::builder::data_taxonomy_service::ClientBuilder::with_credentials
2734/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
2735/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
2736///
2737/// # Pooling and Cloning
2738///
2739/// `DataTaxonomyService` holds a connection pool internally, it is advised to
2740/// create one and reuse it. You do not need to wrap `DataTaxonomyService` in
2741/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
2742/// already uses an `Arc` internally.
2743#[derive(Clone, Debug)]
2744#[deprecated]
2745pub struct DataTaxonomyService {
2746    inner: std::sync::Arc<dyn super::stub::dynamic::DataTaxonomyService>,
2747}
2748
2749impl DataTaxonomyService {
2750    /// Returns a builder for [DataTaxonomyService].
2751    ///
2752    /// ```
2753    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
2754    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
2755    /// let client = DataTaxonomyService::builder().build().await?;
2756    /// # Ok(()) }
2757    /// ```
2758    pub fn builder() -> super::builder::data_taxonomy_service::ClientBuilder {
2759        crate::new_client_builder(super::builder::data_taxonomy_service::client::Factory)
2760    }
2761
2762    /// Creates a new client from the provided stub.
2763    ///
2764    /// The most common case for calling this function is in tests mocking the
2765    /// client's behavior.
2766    pub fn from_stub<T>(stub: T) -> Self
2767    where
2768        T: super::stub::DataTaxonomyService + 'static,
2769    {
2770        Self {
2771            inner: std::sync::Arc::new(stub),
2772        }
2773    }
2774
2775    pub(crate) async fn new(
2776        config: gaxi::options::ClientConfig,
2777    ) -> crate::ClientBuilderResult<Self> {
2778        let inner = Self::build_inner(config).await?;
2779        Ok(Self { inner })
2780    }
2781
2782    async fn build_inner(
2783        conf: gaxi::options::ClientConfig,
2784    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::DataTaxonomyService>>
2785    {
2786        if gaxi::options::tracing_enabled(&conf) {
2787            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
2788        }
2789        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
2790    }
2791
2792    async fn build_transport(
2793        conf: gaxi::options::ClientConfig,
2794    ) -> crate::ClientBuilderResult<impl super::stub::DataTaxonomyService> {
2795        super::transport::DataTaxonomyService::new(conf).await
2796    }
2797
2798    async fn build_with_tracing(
2799        conf: gaxi::options::ClientConfig,
2800    ) -> crate::ClientBuilderResult<impl super::stub::DataTaxonomyService> {
2801        Self::build_transport(conf)
2802            .await
2803            .map(super::tracing::DataTaxonomyService::new)
2804    }
2805
2806    /// Create a DataTaxonomy resource.
2807    ///
2808    /// # Long running operations
2809    ///
2810    /// This method is used to start, and/or poll a [long-running Operation].
2811    /// The [Working with long-running operations] chapter in the [user guide]
2812    /// covers these operations in detail.
2813    ///
2814    /// [long-running operation]: https://google.aip.dev/151
2815    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
2816    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
2817    ///
2818    /// # Example
2819    /// ```
2820    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
2821    /// use google_cloud_lro::Poller;
2822    /// use google_cloud_dataplex_v1::model::DataTaxonomy;
2823    /// use google_cloud_dataplex_v1::Result;
2824    /// async fn sample(
2825    ///    client: &DataTaxonomyService, parent: &str
2826    /// ) -> Result<()> {
2827    ///     let response = client.create_data_taxonomy()
2828    ///         .set_parent(parent)
2829    ///         .set_data_taxonomy(
2830    ///             DataTaxonomy::new()/* set fields */
2831    ///         )
2832    ///         .poller().until_done().await?;
2833    ///     println!("response {:?}", response);
2834    ///     Ok(())
2835    /// }
2836    /// ```
2837    #[deprecated]
2838    pub fn create_data_taxonomy(
2839        &self,
2840    ) -> super::builder::data_taxonomy_service::CreateDataTaxonomy {
2841        super::builder::data_taxonomy_service::CreateDataTaxonomy::new(self.inner.clone())
2842    }
2843
2844    /// Updates a DataTaxonomy resource.
2845    ///
2846    /// # Long running operations
2847    ///
2848    /// This method is used to start, and/or poll a [long-running Operation].
2849    /// The [Working with long-running operations] chapter in the [user guide]
2850    /// covers these operations in detail.
2851    ///
2852    /// [long-running operation]: https://google.aip.dev/151
2853    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
2854    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
2855    ///
2856    /// # Example
2857    /// ```
2858    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
2859    /// use google_cloud_lro::Poller;
2860    /// # extern crate wkt as google_cloud_wkt;
2861    /// use google_cloud_wkt::FieldMask;
2862    /// use google_cloud_dataplex_v1::model::DataTaxonomy;
2863    /// use google_cloud_dataplex_v1::Result;
2864    /// async fn sample(
2865    ///    client: &DataTaxonomyService, name: &str
2866    /// ) -> Result<()> {
2867    ///     let response = client.update_data_taxonomy()
2868    ///         .set_data_taxonomy(
2869    ///             DataTaxonomy::new().set_name(name)/* set fields */
2870    ///         )
2871    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
2872    ///         .poller().until_done().await?;
2873    ///     println!("response {:?}", response);
2874    ///     Ok(())
2875    /// }
2876    /// ```
2877    #[deprecated]
2878    pub fn update_data_taxonomy(
2879        &self,
2880    ) -> super::builder::data_taxonomy_service::UpdateDataTaxonomy {
2881        super::builder::data_taxonomy_service::UpdateDataTaxonomy::new(self.inner.clone())
2882    }
2883
2884    /// Deletes a DataTaxonomy resource. All attributes within the DataTaxonomy
2885    /// must be deleted before the DataTaxonomy can be deleted.
2886    ///
2887    /// # Long running operations
2888    ///
2889    /// This method is used to start, and/or poll a [long-running Operation].
2890    /// The [Working with long-running operations] chapter in the [user guide]
2891    /// covers these operations in detail.
2892    ///
2893    /// [long-running operation]: https://google.aip.dev/151
2894    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
2895    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
2896    ///
2897    /// # Example
2898    /// ```
2899    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
2900    /// use google_cloud_lro::Poller;
2901    /// use google_cloud_dataplex_v1::Result;
2902    /// async fn sample(
2903    ///    client: &DataTaxonomyService, name: &str
2904    /// ) -> Result<()> {
2905    ///     client.delete_data_taxonomy()
2906    ///         .set_name(name)
2907    ///         .poller().until_done().await?;
2908    ///     Ok(())
2909    /// }
2910    /// ```
2911    #[deprecated]
2912    pub fn delete_data_taxonomy(
2913        &self,
2914    ) -> super::builder::data_taxonomy_service::DeleteDataTaxonomy {
2915        super::builder::data_taxonomy_service::DeleteDataTaxonomy::new(self.inner.clone())
2916    }
2917
2918    /// Lists DataTaxonomy resources in a project and location.
2919    ///
2920    /// # Example
2921    /// ```
2922    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
2923    /// use google_cloud_gax::paginator::ItemPaginator as _;
2924    /// use google_cloud_dataplex_v1::Result;
2925    /// async fn sample(
2926    ///    client: &DataTaxonomyService, parent: &str
2927    /// ) -> Result<()> {
2928    ///     let mut list = client.list_data_taxonomies()
2929    ///         .set_parent(parent)
2930    ///         .by_item();
2931    ///     while let Some(item) = list.next().await.transpose()? {
2932    ///         println!("{:?}", item);
2933    ///     }
2934    ///     Ok(())
2935    /// }
2936    /// ```
2937    #[deprecated]
2938    pub fn list_data_taxonomies(
2939        &self,
2940    ) -> super::builder::data_taxonomy_service::ListDataTaxonomies {
2941        super::builder::data_taxonomy_service::ListDataTaxonomies::new(self.inner.clone())
2942    }
2943
2944    /// Retrieves a DataTaxonomy resource.
2945    ///
2946    /// # Example
2947    /// ```
2948    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
2949    /// use google_cloud_dataplex_v1::Result;
2950    /// async fn sample(
2951    ///    client: &DataTaxonomyService, name: &str
2952    /// ) -> Result<()> {
2953    ///     let response = client.get_data_taxonomy()
2954    ///         .set_name(name)
2955    ///         .send().await?;
2956    ///     println!("response {:?}", response);
2957    ///     Ok(())
2958    /// }
2959    /// ```
2960    #[deprecated]
2961    pub fn get_data_taxonomy(&self) -> super::builder::data_taxonomy_service::GetDataTaxonomy {
2962        super::builder::data_taxonomy_service::GetDataTaxonomy::new(self.inner.clone())
2963    }
2964
2965    /// Create a DataAttributeBinding resource.
2966    ///
2967    /// # Long running operations
2968    ///
2969    /// This method is used to start, and/or poll a [long-running Operation].
2970    /// The [Working with long-running operations] chapter in the [user guide]
2971    /// covers these operations in detail.
2972    ///
2973    /// [long-running operation]: https://google.aip.dev/151
2974    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
2975    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
2976    ///
2977    /// # Example
2978    /// ```
2979    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
2980    /// use google_cloud_lro::Poller;
2981    /// use google_cloud_dataplex_v1::model::DataAttributeBinding;
2982    /// use google_cloud_dataplex_v1::Result;
2983    /// async fn sample(
2984    ///    client: &DataTaxonomyService, parent: &str
2985    /// ) -> Result<()> {
2986    ///     let response = client.create_data_attribute_binding()
2987    ///         .set_parent(parent)
2988    ///         .set_data_attribute_binding(
2989    ///             DataAttributeBinding::new()/* set fields */
2990    ///         )
2991    ///         .poller().until_done().await?;
2992    ///     println!("response {:?}", response);
2993    ///     Ok(())
2994    /// }
2995    /// ```
2996    #[deprecated]
2997    pub fn create_data_attribute_binding(
2998        &self,
2999    ) -> super::builder::data_taxonomy_service::CreateDataAttributeBinding {
3000        super::builder::data_taxonomy_service::CreateDataAttributeBinding::new(self.inner.clone())
3001    }
3002
3003    /// Updates a DataAttributeBinding resource.
3004    ///
3005    /// # Long running operations
3006    ///
3007    /// This method is used to start, and/or poll a [long-running Operation].
3008    /// The [Working with long-running operations] chapter in the [user guide]
3009    /// covers these operations in detail.
3010    ///
3011    /// [long-running operation]: https://google.aip.dev/151
3012    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
3013    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
3014    ///
3015    /// # Example
3016    /// ```
3017    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3018    /// use google_cloud_lro::Poller;
3019    /// # extern crate wkt as google_cloud_wkt;
3020    /// use google_cloud_wkt::FieldMask;
3021    /// use google_cloud_dataplex_v1::model::DataAttributeBinding;
3022    /// use google_cloud_dataplex_v1::Result;
3023    /// async fn sample(
3024    ///    client: &DataTaxonomyService, name: &str
3025    /// ) -> Result<()> {
3026    ///     let response = client.update_data_attribute_binding()
3027    ///         .set_data_attribute_binding(
3028    ///             DataAttributeBinding::new().set_name(name)/* set fields */
3029    ///         )
3030    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
3031    ///         .poller().until_done().await?;
3032    ///     println!("response {:?}", response);
3033    ///     Ok(())
3034    /// }
3035    /// ```
3036    #[deprecated]
3037    pub fn update_data_attribute_binding(
3038        &self,
3039    ) -> super::builder::data_taxonomy_service::UpdateDataAttributeBinding {
3040        super::builder::data_taxonomy_service::UpdateDataAttributeBinding::new(self.inner.clone())
3041    }
3042
3043    /// Deletes a DataAttributeBinding resource. All attributes within the
3044    /// DataAttributeBinding must be deleted before the DataAttributeBinding can be
3045    /// deleted.
3046    ///
3047    /// # Long running operations
3048    ///
3049    /// This method is used to start, and/or poll a [long-running Operation].
3050    /// The [Working with long-running operations] chapter in the [user guide]
3051    /// covers these operations in detail.
3052    ///
3053    /// [long-running operation]: https://google.aip.dev/151
3054    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
3055    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
3056    ///
3057    /// # Example
3058    /// ```
3059    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3060    /// use google_cloud_lro::Poller;
3061    /// use google_cloud_dataplex_v1::Result;
3062    /// async fn sample(
3063    ///    client: &DataTaxonomyService, name: &str
3064    /// ) -> Result<()> {
3065    ///     client.delete_data_attribute_binding()
3066    ///         .set_name(name)
3067    ///         .poller().until_done().await?;
3068    ///     Ok(())
3069    /// }
3070    /// ```
3071    #[deprecated]
3072    pub fn delete_data_attribute_binding(
3073        &self,
3074    ) -> super::builder::data_taxonomy_service::DeleteDataAttributeBinding {
3075        super::builder::data_taxonomy_service::DeleteDataAttributeBinding::new(self.inner.clone())
3076    }
3077
3078    /// Lists DataAttributeBinding resources in a project and location.
3079    ///
3080    /// # Example
3081    /// ```
3082    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3083    /// use google_cloud_gax::paginator::ItemPaginator as _;
3084    /// use google_cloud_dataplex_v1::Result;
3085    /// async fn sample(
3086    ///    client: &DataTaxonomyService, parent: &str
3087    /// ) -> Result<()> {
3088    ///     let mut list = client.list_data_attribute_bindings()
3089    ///         .set_parent(parent)
3090    ///         .by_item();
3091    ///     while let Some(item) = list.next().await.transpose()? {
3092    ///         println!("{:?}", item);
3093    ///     }
3094    ///     Ok(())
3095    /// }
3096    /// ```
3097    #[deprecated]
3098    pub fn list_data_attribute_bindings(
3099        &self,
3100    ) -> super::builder::data_taxonomy_service::ListDataAttributeBindings {
3101        super::builder::data_taxonomy_service::ListDataAttributeBindings::new(self.inner.clone())
3102    }
3103
3104    /// Retrieves a DataAttributeBinding resource.
3105    ///
3106    /// # Example
3107    /// ```
3108    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3109    /// use google_cloud_dataplex_v1::Result;
3110    /// async fn sample(
3111    ///    client: &DataTaxonomyService, name: &str
3112    /// ) -> Result<()> {
3113    ///     let response = client.get_data_attribute_binding()
3114    ///         .set_name(name)
3115    ///         .send().await?;
3116    ///     println!("response {:?}", response);
3117    ///     Ok(())
3118    /// }
3119    /// ```
3120    #[deprecated]
3121    pub fn get_data_attribute_binding(
3122        &self,
3123    ) -> super::builder::data_taxonomy_service::GetDataAttributeBinding {
3124        super::builder::data_taxonomy_service::GetDataAttributeBinding::new(self.inner.clone())
3125    }
3126
3127    /// Create a DataAttribute resource.
3128    ///
3129    /// # Long running operations
3130    ///
3131    /// This method is used to start, and/or poll a [long-running Operation].
3132    /// The [Working with long-running operations] chapter in the [user guide]
3133    /// covers these operations in detail.
3134    ///
3135    /// [long-running operation]: https://google.aip.dev/151
3136    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
3137    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
3138    ///
3139    /// # Example
3140    /// ```
3141    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3142    /// use google_cloud_lro::Poller;
3143    /// use google_cloud_dataplex_v1::model::DataAttribute;
3144    /// use google_cloud_dataplex_v1::Result;
3145    /// async fn sample(
3146    ///    client: &DataTaxonomyService, parent: &str
3147    /// ) -> Result<()> {
3148    ///     let response = client.create_data_attribute()
3149    ///         .set_parent(parent)
3150    ///         .set_data_attribute(
3151    ///             DataAttribute::new()/* set fields */
3152    ///         )
3153    ///         .poller().until_done().await?;
3154    ///     println!("response {:?}", response);
3155    ///     Ok(())
3156    /// }
3157    /// ```
3158    #[deprecated]
3159    pub fn create_data_attribute(
3160        &self,
3161    ) -> super::builder::data_taxonomy_service::CreateDataAttribute {
3162        super::builder::data_taxonomy_service::CreateDataAttribute::new(self.inner.clone())
3163    }
3164
3165    /// Updates a DataAttribute resource.
3166    ///
3167    /// # Long running operations
3168    ///
3169    /// This method is used to start, and/or poll a [long-running Operation].
3170    /// The [Working with long-running operations] chapter in the [user guide]
3171    /// covers these operations in detail.
3172    ///
3173    /// [long-running operation]: https://google.aip.dev/151
3174    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
3175    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
3176    ///
3177    /// # Example
3178    /// ```
3179    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3180    /// use google_cloud_lro::Poller;
3181    /// # extern crate wkt as google_cloud_wkt;
3182    /// use google_cloud_wkt::FieldMask;
3183    /// use google_cloud_dataplex_v1::model::DataAttribute;
3184    /// use google_cloud_dataplex_v1::Result;
3185    /// async fn sample(
3186    ///    client: &DataTaxonomyService, name: &str
3187    /// ) -> Result<()> {
3188    ///     let response = client.update_data_attribute()
3189    ///         .set_data_attribute(
3190    ///             DataAttribute::new().set_name(name)/* set fields */
3191    ///         )
3192    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
3193    ///         .poller().until_done().await?;
3194    ///     println!("response {:?}", response);
3195    ///     Ok(())
3196    /// }
3197    /// ```
3198    #[deprecated]
3199    pub fn update_data_attribute(
3200        &self,
3201    ) -> super::builder::data_taxonomy_service::UpdateDataAttribute {
3202        super::builder::data_taxonomy_service::UpdateDataAttribute::new(self.inner.clone())
3203    }
3204
3205    /// Deletes a Data Attribute resource.
3206    ///
3207    /// # Long running operations
3208    ///
3209    /// This method is used to start, and/or poll a [long-running Operation].
3210    /// The [Working with long-running operations] chapter in the [user guide]
3211    /// covers these operations in detail.
3212    ///
3213    /// [long-running operation]: https://google.aip.dev/151
3214    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
3215    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
3216    ///
3217    /// # Example
3218    /// ```
3219    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3220    /// use google_cloud_lro::Poller;
3221    /// use google_cloud_dataplex_v1::Result;
3222    /// async fn sample(
3223    ///    client: &DataTaxonomyService, name: &str
3224    /// ) -> Result<()> {
3225    ///     client.delete_data_attribute()
3226    ///         .set_name(name)
3227    ///         .poller().until_done().await?;
3228    ///     Ok(())
3229    /// }
3230    /// ```
3231    #[deprecated]
3232    pub fn delete_data_attribute(
3233        &self,
3234    ) -> super::builder::data_taxonomy_service::DeleteDataAttribute {
3235        super::builder::data_taxonomy_service::DeleteDataAttribute::new(self.inner.clone())
3236    }
3237
3238    /// Lists Data Attribute resources in a DataTaxonomy.
3239    ///
3240    /// # Example
3241    /// ```
3242    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3243    /// use google_cloud_gax::paginator::ItemPaginator as _;
3244    /// use google_cloud_dataplex_v1::Result;
3245    /// async fn sample(
3246    ///    client: &DataTaxonomyService, parent: &str
3247    /// ) -> Result<()> {
3248    ///     let mut list = client.list_data_attributes()
3249    ///         .set_parent(parent)
3250    ///         .by_item();
3251    ///     while let Some(item) = list.next().await.transpose()? {
3252    ///         println!("{:?}", item);
3253    ///     }
3254    ///     Ok(())
3255    /// }
3256    /// ```
3257    #[deprecated]
3258    pub fn list_data_attributes(
3259        &self,
3260    ) -> super::builder::data_taxonomy_service::ListDataAttributes {
3261        super::builder::data_taxonomy_service::ListDataAttributes::new(self.inner.clone())
3262    }
3263
3264    /// Retrieves a Data Attribute resource.
3265    ///
3266    /// # Example
3267    /// ```
3268    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3269    /// use google_cloud_dataplex_v1::Result;
3270    /// async fn sample(
3271    ///    client: &DataTaxonomyService, name: &str
3272    /// ) -> Result<()> {
3273    ///     let response = client.get_data_attribute()
3274    ///         .set_name(name)
3275    ///         .send().await?;
3276    ///     println!("response {:?}", response);
3277    ///     Ok(())
3278    /// }
3279    /// ```
3280    #[deprecated]
3281    pub fn get_data_attribute(&self) -> super::builder::data_taxonomy_service::GetDataAttribute {
3282        super::builder::data_taxonomy_service::GetDataAttribute::new(self.inner.clone())
3283    }
3284
3285    /// Lists information about the supported locations for this service.
3286    ///
3287    /// # Example
3288    /// ```
3289    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3290    /// use google_cloud_gax::paginator::ItemPaginator as _;
3291    /// use google_cloud_dataplex_v1::Result;
3292    /// async fn sample(
3293    ///    client: &DataTaxonomyService
3294    /// ) -> Result<()> {
3295    ///     let mut list = client.list_locations()
3296    ///         /* set fields */
3297    ///         .by_item();
3298    ///     while let Some(item) = list.next().await.transpose()? {
3299    ///         println!("{:?}", item);
3300    ///     }
3301    ///     Ok(())
3302    /// }
3303    /// ```
3304    pub fn list_locations(&self) -> super::builder::data_taxonomy_service::ListLocations {
3305        super::builder::data_taxonomy_service::ListLocations::new(self.inner.clone())
3306    }
3307
3308    /// Gets information about a location.
3309    ///
3310    /// # Example
3311    /// ```
3312    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3313    /// use google_cloud_dataplex_v1::Result;
3314    /// async fn sample(
3315    ///    client: &DataTaxonomyService
3316    /// ) -> Result<()> {
3317    ///     let response = client.get_location()
3318    ///         /* set fields */
3319    ///         .send().await?;
3320    ///     println!("response {:?}", response);
3321    ///     Ok(())
3322    /// }
3323    /// ```
3324    pub fn get_location(&self) -> super::builder::data_taxonomy_service::GetLocation {
3325        super::builder::data_taxonomy_service::GetLocation::new(self.inner.clone())
3326    }
3327
3328    /// Sets the access control policy on the specified resource. Replaces
3329    /// any existing policy.
3330    ///
3331    /// Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
3332    /// errors.
3333    ///
3334    /// # Example
3335    /// ```
3336    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3337    /// use google_cloud_dataplex_v1::Result;
3338    /// async fn sample(
3339    ///    client: &DataTaxonomyService
3340    /// ) -> Result<()> {
3341    ///     let response = client.set_iam_policy()
3342    ///         /* set fields */
3343    ///         .send().await?;
3344    ///     println!("response {:?}", response);
3345    ///     Ok(())
3346    /// }
3347    /// ```
3348    pub fn set_iam_policy(&self) -> super::builder::data_taxonomy_service::SetIamPolicy {
3349        super::builder::data_taxonomy_service::SetIamPolicy::new(self.inner.clone())
3350    }
3351
3352    /// Gets the access control policy for a resource. Returns an empty policy
3353    /// if the resource exists and does not have a policy set.
3354    ///
3355    /// # Example
3356    /// ```
3357    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3358    /// use google_cloud_dataplex_v1::Result;
3359    /// async fn sample(
3360    ///    client: &DataTaxonomyService
3361    /// ) -> Result<()> {
3362    ///     let response = client.get_iam_policy()
3363    ///         /* set fields */
3364    ///         .send().await?;
3365    ///     println!("response {:?}", response);
3366    ///     Ok(())
3367    /// }
3368    /// ```
3369    pub fn get_iam_policy(&self) -> super::builder::data_taxonomy_service::GetIamPolicy {
3370        super::builder::data_taxonomy_service::GetIamPolicy::new(self.inner.clone())
3371    }
3372
3373    /// Returns permissions that a caller has on the specified resource. If the
3374    /// resource does not exist, this will return an empty set of
3375    /// permissions, not a `NOT_FOUND` error.
3376    ///
3377    /// Note: This operation is designed to be used for building
3378    /// permission-aware UIs and command-line tools, not for authorization
3379    /// checking. This operation may "fail open" without warning.
3380    ///
3381    /// # Example
3382    /// ```
3383    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3384    /// use google_cloud_dataplex_v1::Result;
3385    /// async fn sample(
3386    ///    client: &DataTaxonomyService
3387    /// ) -> Result<()> {
3388    ///     let response = client.test_iam_permissions()
3389    ///         /* set fields */
3390    ///         .send().await?;
3391    ///     println!("response {:?}", response);
3392    ///     Ok(())
3393    /// }
3394    /// ```
3395    pub fn test_iam_permissions(
3396        &self,
3397    ) -> super::builder::data_taxonomy_service::TestIamPermissions {
3398        super::builder::data_taxonomy_service::TestIamPermissions::new(self.inner.clone())
3399    }
3400
3401    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
3402    ///
3403    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
3404    ///
3405    /// # Example
3406    /// ```
3407    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3408    /// use google_cloud_gax::paginator::ItemPaginator as _;
3409    /// use google_cloud_dataplex_v1::Result;
3410    /// async fn sample(
3411    ///    client: &DataTaxonomyService
3412    /// ) -> Result<()> {
3413    ///     let mut list = client.list_operations()
3414    ///         /* set fields */
3415    ///         .by_item();
3416    ///     while let Some(item) = list.next().await.transpose()? {
3417    ///         println!("{:?}", item);
3418    ///     }
3419    ///     Ok(())
3420    /// }
3421    /// ```
3422    pub fn list_operations(&self) -> super::builder::data_taxonomy_service::ListOperations {
3423        super::builder::data_taxonomy_service::ListOperations::new(self.inner.clone())
3424    }
3425
3426    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
3427    ///
3428    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
3429    ///
3430    /// # Example
3431    /// ```
3432    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3433    /// use google_cloud_dataplex_v1::Result;
3434    /// async fn sample(
3435    ///    client: &DataTaxonomyService
3436    /// ) -> Result<()> {
3437    ///     let response = client.get_operation()
3438    ///         /* set fields */
3439    ///         .send().await?;
3440    ///     println!("response {:?}", response);
3441    ///     Ok(())
3442    /// }
3443    /// ```
3444    pub fn get_operation(&self) -> super::builder::data_taxonomy_service::GetOperation {
3445        super::builder::data_taxonomy_service::GetOperation::new(self.inner.clone())
3446    }
3447
3448    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
3449    ///
3450    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
3451    ///
3452    /// # Example
3453    /// ```
3454    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3455    /// use google_cloud_dataplex_v1::Result;
3456    /// async fn sample(
3457    ///    client: &DataTaxonomyService
3458    /// ) -> Result<()> {
3459    ///     client.delete_operation()
3460    ///         /* set fields */
3461    ///         .send().await?;
3462    ///     Ok(())
3463    /// }
3464    /// ```
3465    pub fn delete_operation(&self) -> super::builder::data_taxonomy_service::DeleteOperation {
3466        super::builder::data_taxonomy_service::DeleteOperation::new(self.inner.clone())
3467    }
3468
3469    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
3470    ///
3471    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
3472    ///
3473    /// # Example
3474    /// ```
3475    /// # use google_cloud_dataplex_v1::client::DataTaxonomyService;
3476    /// use google_cloud_dataplex_v1::Result;
3477    /// async fn sample(
3478    ///    client: &DataTaxonomyService
3479    /// ) -> Result<()> {
3480    ///     client.cancel_operation()
3481    ///         /* set fields */
3482    ///         .send().await?;
3483    ///     Ok(())
3484    /// }
3485    /// ```
3486    pub fn cancel_operation(&self) -> super::builder::data_taxonomy_service::CancelOperation {
3487        super::builder::data_taxonomy_service::CancelOperation::new(self.inner.clone())
3488    }
3489}
3490
3491/// Implements a client for the Cloud Dataplex API.
3492///
3493/// # Example
3494/// ```
3495/// # use google_cloud_dataplex_v1::client::DataScanService;
3496/// use google_cloud_gax::paginator::ItemPaginator as _;
3497/// # async fn sample() -> Result<(), Box<dyn std::error::Error>> {
3498///     let client = DataScanService::builder().build().await?;
3499///     let parent = "parent_value";
3500///     let mut list = client.list_data_scans()
3501///         .set_parent(parent)
3502///         .by_item();
3503///     while let Some(item) = list.next().await.transpose()? {
3504///         println!("{:?}", item);
3505///     }
3506/// # Ok(()) }
3507/// ```
3508///
3509/// # Service Description
3510///
3511/// DataScanService manages DataScan resources which can be configured to run
3512/// various types of data scanning workload and generate enriched metadata (e.g.
3513/// Data Profile, Data Quality) for the data source.
3514///
3515/// # Configuration
3516///
3517/// To configure `DataScanService` use the `with_*` methods in the type returned
3518/// by [builder()][DataScanService::builder]. The default configuration should
3519/// work for most applications. Common configuration changes include
3520///
3521/// * [with_endpoint()]: by default this client uses the global default endpoint
3522///   (`https://dataplex.googleapis.com`). Applications using regional
3523///   endpoints or running in restricted networks (e.g. a network configured
3524//    with [Private Google Access with VPC Service Controls]) may want to
3525///   override this default.
3526/// * [with_credentials()]: by default this client uses
3527///   [Application Default Credentials]. Applications using custom
3528///   authentication may need to override this default.
3529///
3530/// [with_endpoint()]: super::builder::data_scan_service::ClientBuilder::with_endpoint
3531/// [with_credentials()]: super::builder::data_scan_service::ClientBuilder::with_credentials
3532/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
3533/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
3534///
3535/// # Pooling and Cloning
3536///
3537/// `DataScanService` holds a connection pool internally, it is advised to
3538/// create one and reuse it. You do not need to wrap `DataScanService` in
3539/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
3540/// already uses an `Arc` internally.
3541#[derive(Clone, Debug)]
3542pub struct DataScanService {
3543    inner: std::sync::Arc<dyn super::stub::dynamic::DataScanService>,
3544}
3545
3546impl DataScanService {
3547    /// Returns a builder for [DataScanService].
3548    ///
3549    /// ```
3550    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
3551    /// # use google_cloud_dataplex_v1::client::DataScanService;
3552    /// let client = DataScanService::builder().build().await?;
3553    /// # Ok(()) }
3554    /// ```
3555    pub fn builder() -> super::builder::data_scan_service::ClientBuilder {
3556        crate::new_client_builder(super::builder::data_scan_service::client::Factory)
3557    }
3558
3559    /// Creates a new client from the provided stub.
3560    ///
3561    /// The most common case for calling this function is in tests mocking the
3562    /// client's behavior.
3563    pub fn from_stub<T>(stub: T) -> Self
3564    where
3565        T: super::stub::DataScanService + 'static,
3566    {
3567        Self {
3568            inner: std::sync::Arc::new(stub),
3569        }
3570    }
3571
3572    pub(crate) async fn new(
3573        config: gaxi::options::ClientConfig,
3574    ) -> crate::ClientBuilderResult<Self> {
3575        let inner = Self::build_inner(config).await?;
3576        Ok(Self { inner })
3577    }
3578
3579    async fn build_inner(
3580        conf: gaxi::options::ClientConfig,
3581    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::DataScanService>> {
3582        if gaxi::options::tracing_enabled(&conf) {
3583            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
3584        }
3585        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
3586    }
3587
3588    async fn build_transport(
3589        conf: gaxi::options::ClientConfig,
3590    ) -> crate::ClientBuilderResult<impl super::stub::DataScanService> {
3591        super::transport::DataScanService::new(conf).await
3592    }
3593
3594    async fn build_with_tracing(
3595        conf: gaxi::options::ClientConfig,
3596    ) -> crate::ClientBuilderResult<impl super::stub::DataScanService> {
3597        Self::build_transport(conf)
3598            .await
3599            .map(super::tracing::DataScanService::new)
3600    }
3601
3602    /// Creates a DataScan resource.
3603    ///
3604    /// # Long running operations
3605    ///
3606    /// This method is used to start, and/or poll a [long-running Operation].
3607    /// The [Working with long-running operations] chapter in the [user guide]
3608    /// covers these operations in detail.
3609    ///
3610    /// [long-running operation]: https://google.aip.dev/151
3611    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
3612    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
3613    ///
3614    /// # Example
3615    /// ```
3616    /// # use google_cloud_dataplex_v1::client::DataScanService;
3617    /// use google_cloud_lro::Poller;
3618    /// use google_cloud_dataplex_v1::model::DataScan;
3619    /// use google_cloud_dataplex_v1::Result;
3620    /// async fn sample(
3621    ///    client: &DataScanService, parent: &str
3622    /// ) -> Result<()> {
3623    ///     let response = client.create_data_scan()
3624    ///         .set_parent(parent)
3625    ///         .set_data_scan(
3626    ///             DataScan::new()/* set fields */
3627    ///         )
3628    ///         .poller().until_done().await?;
3629    ///     println!("response {:?}", response);
3630    ///     Ok(())
3631    /// }
3632    /// ```
3633    pub fn create_data_scan(&self) -> super::builder::data_scan_service::CreateDataScan {
3634        super::builder::data_scan_service::CreateDataScan::new(self.inner.clone())
3635    }
3636
3637    /// Updates a DataScan resource.
3638    ///
3639    /// # Long running operations
3640    ///
3641    /// This method is used to start, and/or poll a [long-running Operation].
3642    /// The [Working with long-running operations] chapter in the [user guide]
3643    /// covers these operations in detail.
3644    ///
3645    /// [long-running operation]: https://google.aip.dev/151
3646    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
3647    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
3648    ///
3649    /// # Example
3650    /// ```
3651    /// # use google_cloud_dataplex_v1::client::DataScanService;
3652    /// use google_cloud_lro::Poller;
3653    /// # extern crate wkt as google_cloud_wkt;
3654    /// use google_cloud_wkt::FieldMask;
3655    /// use google_cloud_dataplex_v1::model::DataScan;
3656    /// use google_cloud_dataplex_v1::Result;
3657    /// async fn sample(
3658    ///    client: &DataScanService, name: &str
3659    /// ) -> Result<()> {
3660    ///     let response = client.update_data_scan()
3661    ///         .set_data_scan(
3662    ///             DataScan::new().set_name(name)/* set fields */
3663    ///         )
3664    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
3665    ///         .poller().until_done().await?;
3666    ///     println!("response {:?}", response);
3667    ///     Ok(())
3668    /// }
3669    /// ```
3670    pub fn update_data_scan(&self) -> super::builder::data_scan_service::UpdateDataScan {
3671        super::builder::data_scan_service::UpdateDataScan::new(self.inner.clone())
3672    }
3673
3674    /// Deletes a DataScan resource.
3675    ///
3676    /// # Long running operations
3677    ///
3678    /// This method is used to start, and/or poll a [long-running Operation].
3679    /// The [Working with long-running operations] chapter in the [user guide]
3680    /// covers these operations in detail.
3681    ///
3682    /// [long-running operation]: https://google.aip.dev/151
3683    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
3684    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
3685    ///
3686    /// # Example
3687    /// ```
3688    /// # use google_cloud_dataplex_v1::client::DataScanService;
3689    /// use google_cloud_lro::Poller;
3690    /// use google_cloud_dataplex_v1::Result;
3691    /// async fn sample(
3692    ///    client: &DataScanService, name: &str
3693    /// ) -> Result<()> {
3694    ///     client.delete_data_scan()
3695    ///         .set_name(name)
3696    ///         .poller().until_done().await?;
3697    ///     Ok(())
3698    /// }
3699    /// ```
3700    pub fn delete_data_scan(&self) -> super::builder::data_scan_service::DeleteDataScan {
3701        super::builder::data_scan_service::DeleteDataScan::new(self.inner.clone())
3702    }
3703
3704    /// Gets a DataScan resource.
3705    ///
3706    /// # Example
3707    /// ```
3708    /// # use google_cloud_dataplex_v1::client::DataScanService;
3709    /// use google_cloud_dataplex_v1::Result;
3710    /// async fn sample(
3711    ///    client: &DataScanService, name: &str
3712    /// ) -> Result<()> {
3713    ///     let response = client.get_data_scan()
3714    ///         .set_name(name)
3715    ///         .send().await?;
3716    ///     println!("response {:?}", response);
3717    ///     Ok(())
3718    /// }
3719    /// ```
3720    pub fn get_data_scan(&self) -> super::builder::data_scan_service::GetDataScan {
3721        super::builder::data_scan_service::GetDataScan::new(self.inner.clone())
3722    }
3723
3724    /// Lists DataScans.
3725    ///
3726    /// # Example
3727    /// ```
3728    /// # use google_cloud_dataplex_v1::client::DataScanService;
3729    /// use google_cloud_gax::paginator::ItemPaginator as _;
3730    /// use google_cloud_dataplex_v1::Result;
3731    /// async fn sample(
3732    ///    client: &DataScanService, parent: &str
3733    /// ) -> Result<()> {
3734    ///     let mut list = client.list_data_scans()
3735    ///         .set_parent(parent)
3736    ///         .by_item();
3737    ///     while let Some(item) = list.next().await.transpose()? {
3738    ///         println!("{:?}", item);
3739    ///     }
3740    ///     Ok(())
3741    /// }
3742    /// ```
3743    pub fn list_data_scans(&self) -> super::builder::data_scan_service::ListDataScans {
3744        super::builder::data_scan_service::ListDataScans::new(self.inner.clone())
3745    }
3746
3747    /// Runs an on-demand execution of a DataScan
3748    ///
3749    /// # Example
3750    /// ```
3751    /// # use google_cloud_dataplex_v1::client::DataScanService;
3752    /// use google_cloud_dataplex_v1::Result;
3753    /// async fn sample(
3754    ///    client: &DataScanService
3755    /// ) -> Result<()> {
3756    ///     let response = client.run_data_scan()
3757    ///         /* set fields */
3758    ///         .send().await?;
3759    ///     println!("response {:?}", response);
3760    ///     Ok(())
3761    /// }
3762    /// ```
3763    pub fn run_data_scan(&self) -> super::builder::data_scan_service::RunDataScan {
3764        super::builder::data_scan_service::RunDataScan::new(self.inner.clone())
3765    }
3766
3767    /// Gets a DataScanJob resource.
3768    ///
3769    /// # Example
3770    /// ```
3771    /// # use google_cloud_dataplex_v1::client::DataScanService;
3772    /// use google_cloud_dataplex_v1::Result;
3773    /// async fn sample(
3774    ///    client: &DataScanService, name: &str
3775    /// ) -> Result<()> {
3776    ///     let response = client.get_data_scan_job()
3777    ///         .set_name(name)
3778    ///         .send().await?;
3779    ///     println!("response {:?}", response);
3780    ///     Ok(())
3781    /// }
3782    /// ```
3783    pub fn get_data_scan_job(&self) -> super::builder::data_scan_service::GetDataScanJob {
3784        super::builder::data_scan_service::GetDataScanJob::new(self.inner.clone())
3785    }
3786
3787    /// Lists DataScanJobs under the given DataScan.
3788    ///
3789    /// # Example
3790    /// ```
3791    /// # use google_cloud_dataplex_v1::client::DataScanService;
3792    /// use google_cloud_gax::paginator::ItemPaginator as _;
3793    /// use google_cloud_dataplex_v1::Result;
3794    /// async fn sample(
3795    ///    client: &DataScanService, parent: &str
3796    /// ) -> Result<()> {
3797    ///     let mut list = client.list_data_scan_jobs()
3798    ///         .set_parent(parent)
3799    ///         .by_item();
3800    ///     while let Some(item) = list.next().await.transpose()? {
3801    ///         println!("{:?}", item);
3802    ///     }
3803    ///     Ok(())
3804    /// }
3805    /// ```
3806    pub fn list_data_scan_jobs(&self) -> super::builder::data_scan_service::ListDataScanJobs {
3807        super::builder::data_scan_service::ListDataScanJobs::new(self.inner.clone())
3808    }
3809
3810    /// Generates recommended data quality rules based on the results of a data
3811    /// profiling scan.
3812    ///
3813    /// Use the recommendations to build rules for a data quality scan.
3814    ///
3815    /// # Example
3816    /// ```
3817    /// # use google_cloud_dataplex_v1::client::DataScanService;
3818    /// use google_cloud_dataplex_v1::Result;
3819    /// async fn sample(
3820    ///    client: &DataScanService
3821    /// ) -> Result<()> {
3822    ///     let response = client.generate_data_quality_rules()
3823    ///         /* set fields */
3824    ///         .send().await?;
3825    ///     println!("response {:?}", response);
3826    ///     Ok(())
3827    /// }
3828    /// ```
3829    pub fn generate_data_quality_rules(
3830        &self,
3831    ) -> super::builder::data_scan_service::GenerateDataQualityRules {
3832        super::builder::data_scan_service::GenerateDataQualityRules::new(self.inner.clone())
3833    }
3834
3835    /// Lists information about the supported locations for this service.
3836    ///
3837    /// # Example
3838    /// ```
3839    /// # use google_cloud_dataplex_v1::client::DataScanService;
3840    /// use google_cloud_gax::paginator::ItemPaginator as _;
3841    /// use google_cloud_dataplex_v1::Result;
3842    /// async fn sample(
3843    ///    client: &DataScanService
3844    /// ) -> Result<()> {
3845    ///     let mut list = client.list_locations()
3846    ///         /* set fields */
3847    ///         .by_item();
3848    ///     while let Some(item) = list.next().await.transpose()? {
3849    ///         println!("{:?}", item);
3850    ///     }
3851    ///     Ok(())
3852    /// }
3853    /// ```
3854    pub fn list_locations(&self) -> super::builder::data_scan_service::ListLocations {
3855        super::builder::data_scan_service::ListLocations::new(self.inner.clone())
3856    }
3857
3858    /// Gets information about a location.
3859    ///
3860    /// # Example
3861    /// ```
3862    /// # use google_cloud_dataplex_v1::client::DataScanService;
3863    /// use google_cloud_dataplex_v1::Result;
3864    /// async fn sample(
3865    ///    client: &DataScanService
3866    /// ) -> Result<()> {
3867    ///     let response = client.get_location()
3868    ///         /* set fields */
3869    ///         .send().await?;
3870    ///     println!("response {:?}", response);
3871    ///     Ok(())
3872    /// }
3873    /// ```
3874    pub fn get_location(&self) -> super::builder::data_scan_service::GetLocation {
3875        super::builder::data_scan_service::GetLocation::new(self.inner.clone())
3876    }
3877
3878    /// Sets the access control policy on the specified resource. Replaces
3879    /// any existing policy.
3880    ///
3881    /// Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
3882    /// errors.
3883    ///
3884    /// # Example
3885    /// ```
3886    /// # use google_cloud_dataplex_v1::client::DataScanService;
3887    /// use google_cloud_dataplex_v1::Result;
3888    /// async fn sample(
3889    ///    client: &DataScanService
3890    /// ) -> Result<()> {
3891    ///     let response = client.set_iam_policy()
3892    ///         /* set fields */
3893    ///         .send().await?;
3894    ///     println!("response {:?}", response);
3895    ///     Ok(())
3896    /// }
3897    /// ```
3898    pub fn set_iam_policy(&self) -> super::builder::data_scan_service::SetIamPolicy {
3899        super::builder::data_scan_service::SetIamPolicy::new(self.inner.clone())
3900    }
3901
3902    /// Gets the access control policy for a resource. Returns an empty policy
3903    /// if the resource exists and does not have a policy set.
3904    ///
3905    /// # Example
3906    /// ```
3907    /// # use google_cloud_dataplex_v1::client::DataScanService;
3908    /// use google_cloud_dataplex_v1::Result;
3909    /// async fn sample(
3910    ///    client: &DataScanService
3911    /// ) -> Result<()> {
3912    ///     let response = client.get_iam_policy()
3913    ///         /* set fields */
3914    ///         .send().await?;
3915    ///     println!("response {:?}", response);
3916    ///     Ok(())
3917    /// }
3918    /// ```
3919    pub fn get_iam_policy(&self) -> super::builder::data_scan_service::GetIamPolicy {
3920        super::builder::data_scan_service::GetIamPolicy::new(self.inner.clone())
3921    }
3922
3923    /// Returns permissions that a caller has on the specified resource. If the
3924    /// resource does not exist, this will return an empty set of
3925    /// permissions, not a `NOT_FOUND` error.
3926    ///
3927    /// Note: This operation is designed to be used for building
3928    /// permission-aware UIs and command-line tools, not for authorization
3929    /// checking. This operation may "fail open" without warning.
3930    ///
3931    /// # Example
3932    /// ```
3933    /// # use google_cloud_dataplex_v1::client::DataScanService;
3934    /// use google_cloud_dataplex_v1::Result;
3935    /// async fn sample(
3936    ///    client: &DataScanService
3937    /// ) -> Result<()> {
3938    ///     let response = client.test_iam_permissions()
3939    ///         /* set fields */
3940    ///         .send().await?;
3941    ///     println!("response {:?}", response);
3942    ///     Ok(())
3943    /// }
3944    /// ```
3945    pub fn test_iam_permissions(&self) -> super::builder::data_scan_service::TestIamPermissions {
3946        super::builder::data_scan_service::TestIamPermissions::new(self.inner.clone())
3947    }
3948
3949    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
3950    ///
3951    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
3952    ///
3953    /// # Example
3954    /// ```
3955    /// # use google_cloud_dataplex_v1::client::DataScanService;
3956    /// use google_cloud_gax::paginator::ItemPaginator as _;
3957    /// use google_cloud_dataplex_v1::Result;
3958    /// async fn sample(
3959    ///    client: &DataScanService
3960    /// ) -> Result<()> {
3961    ///     let mut list = client.list_operations()
3962    ///         /* set fields */
3963    ///         .by_item();
3964    ///     while let Some(item) = list.next().await.transpose()? {
3965    ///         println!("{:?}", item);
3966    ///     }
3967    ///     Ok(())
3968    /// }
3969    /// ```
3970    pub fn list_operations(&self) -> super::builder::data_scan_service::ListOperations {
3971        super::builder::data_scan_service::ListOperations::new(self.inner.clone())
3972    }
3973
3974    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
3975    ///
3976    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
3977    ///
3978    /// # Example
3979    /// ```
3980    /// # use google_cloud_dataplex_v1::client::DataScanService;
3981    /// use google_cloud_dataplex_v1::Result;
3982    /// async fn sample(
3983    ///    client: &DataScanService
3984    /// ) -> Result<()> {
3985    ///     let response = client.get_operation()
3986    ///         /* set fields */
3987    ///         .send().await?;
3988    ///     println!("response {:?}", response);
3989    ///     Ok(())
3990    /// }
3991    /// ```
3992    pub fn get_operation(&self) -> super::builder::data_scan_service::GetOperation {
3993        super::builder::data_scan_service::GetOperation::new(self.inner.clone())
3994    }
3995
3996    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
3997    ///
3998    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
3999    ///
4000    /// # Example
4001    /// ```
4002    /// # use google_cloud_dataplex_v1::client::DataScanService;
4003    /// use google_cloud_dataplex_v1::Result;
4004    /// async fn sample(
4005    ///    client: &DataScanService
4006    /// ) -> Result<()> {
4007    ///     client.delete_operation()
4008    ///         /* set fields */
4009    ///         .send().await?;
4010    ///     Ok(())
4011    /// }
4012    /// ```
4013    pub fn delete_operation(&self) -> super::builder::data_scan_service::DeleteOperation {
4014        super::builder::data_scan_service::DeleteOperation::new(self.inner.clone())
4015    }
4016
4017    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
4018    ///
4019    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
4020    ///
4021    /// # Example
4022    /// ```
4023    /// # use google_cloud_dataplex_v1::client::DataScanService;
4024    /// use google_cloud_dataplex_v1::Result;
4025    /// async fn sample(
4026    ///    client: &DataScanService
4027    /// ) -> Result<()> {
4028    ///     client.cancel_operation()
4029    ///         /* set fields */
4030    ///         .send().await?;
4031    ///     Ok(())
4032    /// }
4033    /// ```
4034    pub fn cancel_operation(&self) -> super::builder::data_scan_service::CancelOperation {
4035        super::builder::data_scan_service::CancelOperation::new(self.inner.clone())
4036    }
4037}
4038
4039/// Implements a client for the Cloud Dataplex API.
4040///
4041/// # Example
4042/// ```
4043/// # use google_cloud_dataplex_v1::client::MetadataService;
4044/// use google_cloud_gax::paginator::ItemPaginator as _;
4045/// # async fn sample() -> Result<(), Box<dyn std::error::Error>> {
4046///     let client = MetadataService::builder().build().await?;
4047///     let parent = "parent_value";
4048///     let mut list = client.list_entities()
4049///         .set_parent(parent)
4050///         .by_item();
4051///     while let Some(item) = list.next().await.transpose()? {
4052///         println!("{:?}", item);
4053///     }
4054/// # Ok(()) }
4055/// ```
4056///
4057/// # Service Description
4058///
4059/// Metadata service manages metadata resources such as tables, filesets and
4060/// partitions.
4061///
4062/// # Configuration
4063///
4064/// To configure `MetadataService` use the `with_*` methods in the type returned
4065/// by [builder()][MetadataService::builder]. The default configuration should
4066/// work for most applications. Common configuration changes include
4067///
4068/// * [with_endpoint()]: by default this client uses the global default endpoint
4069///   (`https://dataplex.googleapis.com`). Applications using regional
4070///   endpoints or running in restricted networks (e.g. a network configured
4071//    with [Private Google Access with VPC Service Controls]) may want to
4072///   override this default.
4073/// * [with_credentials()]: by default this client uses
4074///   [Application Default Credentials]. Applications using custom
4075///   authentication may need to override this default.
4076///
4077/// [with_endpoint()]: super::builder::metadata_service::ClientBuilder::with_endpoint
4078/// [with_credentials()]: super::builder::metadata_service::ClientBuilder::with_credentials
4079/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
4080/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
4081///
4082/// # Pooling and Cloning
4083///
4084/// `MetadataService` holds a connection pool internally, it is advised to
4085/// create one and reuse it. You do not need to wrap `MetadataService` in
4086/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
4087/// already uses an `Arc` internally.
4088#[derive(Clone, Debug)]
4089pub struct MetadataService {
4090    inner: std::sync::Arc<dyn super::stub::dynamic::MetadataService>,
4091}
4092
4093impl MetadataService {
4094    /// Returns a builder for [MetadataService].
4095    ///
4096    /// ```
4097    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
4098    /// # use google_cloud_dataplex_v1::client::MetadataService;
4099    /// let client = MetadataService::builder().build().await?;
4100    /// # Ok(()) }
4101    /// ```
4102    pub fn builder() -> super::builder::metadata_service::ClientBuilder {
4103        crate::new_client_builder(super::builder::metadata_service::client::Factory)
4104    }
4105
4106    /// Creates a new client from the provided stub.
4107    ///
4108    /// The most common case for calling this function is in tests mocking the
4109    /// client's behavior.
4110    pub fn from_stub<T>(stub: T) -> Self
4111    where
4112        T: super::stub::MetadataService + 'static,
4113    {
4114        Self {
4115            inner: std::sync::Arc::new(stub),
4116        }
4117    }
4118
4119    pub(crate) async fn new(
4120        config: gaxi::options::ClientConfig,
4121    ) -> crate::ClientBuilderResult<Self> {
4122        let inner = Self::build_inner(config).await?;
4123        Ok(Self { inner })
4124    }
4125
4126    async fn build_inner(
4127        conf: gaxi::options::ClientConfig,
4128    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::MetadataService>> {
4129        if gaxi::options::tracing_enabled(&conf) {
4130            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
4131        }
4132        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
4133    }
4134
4135    async fn build_transport(
4136        conf: gaxi::options::ClientConfig,
4137    ) -> crate::ClientBuilderResult<impl super::stub::MetadataService> {
4138        super::transport::MetadataService::new(conf).await
4139    }
4140
4141    async fn build_with_tracing(
4142        conf: gaxi::options::ClientConfig,
4143    ) -> crate::ClientBuilderResult<impl super::stub::MetadataService> {
4144        Self::build_transport(conf)
4145            .await
4146            .map(super::tracing::MetadataService::new)
4147    }
4148
4149    /// Create a metadata entity.
4150    ///
4151    /// # Example
4152    /// ```
4153    /// # use google_cloud_dataplex_v1::client::MetadataService;
4154    /// use google_cloud_dataplex_v1::model::Entity;
4155    /// use google_cloud_dataplex_v1::Result;
4156    /// async fn sample(
4157    ///    client: &MetadataService, parent: &str
4158    /// ) -> Result<()> {
4159    ///     let response = client.create_entity()
4160    ///         .set_parent(parent)
4161    ///         .set_entity(
4162    ///             Entity::new()/* set fields */
4163    ///         )
4164    ///         .send().await?;
4165    ///     println!("response {:?}", response);
4166    ///     Ok(())
4167    /// }
4168    /// ```
4169    pub fn create_entity(&self) -> super::builder::metadata_service::CreateEntity {
4170        super::builder::metadata_service::CreateEntity::new(self.inner.clone())
4171    }
4172
4173    /// Update a metadata entity. Only supports full resource update.
4174    ///
4175    /// # Example
4176    /// ```
4177    /// # use google_cloud_dataplex_v1::client::MetadataService;
4178    /// use google_cloud_dataplex_v1::model::Entity;
4179    /// use google_cloud_dataplex_v1::Result;
4180    /// async fn sample(
4181    ///    client: &MetadataService, name: &str
4182    /// ) -> Result<()> {
4183    ///     let response = client.update_entity()
4184    ///         .set_entity(
4185    ///             Entity::new().set_name(name)/* set fields */
4186    ///         )
4187    ///         .send().await?;
4188    ///     println!("response {:?}", response);
4189    ///     Ok(())
4190    /// }
4191    /// ```
4192    pub fn update_entity(&self) -> super::builder::metadata_service::UpdateEntity {
4193        super::builder::metadata_service::UpdateEntity::new(self.inner.clone())
4194    }
4195
4196    /// Delete a metadata entity.
4197    ///
4198    /// # Example
4199    /// ```
4200    /// # use google_cloud_dataplex_v1::client::MetadataService;
4201    /// use google_cloud_dataplex_v1::Result;
4202    /// async fn sample(
4203    ///    client: &MetadataService, name: &str
4204    /// ) -> Result<()> {
4205    ///     client.delete_entity()
4206    ///         .set_name(name)
4207    ///         .send().await?;
4208    ///     Ok(())
4209    /// }
4210    /// ```
4211    pub fn delete_entity(&self) -> super::builder::metadata_service::DeleteEntity {
4212        super::builder::metadata_service::DeleteEntity::new(self.inner.clone())
4213    }
4214
4215    /// Get a metadata entity.
4216    ///
4217    /// # Example
4218    /// ```
4219    /// # use google_cloud_dataplex_v1::client::MetadataService;
4220    /// use google_cloud_dataplex_v1::Result;
4221    /// async fn sample(
4222    ///    client: &MetadataService, name: &str
4223    /// ) -> Result<()> {
4224    ///     let response = client.get_entity()
4225    ///         .set_name(name)
4226    ///         .send().await?;
4227    ///     println!("response {:?}", response);
4228    ///     Ok(())
4229    /// }
4230    /// ```
4231    pub fn get_entity(&self) -> super::builder::metadata_service::GetEntity {
4232        super::builder::metadata_service::GetEntity::new(self.inner.clone())
4233    }
4234
4235    /// List metadata entities in a zone.
4236    ///
4237    /// # Example
4238    /// ```
4239    /// # use google_cloud_dataplex_v1::client::MetadataService;
4240    /// use google_cloud_gax::paginator::ItemPaginator as _;
4241    /// use google_cloud_dataplex_v1::Result;
4242    /// async fn sample(
4243    ///    client: &MetadataService, parent: &str
4244    /// ) -> Result<()> {
4245    ///     let mut list = client.list_entities()
4246    ///         .set_parent(parent)
4247    ///         .by_item();
4248    ///     while let Some(item) = list.next().await.transpose()? {
4249    ///         println!("{:?}", item);
4250    ///     }
4251    ///     Ok(())
4252    /// }
4253    /// ```
4254    pub fn list_entities(&self) -> super::builder::metadata_service::ListEntities {
4255        super::builder::metadata_service::ListEntities::new(self.inner.clone())
4256    }
4257
4258    /// Create a metadata partition.
4259    ///
4260    /// # Example
4261    /// ```
4262    /// # use google_cloud_dataplex_v1::client::MetadataService;
4263    /// use google_cloud_dataplex_v1::model::Partition;
4264    /// use google_cloud_dataplex_v1::Result;
4265    /// async fn sample(
4266    ///    client: &MetadataService, parent: &str
4267    /// ) -> Result<()> {
4268    ///     let response = client.create_partition()
4269    ///         .set_parent(parent)
4270    ///         .set_partition(
4271    ///             Partition::new()/* set fields */
4272    ///         )
4273    ///         .send().await?;
4274    ///     println!("response {:?}", response);
4275    ///     Ok(())
4276    /// }
4277    /// ```
4278    pub fn create_partition(&self) -> super::builder::metadata_service::CreatePartition {
4279        super::builder::metadata_service::CreatePartition::new(self.inner.clone())
4280    }
4281
4282    /// Delete a metadata partition.
4283    ///
4284    /// # Example
4285    /// ```
4286    /// # use google_cloud_dataplex_v1::client::MetadataService;
4287    /// use google_cloud_dataplex_v1::Result;
4288    /// async fn sample(
4289    ///    client: &MetadataService, name: &str
4290    /// ) -> Result<()> {
4291    ///     client.delete_partition()
4292    ///         .set_name(name)
4293    ///         .send().await?;
4294    ///     Ok(())
4295    /// }
4296    /// ```
4297    pub fn delete_partition(&self) -> super::builder::metadata_service::DeletePartition {
4298        super::builder::metadata_service::DeletePartition::new(self.inner.clone())
4299    }
4300
4301    /// Get a metadata partition of an entity.
4302    ///
4303    /// # Example
4304    /// ```
4305    /// # use google_cloud_dataplex_v1::client::MetadataService;
4306    /// use google_cloud_dataplex_v1::Result;
4307    /// async fn sample(
4308    ///    client: &MetadataService, name: &str
4309    /// ) -> Result<()> {
4310    ///     let response = client.get_partition()
4311    ///         .set_name(name)
4312    ///         .send().await?;
4313    ///     println!("response {:?}", response);
4314    ///     Ok(())
4315    /// }
4316    /// ```
4317    pub fn get_partition(&self) -> super::builder::metadata_service::GetPartition {
4318        super::builder::metadata_service::GetPartition::new(self.inner.clone())
4319    }
4320
4321    /// List metadata partitions of an entity.
4322    ///
4323    /// # Example
4324    /// ```
4325    /// # use google_cloud_dataplex_v1::client::MetadataService;
4326    /// use google_cloud_gax::paginator::ItemPaginator as _;
4327    /// use google_cloud_dataplex_v1::Result;
4328    /// async fn sample(
4329    ///    client: &MetadataService, parent: &str
4330    /// ) -> Result<()> {
4331    ///     let mut list = client.list_partitions()
4332    ///         .set_parent(parent)
4333    ///         .by_item();
4334    ///     while let Some(item) = list.next().await.transpose()? {
4335    ///         println!("{:?}", item);
4336    ///     }
4337    ///     Ok(())
4338    /// }
4339    /// ```
4340    pub fn list_partitions(&self) -> super::builder::metadata_service::ListPartitions {
4341        super::builder::metadata_service::ListPartitions::new(self.inner.clone())
4342    }
4343
4344    /// Lists information about the supported locations for this service.
4345    ///
4346    /// # Example
4347    /// ```
4348    /// # use google_cloud_dataplex_v1::client::MetadataService;
4349    /// use google_cloud_gax::paginator::ItemPaginator as _;
4350    /// use google_cloud_dataplex_v1::Result;
4351    /// async fn sample(
4352    ///    client: &MetadataService
4353    /// ) -> Result<()> {
4354    ///     let mut list = client.list_locations()
4355    ///         /* set fields */
4356    ///         .by_item();
4357    ///     while let Some(item) = list.next().await.transpose()? {
4358    ///         println!("{:?}", item);
4359    ///     }
4360    ///     Ok(())
4361    /// }
4362    /// ```
4363    pub fn list_locations(&self) -> super::builder::metadata_service::ListLocations {
4364        super::builder::metadata_service::ListLocations::new(self.inner.clone())
4365    }
4366
4367    /// Gets information about a location.
4368    ///
4369    /// # Example
4370    /// ```
4371    /// # use google_cloud_dataplex_v1::client::MetadataService;
4372    /// use google_cloud_dataplex_v1::Result;
4373    /// async fn sample(
4374    ///    client: &MetadataService
4375    /// ) -> Result<()> {
4376    ///     let response = client.get_location()
4377    ///         /* set fields */
4378    ///         .send().await?;
4379    ///     println!("response {:?}", response);
4380    ///     Ok(())
4381    /// }
4382    /// ```
4383    pub fn get_location(&self) -> super::builder::metadata_service::GetLocation {
4384        super::builder::metadata_service::GetLocation::new(self.inner.clone())
4385    }
4386
4387    /// Sets the access control policy on the specified resource. Replaces
4388    /// any existing policy.
4389    ///
4390    /// Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
4391    /// errors.
4392    ///
4393    /// # Example
4394    /// ```
4395    /// # use google_cloud_dataplex_v1::client::MetadataService;
4396    /// use google_cloud_dataplex_v1::Result;
4397    /// async fn sample(
4398    ///    client: &MetadataService
4399    /// ) -> Result<()> {
4400    ///     let response = client.set_iam_policy()
4401    ///         /* set fields */
4402    ///         .send().await?;
4403    ///     println!("response {:?}", response);
4404    ///     Ok(())
4405    /// }
4406    /// ```
4407    pub fn set_iam_policy(&self) -> super::builder::metadata_service::SetIamPolicy {
4408        super::builder::metadata_service::SetIamPolicy::new(self.inner.clone())
4409    }
4410
4411    /// Gets the access control policy for a resource. Returns an empty policy
4412    /// if the resource exists and does not have a policy set.
4413    ///
4414    /// # Example
4415    /// ```
4416    /// # use google_cloud_dataplex_v1::client::MetadataService;
4417    /// use google_cloud_dataplex_v1::Result;
4418    /// async fn sample(
4419    ///    client: &MetadataService
4420    /// ) -> Result<()> {
4421    ///     let response = client.get_iam_policy()
4422    ///         /* set fields */
4423    ///         .send().await?;
4424    ///     println!("response {:?}", response);
4425    ///     Ok(())
4426    /// }
4427    /// ```
4428    pub fn get_iam_policy(&self) -> super::builder::metadata_service::GetIamPolicy {
4429        super::builder::metadata_service::GetIamPolicy::new(self.inner.clone())
4430    }
4431
4432    /// Returns permissions that a caller has on the specified resource. If the
4433    /// resource does not exist, this will return an empty set of
4434    /// permissions, not a `NOT_FOUND` error.
4435    ///
4436    /// Note: This operation is designed to be used for building
4437    /// permission-aware UIs and command-line tools, not for authorization
4438    /// checking. This operation may "fail open" without warning.
4439    ///
4440    /// # Example
4441    /// ```
4442    /// # use google_cloud_dataplex_v1::client::MetadataService;
4443    /// use google_cloud_dataplex_v1::Result;
4444    /// async fn sample(
4445    ///    client: &MetadataService
4446    /// ) -> Result<()> {
4447    ///     let response = client.test_iam_permissions()
4448    ///         /* set fields */
4449    ///         .send().await?;
4450    ///     println!("response {:?}", response);
4451    ///     Ok(())
4452    /// }
4453    /// ```
4454    pub fn test_iam_permissions(&self) -> super::builder::metadata_service::TestIamPermissions {
4455        super::builder::metadata_service::TestIamPermissions::new(self.inner.clone())
4456    }
4457
4458    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
4459    ///
4460    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
4461    ///
4462    /// # Example
4463    /// ```
4464    /// # use google_cloud_dataplex_v1::client::MetadataService;
4465    /// use google_cloud_gax::paginator::ItemPaginator as _;
4466    /// use google_cloud_dataplex_v1::Result;
4467    /// async fn sample(
4468    ///    client: &MetadataService
4469    /// ) -> Result<()> {
4470    ///     let mut list = client.list_operations()
4471    ///         /* set fields */
4472    ///         .by_item();
4473    ///     while let Some(item) = list.next().await.transpose()? {
4474    ///         println!("{:?}", item);
4475    ///     }
4476    ///     Ok(())
4477    /// }
4478    /// ```
4479    pub fn list_operations(&self) -> super::builder::metadata_service::ListOperations {
4480        super::builder::metadata_service::ListOperations::new(self.inner.clone())
4481    }
4482
4483    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
4484    ///
4485    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
4486    ///
4487    /// # Example
4488    /// ```
4489    /// # use google_cloud_dataplex_v1::client::MetadataService;
4490    /// use google_cloud_dataplex_v1::Result;
4491    /// async fn sample(
4492    ///    client: &MetadataService
4493    /// ) -> Result<()> {
4494    ///     let response = client.get_operation()
4495    ///         /* set fields */
4496    ///         .send().await?;
4497    ///     println!("response {:?}", response);
4498    ///     Ok(())
4499    /// }
4500    /// ```
4501    pub fn get_operation(&self) -> super::builder::metadata_service::GetOperation {
4502        super::builder::metadata_service::GetOperation::new(self.inner.clone())
4503    }
4504
4505    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
4506    ///
4507    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
4508    ///
4509    /// # Example
4510    /// ```
4511    /// # use google_cloud_dataplex_v1::client::MetadataService;
4512    /// use google_cloud_dataplex_v1::Result;
4513    /// async fn sample(
4514    ///    client: &MetadataService
4515    /// ) -> Result<()> {
4516    ///     client.delete_operation()
4517    ///         /* set fields */
4518    ///         .send().await?;
4519    ///     Ok(())
4520    /// }
4521    /// ```
4522    pub fn delete_operation(&self) -> super::builder::metadata_service::DeleteOperation {
4523        super::builder::metadata_service::DeleteOperation::new(self.inner.clone())
4524    }
4525
4526    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
4527    ///
4528    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
4529    ///
4530    /// # Example
4531    /// ```
4532    /// # use google_cloud_dataplex_v1::client::MetadataService;
4533    /// use google_cloud_dataplex_v1::Result;
4534    /// async fn sample(
4535    ///    client: &MetadataService
4536    /// ) -> Result<()> {
4537    ///     client.cancel_operation()
4538    ///         /* set fields */
4539    ///         .send().await?;
4540    ///     Ok(())
4541    /// }
4542    /// ```
4543    pub fn cancel_operation(&self) -> super::builder::metadata_service::CancelOperation {
4544        super::builder::metadata_service::CancelOperation::new(self.inner.clone())
4545    }
4546}
4547
4548/// Implements a client for the Cloud Dataplex API.
4549///
4550/// # Example
4551/// ```
4552/// # use google_cloud_dataplex_v1::client::DataplexService;
4553/// use google_cloud_gax::paginator::ItemPaginator as _;
4554/// # async fn sample() -> Result<(), Box<dyn std::error::Error>> {
4555///     let client = DataplexService::builder().build().await?;
4556///     let parent = "parent_value";
4557///     let mut list = client.list_lakes()
4558///         .set_parent(parent)
4559///         .by_item();
4560///     while let Some(item) = list.next().await.transpose()? {
4561///         println!("{:?}", item);
4562///     }
4563/// # Ok(()) }
4564/// ```
4565///
4566/// # Service Description
4567///
4568/// Dataplex service provides data lakes as a service. The primary resources
4569/// offered by this service are Lakes, Zones and Assets which collectively allow
4570/// a data administrator to organize, manage, secure and catalog data across
4571/// their organization located across cloud projects in a variety of storage
4572/// systems including Cloud Storage and BigQuery.
4573///
4574/// # Configuration
4575///
4576/// To configure `DataplexService` use the `with_*` methods in the type returned
4577/// by [builder()][DataplexService::builder]. The default configuration should
4578/// work for most applications. Common configuration changes include
4579///
4580/// * [with_endpoint()]: by default this client uses the global default endpoint
4581///   (`https://dataplex.googleapis.com`). Applications using regional
4582///   endpoints or running in restricted networks (e.g. a network configured
4583//    with [Private Google Access with VPC Service Controls]) may want to
4584///   override this default.
4585/// * [with_credentials()]: by default this client uses
4586///   [Application Default Credentials]. Applications using custom
4587///   authentication may need to override this default.
4588///
4589/// [with_endpoint()]: super::builder::dataplex_service::ClientBuilder::with_endpoint
4590/// [with_credentials()]: super::builder::dataplex_service::ClientBuilder::with_credentials
4591/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
4592/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
4593///
4594/// # Pooling and Cloning
4595///
4596/// `DataplexService` holds a connection pool internally, it is advised to
4597/// create one and reuse it. You do not need to wrap `DataplexService` in
4598/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
4599/// already uses an `Arc` internally.
4600#[derive(Clone, Debug)]
4601pub struct DataplexService {
4602    inner: std::sync::Arc<dyn super::stub::dynamic::DataplexService>,
4603}
4604
4605impl DataplexService {
4606    /// Returns a builder for [DataplexService].
4607    ///
4608    /// ```
4609    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
4610    /// # use google_cloud_dataplex_v1::client::DataplexService;
4611    /// let client = DataplexService::builder().build().await?;
4612    /// # Ok(()) }
4613    /// ```
4614    pub fn builder() -> super::builder::dataplex_service::ClientBuilder {
4615        crate::new_client_builder(super::builder::dataplex_service::client::Factory)
4616    }
4617
4618    /// Creates a new client from the provided stub.
4619    ///
4620    /// The most common case for calling this function is in tests mocking the
4621    /// client's behavior.
4622    pub fn from_stub<T>(stub: T) -> Self
4623    where
4624        T: super::stub::DataplexService + 'static,
4625    {
4626        Self {
4627            inner: std::sync::Arc::new(stub),
4628        }
4629    }
4630
4631    pub(crate) async fn new(
4632        config: gaxi::options::ClientConfig,
4633    ) -> crate::ClientBuilderResult<Self> {
4634        let inner = Self::build_inner(config).await?;
4635        Ok(Self { inner })
4636    }
4637
4638    async fn build_inner(
4639        conf: gaxi::options::ClientConfig,
4640    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::DataplexService>> {
4641        if gaxi::options::tracing_enabled(&conf) {
4642            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
4643        }
4644        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
4645    }
4646
4647    async fn build_transport(
4648        conf: gaxi::options::ClientConfig,
4649    ) -> crate::ClientBuilderResult<impl super::stub::DataplexService> {
4650        super::transport::DataplexService::new(conf).await
4651    }
4652
4653    async fn build_with_tracing(
4654        conf: gaxi::options::ClientConfig,
4655    ) -> crate::ClientBuilderResult<impl super::stub::DataplexService> {
4656        Self::build_transport(conf)
4657            .await
4658            .map(super::tracing::DataplexService::new)
4659    }
4660
4661    /// Creates a lake resource.
4662    ///
4663    /// # Long running operations
4664    ///
4665    /// This method is used to start, and/or poll a [long-running Operation].
4666    /// The [Working with long-running operations] chapter in the [user guide]
4667    /// covers these operations in detail.
4668    ///
4669    /// [long-running operation]: https://google.aip.dev/151
4670    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
4671    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
4672    ///
4673    /// # Example
4674    /// ```
4675    /// # use google_cloud_dataplex_v1::client::DataplexService;
4676    /// use google_cloud_lro::Poller;
4677    /// use google_cloud_dataplex_v1::model::Lake;
4678    /// use google_cloud_dataplex_v1::Result;
4679    /// async fn sample(
4680    ///    client: &DataplexService, parent: &str
4681    /// ) -> Result<()> {
4682    ///     let response = client.create_lake()
4683    ///         .set_parent(parent)
4684    ///         .set_lake_id("lake_id_value")
4685    ///         .set_lake(
4686    ///             Lake::new()/* set fields */
4687    ///         )
4688    ///         .poller().until_done().await?;
4689    ///     println!("response {:?}", response);
4690    ///     Ok(())
4691    /// }
4692    /// ```
4693    pub fn create_lake(&self) -> super::builder::dataplex_service::CreateLake {
4694        super::builder::dataplex_service::CreateLake::new(self.inner.clone())
4695    }
4696
4697    /// Updates a lake resource.
4698    ///
4699    /// # Long running operations
4700    ///
4701    /// This method is used to start, and/or poll a [long-running Operation].
4702    /// The [Working with long-running operations] chapter in the [user guide]
4703    /// covers these operations in detail.
4704    ///
4705    /// [long-running operation]: https://google.aip.dev/151
4706    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
4707    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
4708    ///
4709    /// # Example
4710    /// ```
4711    /// # use google_cloud_dataplex_v1::client::DataplexService;
4712    /// use google_cloud_lro::Poller;
4713    /// # extern crate wkt as google_cloud_wkt;
4714    /// use google_cloud_wkt::FieldMask;
4715    /// use google_cloud_dataplex_v1::model::Lake;
4716    /// use google_cloud_dataplex_v1::Result;
4717    /// async fn sample(
4718    ///    client: &DataplexService, name: &str
4719    /// ) -> Result<()> {
4720    ///     let response = client.update_lake()
4721    ///         .set_lake(
4722    ///             Lake::new().set_name(name)/* set fields */
4723    ///         )
4724    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
4725    ///         .poller().until_done().await?;
4726    ///     println!("response {:?}", response);
4727    ///     Ok(())
4728    /// }
4729    /// ```
4730    pub fn update_lake(&self) -> super::builder::dataplex_service::UpdateLake {
4731        super::builder::dataplex_service::UpdateLake::new(self.inner.clone())
4732    }
4733
4734    /// Deletes a lake resource. All zones within the lake must be deleted before
4735    /// the lake can be deleted.
4736    ///
4737    /// # Long running operations
4738    ///
4739    /// This method is used to start, and/or poll a [long-running Operation].
4740    /// The [Working with long-running operations] chapter in the [user guide]
4741    /// covers these operations in detail.
4742    ///
4743    /// [long-running operation]: https://google.aip.dev/151
4744    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
4745    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
4746    ///
4747    /// # Example
4748    /// ```
4749    /// # use google_cloud_dataplex_v1::client::DataplexService;
4750    /// use google_cloud_lro::Poller;
4751    /// use google_cloud_dataplex_v1::Result;
4752    /// async fn sample(
4753    ///    client: &DataplexService, name: &str
4754    /// ) -> Result<()> {
4755    ///     client.delete_lake()
4756    ///         .set_name(name)
4757    ///         .poller().until_done().await?;
4758    ///     Ok(())
4759    /// }
4760    /// ```
4761    pub fn delete_lake(&self) -> super::builder::dataplex_service::DeleteLake {
4762        super::builder::dataplex_service::DeleteLake::new(self.inner.clone())
4763    }
4764
4765    /// Lists lake resources in a project and location.
4766    ///
4767    /// # Example
4768    /// ```
4769    /// # use google_cloud_dataplex_v1::client::DataplexService;
4770    /// use google_cloud_gax::paginator::ItemPaginator as _;
4771    /// use google_cloud_dataplex_v1::Result;
4772    /// async fn sample(
4773    ///    client: &DataplexService, parent: &str
4774    /// ) -> Result<()> {
4775    ///     let mut list = client.list_lakes()
4776    ///         .set_parent(parent)
4777    ///         .by_item();
4778    ///     while let Some(item) = list.next().await.transpose()? {
4779    ///         println!("{:?}", item);
4780    ///     }
4781    ///     Ok(())
4782    /// }
4783    /// ```
4784    pub fn list_lakes(&self) -> super::builder::dataplex_service::ListLakes {
4785        super::builder::dataplex_service::ListLakes::new(self.inner.clone())
4786    }
4787
4788    /// Retrieves a lake resource.
4789    ///
4790    /// # Example
4791    /// ```
4792    /// # use google_cloud_dataplex_v1::client::DataplexService;
4793    /// use google_cloud_dataplex_v1::Result;
4794    /// async fn sample(
4795    ///    client: &DataplexService, name: &str
4796    /// ) -> Result<()> {
4797    ///     let response = client.get_lake()
4798    ///         .set_name(name)
4799    ///         .send().await?;
4800    ///     println!("response {:?}", response);
4801    ///     Ok(())
4802    /// }
4803    /// ```
4804    pub fn get_lake(&self) -> super::builder::dataplex_service::GetLake {
4805        super::builder::dataplex_service::GetLake::new(self.inner.clone())
4806    }
4807
4808    /// Lists action resources in a lake.
4809    ///
4810    /// # Example
4811    /// ```
4812    /// # use google_cloud_dataplex_v1::client::DataplexService;
4813    /// use google_cloud_gax::paginator::ItemPaginator as _;
4814    /// use google_cloud_dataplex_v1::Result;
4815    /// async fn sample(
4816    ///    client: &DataplexService
4817    /// ) -> Result<()> {
4818    ///     let mut list = client.list_lake_actions()
4819    ///         /* set fields */
4820    ///         .by_item();
4821    ///     while let Some(item) = list.next().await.transpose()? {
4822    ///         println!("{:?}", item);
4823    ///     }
4824    ///     Ok(())
4825    /// }
4826    /// ```
4827    pub fn list_lake_actions(&self) -> super::builder::dataplex_service::ListLakeActions {
4828        super::builder::dataplex_service::ListLakeActions::new(self.inner.clone())
4829    }
4830
4831    /// Creates a zone resource within a lake.
4832    ///
4833    /// # Long running operations
4834    ///
4835    /// This method is used to start, and/or poll a [long-running Operation].
4836    /// The [Working with long-running operations] chapter in the [user guide]
4837    /// covers these operations in detail.
4838    ///
4839    /// [long-running operation]: https://google.aip.dev/151
4840    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
4841    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
4842    ///
4843    /// # Example
4844    /// ```
4845    /// # use google_cloud_dataplex_v1::client::DataplexService;
4846    /// use google_cloud_lro::Poller;
4847    /// use google_cloud_dataplex_v1::model::Zone;
4848    /// use google_cloud_dataplex_v1::Result;
4849    /// async fn sample(
4850    ///    client: &DataplexService, parent: &str
4851    /// ) -> Result<()> {
4852    ///     let response = client.create_zone()
4853    ///         .set_parent(parent)
4854    ///         .set_zone_id("zone_id_value")
4855    ///         .set_zone(
4856    ///             Zone::new()/* set fields */
4857    ///         )
4858    ///         .poller().until_done().await?;
4859    ///     println!("response {:?}", response);
4860    ///     Ok(())
4861    /// }
4862    /// ```
4863    pub fn create_zone(&self) -> super::builder::dataplex_service::CreateZone {
4864        super::builder::dataplex_service::CreateZone::new(self.inner.clone())
4865    }
4866
4867    /// Updates a zone resource.
4868    ///
4869    /// # Long running operations
4870    ///
4871    /// This method is used to start, and/or poll a [long-running Operation].
4872    /// The [Working with long-running operations] chapter in the [user guide]
4873    /// covers these operations in detail.
4874    ///
4875    /// [long-running operation]: https://google.aip.dev/151
4876    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
4877    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
4878    ///
4879    /// # Example
4880    /// ```
4881    /// # use google_cloud_dataplex_v1::client::DataplexService;
4882    /// use google_cloud_lro::Poller;
4883    /// # extern crate wkt as google_cloud_wkt;
4884    /// use google_cloud_wkt::FieldMask;
4885    /// use google_cloud_dataplex_v1::model::Zone;
4886    /// use google_cloud_dataplex_v1::Result;
4887    /// async fn sample(
4888    ///    client: &DataplexService, name: &str
4889    /// ) -> Result<()> {
4890    ///     let response = client.update_zone()
4891    ///         .set_zone(
4892    ///             Zone::new().set_name(name)/* set fields */
4893    ///         )
4894    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
4895    ///         .poller().until_done().await?;
4896    ///     println!("response {:?}", response);
4897    ///     Ok(())
4898    /// }
4899    /// ```
4900    pub fn update_zone(&self) -> super::builder::dataplex_service::UpdateZone {
4901        super::builder::dataplex_service::UpdateZone::new(self.inner.clone())
4902    }
4903
4904    /// Deletes a zone resource. All assets within a zone must be deleted before
4905    /// the zone can be deleted.
4906    ///
4907    /// # Long running operations
4908    ///
4909    /// This method is used to start, and/or poll a [long-running Operation].
4910    /// The [Working with long-running operations] chapter in the [user guide]
4911    /// covers these operations in detail.
4912    ///
4913    /// [long-running operation]: https://google.aip.dev/151
4914    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
4915    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
4916    ///
4917    /// # Example
4918    /// ```
4919    /// # use google_cloud_dataplex_v1::client::DataplexService;
4920    /// use google_cloud_lro::Poller;
4921    /// use google_cloud_dataplex_v1::Result;
4922    /// async fn sample(
4923    ///    client: &DataplexService, name: &str
4924    /// ) -> Result<()> {
4925    ///     client.delete_zone()
4926    ///         .set_name(name)
4927    ///         .poller().until_done().await?;
4928    ///     Ok(())
4929    /// }
4930    /// ```
4931    pub fn delete_zone(&self) -> super::builder::dataplex_service::DeleteZone {
4932        super::builder::dataplex_service::DeleteZone::new(self.inner.clone())
4933    }
4934
4935    /// Lists zone resources in a lake.
4936    ///
4937    /// # Example
4938    /// ```
4939    /// # use google_cloud_dataplex_v1::client::DataplexService;
4940    /// use google_cloud_gax::paginator::ItemPaginator as _;
4941    /// use google_cloud_dataplex_v1::Result;
4942    /// async fn sample(
4943    ///    client: &DataplexService, parent: &str
4944    /// ) -> Result<()> {
4945    ///     let mut list = client.list_zones()
4946    ///         .set_parent(parent)
4947    ///         .by_item();
4948    ///     while let Some(item) = list.next().await.transpose()? {
4949    ///         println!("{:?}", item);
4950    ///     }
4951    ///     Ok(())
4952    /// }
4953    /// ```
4954    pub fn list_zones(&self) -> super::builder::dataplex_service::ListZones {
4955        super::builder::dataplex_service::ListZones::new(self.inner.clone())
4956    }
4957
4958    /// Retrieves a zone resource.
4959    ///
4960    /// # Example
4961    /// ```
4962    /// # use google_cloud_dataplex_v1::client::DataplexService;
4963    /// use google_cloud_dataplex_v1::Result;
4964    /// async fn sample(
4965    ///    client: &DataplexService, name: &str
4966    /// ) -> Result<()> {
4967    ///     let response = client.get_zone()
4968    ///         .set_name(name)
4969    ///         .send().await?;
4970    ///     println!("response {:?}", response);
4971    ///     Ok(())
4972    /// }
4973    /// ```
4974    pub fn get_zone(&self) -> super::builder::dataplex_service::GetZone {
4975        super::builder::dataplex_service::GetZone::new(self.inner.clone())
4976    }
4977
4978    /// Lists action resources in a zone.
4979    ///
4980    /// # Example
4981    /// ```
4982    /// # use google_cloud_dataplex_v1::client::DataplexService;
4983    /// use google_cloud_gax::paginator::ItemPaginator as _;
4984    /// use google_cloud_dataplex_v1::Result;
4985    /// async fn sample(
4986    ///    client: &DataplexService
4987    /// ) -> Result<()> {
4988    ///     let mut list = client.list_zone_actions()
4989    ///         /* set fields */
4990    ///         .by_item();
4991    ///     while let Some(item) = list.next().await.transpose()? {
4992    ///         println!("{:?}", item);
4993    ///     }
4994    ///     Ok(())
4995    /// }
4996    /// ```
4997    pub fn list_zone_actions(&self) -> super::builder::dataplex_service::ListZoneActions {
4998        super::builder::dataplex_service::ListZoneActions::new(self.inner.clone())
4999    }
5000
5001    /// Creates an asset resource.
5002    ///
5003    /// # Long running operations
5004    ///
5005    /// This method is used to start, and/or poll a [long-running Operation].
5006    /// The [Working with long-running operations] chapter in the [user guide]
5007    /// covers these operations in detail.
5008    ///
5009    /// [long-running operation]: https://google.aip.dev/151
5010    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
5011    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
5012    ///
5013    /// # Example
5014    /// ```
5015    /// # use google_cloud_dataplex_v1::client::DataplexService;
5016    /// use google_cloud_lro::Poller;
5017    /// use google_cloud_dataplex_v1::model::Asset;
5018    /// use google_cloud_dataplex_v1::Result;
5019    /// async fn sample(
5020    ///    client: &DataplexService, parent: &str
5021    /// ) -> Result<()> {
5022    ///     let response = client.create_asset()
5023    ///         .set_parent(parent)
5024    ///         .set_asset_id("asset_id_value")
5025    ///         .set_asset(
5026    ///             Asset::new()/* set fields */
5027    ///         )
5028    ///         .poller().until_done().await?;
5029    ///     println!("response {:?}", response);
5030    ///     Ok(())
5031    /// }
5032    /// ```
5033    pub fn create_asset(&self) -> super::builder::dataplex_service::CreateAsset {
5034        super::builder::dataplex_service::CreateAsset::new(self.inner.clone())
5035    }
5036
5037    /// Updates an asset resource.
5038    ///
5039    /// # Long running operations
5040    ///
5041    /// This method is used to start, and/or poll a [long-running Operation].
5042    /// The [Working with long-running operations] chapter in the [user guide]
5043    /// covers these operations in detail.
5044    ///
5045    /// [long-running operation]: https://google.aip.dev/151
5046    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
5047    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
5048    ///
5049    /// # Example
5050    /// ```
5051    /// # use google_cloud_dataplex_v1::client::DataplexService;
5052    /// use google_cloud_lro::Poller;
5053    /// # extern crate wkt as google_cloud_wkt;
5054    /// use google_cloud_wkt::FieldMask;
5055    /// use google_cloud_dataplex_v1::model::Asset;
5056    /// use google_cloud_dataplex_v1::Result;
5057    /// async fn sample(
5058    ///    client: &DataplexService, name: &str
5059    /// ) -> Result<()> {
5060    ///     let response = client.update_asset()
5061    ///         .set_asset(
5062    ///             Asset::new().set_name(name)/* set fields */
5063    ///         )
5064    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
5065    ///         .poller().until_done().await?;
5066    ///     println!("response {:?}", response);
5067    ///     Ok(())
5068    /// }
5069    /// ```
5070    pub fn update_asset(&self) -> super::builder::dataplex_service::UpdateAsset {
5071        super::builder::dataplex_service::UpdateAsset::new(self.inner.clone())
5072    }
5073
5074    /// Deletes an asset resource. The referenced storage resource is detached
5075    /// (default) or deleted based on the associated Lifecycle policy.
5076    ///
5077    /// # Long running operations
5078    ///
5079    /// This method is used to start, and/or poll a [long-running Operation].
5080    /// The [Working with long-running operations] chapter in the [user guide]
5081    /// covers these operations in detail.
5082    ///
5083    /// [long-running operation]: https://google.aip.dev/151
5084    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
5085    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
5086    ///
5087    /// # Example
5088    /// ```
5089    /// # use google_cloud_dataplex_v1::client::DataplexService;
5090    /// use google_cloud_lro::Poller;
5091    /// use google_cloud_dataplex_v1::Result;
5092    /// async fn sample(
5093    ///    client: &DataplexService, name: &str
5094    /// ) -> Result<()> {
5095    ///     client.delete_asset()
5096    ///         .set_name(name)
5097    ///         .poller().until_done().await?;
5098    ///     Ok(())
5099    /// }
5100    /// ```
5101    pub fn delete_asset(&self) -> super::builder::dataplex_service::DeleteAsset {
5102        super::builder::dataplex_service::DeleteAsset::new(self.inner.clone())
5103    }
5104
5105    /// Lists asset resources in a zone.
5106    ///
5107    /// # Example
5108    /// ```
5109    /// # use google_cloud_dataplex_v1::client::DataplexService;
5110    /// use google_cloud_gax::paginator::ItemPaginator as _;
5111    /// use google_cloud_dataplex_v1::Result;
5112    /// async fn sample(
5113    ///    client: &DataplexService, parent: &str
5114    /// ) -> Result<()> {
5115    ///     let mut list = client.list_assets()
5116    ///         .set_parent(parent)
5117    ///         .by_item();
5118    ///     while let Some(item) = list.next().await.transpose()? {
5119    ///         println!("{:?}", item);
5120    ///     }
5121    ///     Ok(())
5122    /// }
5123    /// ```
5124    pub fn list_assets(&self) -> super::builder::dataplex_service::ListAssets {
5125        super::builder::dataplex_service::ListAssets::new(self.inner.clone())
5126    }
5127
5128    /// Retrieves an asset resource.
5129    ///
5130    /// # Example
5131    /// ```
5132    /// # use google_cloud_dataplex_v1::client::DataplexService;
5133    /// use google_cloud_dataplex_v1::Result;
5134    /// async fn sample(
5135    ///    client: &DataplexService, name: &str
5136    /// ) -> Result<()> {
5137    ///     let response = client.get_asset()
5138    ///         .set_name(name)
5139    ///         .send().await?;
5140    ///     println!("response {:?}", response);
5141    ///     Ok(())
5142    /// }
5143    /// ```
5144    pub fn get_asset(&self) -> super::builder::dataplex_service::GetAsset {
5145        super::builder::dataplex_service::GetAsset::new(self.inner.clone())
5146    }
5147
5148    /// Lists action resources in an asset.
5149    ///
5150    /// # Example
5151    /// ```
5152    /// # use google_cloud_dataplex_v1::client::DataplexService;
5153    /// use google_cloud_gax::paginator::ItemPaginator as _;
5154    /// use google_cloud_dataplex_v1::Result;
5155    /// async fn sample(
5156    ///    client: &DataplexService
5157    /// ) -> Result<()> {
5158    ///     let mut list = client.list_asset_actions()
5159    ///         /* set fields */
5160    ///         .by_item();
5161    ///     while let Some(item) = list.next().await.transpose()? {
5162    ///         println!("{:?}", item);
5163    ///     }
5164    ///     Ok(())
5165    /// }
5166    /// ```
5167    pub fn list_asset_actions(&self) -> super::builder::dataplex_service::ListAssetActions {
5168        super::builder::dataplex_service::ListAssetActions::new(self.inner.clone())
5169    }
5170
5171    /// Creates a task resource within a lake.
5172    ///
5173    /// # Long running operations
5174    ///
5175    /// This method is used to start, and/or poll a [long-running Operation].
5176    /// The [Working with long-running operations] chapter in the [user guide]
5177    /// covers these operations in detail.
5178    ///
5179    /// [long-running operation]: https://google.aip.dev/151
5180    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
5181    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
5182    ///
5183    /// # Example
5184    /// ```
5185    /// # use google_cloud_dataplex_v1::client::DataplexService;
5186    /// use google_cloud_lro::Poller;
5187    /// use google_cloud_dataplex_v1::model::Task;
5188    /// use google_cloud_dataplex_v1::Result;
5189    /// async fn sample(
5190    ///    client: &DataplexService, parent: &str
5191    /// ) -> Result<()> {
5192    ///     let response = client.create_task()
5193    ///         .set_parent(parent)
5194    ///         .set_task_id("task_id_value")
5195    ///         .set_task(
5196    ///             Task::new()/* set fields */
5197    ///         )
5198    ///         .poller().until_done().await?;
5199    ///     println!("response {:?}", response);
5200    ///     Ok(())
5201    /// }
5202    /// ```
5203    pub fn create_task(&self) -> super::builder::dataplex_service::CreateTask {
5204        super::builder::dataplex_service::CreateTask::new(self.inner.clone())
5205    }
5206
5207    /// Update the task resource.
5208    ///
5209    /// # Long running operations
5210    ///
5211    /// This method is used to start, and/or poll a [long-running Operation].
5212    /// The [Working with long-running operations] chapter in the [user guide]
5213    /// covers these operations in detail.
5214    ///
5215    /// [long-running operation]: https://google.aip.dev/151
5216    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
5217    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
5218    ///
5219    /// # Example
5220    /// ```
5221    /// # use google_cloud_dataplex_v1::client::DataplexService;
5222    /// use google_cloud_lro::Poller;
5223    /// # extern crate wkt as google_cloud_wkt;
5224    /// use google_cloud_wkt::FieldMask;
5225    /// use google_cloud_dataplex_v1::model::Task;
5226    /// use google_cloud_dataplex_v1::Result;
5227    /// async fn sample(
5228    ///    client: &DataplexService, name: &str
5229    /// ) -> Result<()> {
5230    ///     let response = client.update_task()
5231    ///         .set_task(
5232    ///             Task::new().set_name(name)/* set fields */
5233    ///         )
5234    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
5235    ///         .poller().until_done().await?;
5236    ///     println!("response {:?}", response);
5237    ///     Ok(())
5238    /// }
5239    /// ```
5240    pub fn update_task(&self) -> super::builder::dataplex_service::UpdateTask {
5241        super::builder::dataplex_service::UpdateTask::new(self.inner.clone())
5242    }
5243
5244    /// Delete the task resource.
5245    ///
5246    /// # Long running operations
5247    ///
5248    /// This method is used to start, and/or poll a [long-running Operation].
5249    /// The [Working with long-running operations] chapter in the [user guide]
5250    /// covers these operations in detail.
5251    ///
5252    /// [long-running operation]: https://google.aip.dev/151
5253    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
5254    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
5255    ///
5256    /// # Example
5257    /// ```
5258    /// # use google_cloud_dataplex_v1::client::DataplexService;
5259    /// use google_cloud_lro::Poller;
5260    /// use google_cloud_dataplex_v1::Result;
5261    /// async fn sample(
5262    ///    client: &DataplexService, name: &str
5263    /// ) -> Result<()> {
5264    ///     client.delete_task()
5265    ///         .set_name(name)
5266    ///         .poller().until_done().await?;
5267    ///     Ok(())
5268    /// }
5269    /// ```
5270    pub fn delete_task(&self) -> super::builder::dataplex_service::DeleteTask {
5271        super::builder::dataplex_service::DeleteTask::new(self.inner.clone())
5272    }
5273
5274    /// Lists tasks under the given lake.
5275    ///
5276    /// # Example
5277    /// ```
5278    /// # use google_cloud_dataplex_v1::client::DataplexService;
5279    /// use google_cloud_gax::paginator::ItemPaginator as _;
5280    /// use google_cloud_dataplex_v1::Result;
5281    /// async fn sample(
5282    ///    client: &DataplexService, parent: &str
5283    /// ) -> Result<()> {
5284    ///     let mut list = client.list_tasks()
5285    ///         .set_parent(parent)
5286    ///         .by_item();
5287    ///     while let Some(item) = list.next().await.transpose()? {
5288    ///         println!("{:?}", item);
5289    ///     }
5290    ///     Ok(())
5291    /// }
5292    /// ```
5293    pub fn list_tasks(&self) -> super::builder::dataplex_service::ListTasks {
5294        super::builder::dataplex_service::ListTasks::new(self.inner.clone())
5295    }
5296
5297    /// Get task resource.
5298    ///
5299    /// # Example
5300    /// ```
5301    /// # use google_cloud_dataplex_v1::client::DataplexService;
5302    /// use google_cloud_dataplex_v1::Result;
5303    /// async fn sample(
5304    ///    client: &DataplexService, name: &str
5305    /// ) -> Result<()> {
5306    ///     let response = client.get_task()
5307    ///         .set_name(name)
5308    ///         .send().await?;
5309    ///     println!("response {:?}", response);
5310    ///     Ok(())
5311    /// }
5312    /// ```
5313    pub fn get_task(&self) -> super::builder::dataplex_service::GetTask {
5314        super::builder::dataplex_service::GetTask::new(self.inner.clone())
5315    }
5316
5317    /// Lists Jobs under the given task.
5318    ///
5319    /// # Example
5320    /// ```
5321    /// # use google_cloud_dataplex_v1::client::DataplexService;
5322    /// use google_cloud_gax::paginator::ItemPaginator as _;
5323    /// use google_cloud_dataplex_v1::Result;
5324    /// async fn sample(
5325    ///    client: &DataplexService, parent: &str
5326    /// ) -> Result<()> {
5327    ///     let mut list = client.list_jobs()
5328    ///         .set_parent(parent)
5329    ///         .by_item();
5330    ///     while let Some(item) = list.next().await.transpose()? {
5331    ///         println!("{:?}", item);
5332    ///     }
5333    ///     Ok(())
5334    /// }
5335    /// ```
5336    pub fn list_jobs(&self) -> super::builder::dataplex_service::ListJobs {
5337        super::builder::dataplex_service::ListJobs::new(self.inner.clone())
5338    }
5339
5340    /// Run an on demand execution of a Task.
5341    ///
5342    /// # Example
5343    /// ```
5344    /// # use google_cloud_dataplex_v1::client::DataplexService;
5345    /// use google_cloud_dataplex_v1::Result;
5346    /// async fn sample(
5347    ///    client: &DataplexService
5348    /// ) -> Result<()> {
5349    ///     let response = client.run_task()
5350    ///         /* set fields */
5351    ///         .send().await?;
5352    ///     println!("response {:?}", response);
5353    ///     Ok(())
5354    /// }
5355    /// ```
5356    pub fn run_task(&self) -> super::builder::dataplex_service::RunTask {
5357        super::builder::dataplex_service::RunTask::new(self.inner.clone())
5358    }
5359
5360    /// Get job resource.
5361    ///
5362    /// # Example
5363    /// ```
5364    /// # use google_cloud_dataplex_v1::client::DataplexService;
5365    /// use google_cloud_dataplex_v1::Result;
5366    /// async fn sample(
5367    ///    client: &DataplexService, name: &str
5368    /// ) -> Result<()> {
5369    ///     let response = client.get_job()
5370    ///         .set_name(name)
5371    ///         .send().await?;
5372    ///     println!("response {:?}", response);
5373    ///     Ok(())
5374    /// }
5375    /// ```
5376    pub fn get_job(&self) -> super::builder::dataplex_service::GetJob {
5377        super::builder::dataplex_service::GetJob::new(self.inner.clone())
5378    }
5379
5380    /// Cancel jobs running for the task resource.
5381    ///
5382    /// # Example
5383    /// ```
5384    /// # use google_cloud_dataplex_v1::client::DataplexService;
5385    /// use google_cloud_dataplex_v1::Result;
5386    /// async fn sample(
5387    ///    client: &DataplexService
5388    /// ) -> Result<()> {
5389    ///     client.cancel_job()
5390    ///         /* set fields */
5391    ///         .send().await?;
5392    ///     Ok(())
5393    /// }
5394    /// ```
5395    pub fn cancel_job(&self) -> super::builder::dataplex_service::CancelJob {
5396        super::builder::dataplex_service::CancelJob::new(self.inner.clone())
5397    }
5398
5399    /// Create an environment resource.
5400    ///
5401    /// # Long running operations
5402    ///
5403    /// This method is used to start, and/or poll a [long-running Operation].
5404    /// The [Working with long-running operations] chapter in the [user guide]
5405    /// covers these operations in detail.
5406    ///
5407    /// [long-running operation]: https://google.aip.dev/151
5408    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
5409    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
5410    ///
5411    /// # Example
5412    /// ```
5413    /// # use google_cloud_dataplex_v1::client::DataplexService;
5414    /// use google_cloud_lro::Poller;
5415    /// use google_cloud_dataplex_v1::model::Environment;
5416    /// use google_cloud_dataplex_v1::Result;
5417    /// async fn sample(
5418    ///    client: &DataplexService, parent: &str
5419    /// ) -> Result<()> {
5420    ///     let response = client.create_environment()
5421    ///         .set_parent(parent)
5422    ///         .set_environment_id("environment_id_value")
5423    ///         .set_environment(
5424    ///             Environment::new()/* set fields */
5425    ///         )
5426    ///         .poller().until_done().await?;
5427    ///     println!("response {:?}", response);
5428    ///     Ok(())
5429    /// }
5430    /// ```
5431    pub fn create_environment(&self) -> super::builder::dataplex_service::CreateEnvironment {
5432        super::builder::dataplex_service::CreateEnvironment::new(self.inner.clone())
5433    }
5434
5435    /// Update the environment resource.
5436    ///
5437    /// # Long running operations
5438    ///
5439    /// This method is used to start, and/or poll a [long-running Operation].
5440    /// The [Working with long-running operations] chapter in the [user guide]
5441    /// covers these operations in detail.
5442    ///
5443    /// [long-running operation]: https://google.aip.dev/151
5444    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
5445    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
5446    ///
5447    /// # Example
5448    /// ```
5449    /// # use google_cloud_dataplex_v1::client::DataplexService;
5450    /// use google_cloud_lro::Poller;
5451    /// # extern crate wkt as google_cloud_wkt;
5452    /// use google_cloud_wkt::FieldMask;
5453    /// use google_cloud_dataplex_v1::model::Environment;
5454    /// use google_cloud_dataplex_v1::Result;
5455    /// async fn sample(
5456    ///    client: &DataplexService, name: &str
5457    /// ) -> Result<()> {
5458    ///     let response = client.update_environment()
5459    ///         .set_environment(
5460    ///             Environment::new().set_name(name)/* set fields */
5461    ///         )
5462    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
5463    ///         .poller().until_done().await?;
5464    ///     println!("response {:?}", response);
5465    ///     Ok(())
5466    /// }
5467    /// ```
5468    pub fn update_environment(&self) -> super::builder::dataplex_service::UpdateEnvironment {
5469        super::builder::dataplex_service::UpdateEnvironment::new(self.inner.clone())
5470    }
5471
5472    /// Delete the environment resource. All the child resources must have been
5473    /// deleted before environment deletion can be initiated.
5474    ///
5475    /// # Long running operations
5476    ///
5477    /// This method is used to start, and/or poll a [long-running Operation].
5478    /// The [Working with long-running operations] chapter in the [user guide]
5479    /// covers these operations in detail.
5480    ///
5481    /// [long-running operation]: https://google.aip.dev/151
5482    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
5483    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
5484    ///
5485    /// # Example
5486    /// ```
5487    /// # use google_cloud_dataplex_v1::client::DataplexService;
5488    /// use google_cloud_lro::Poller;
5489    /// use google_cloud_dataplex_v1::Result;
5490    /// async fn sample(
5491    ///    client: &DataplexService, name: &str
5492    /// ) -> Result<()> {
5493    ///     client.delete_environment()
5494    ///         .set_name(name)
5495    ///         .poller().until_done().await?;
5496    ///     Ok(())
5497    /// }
5498    /// ```
5499    pub fn delete_environment(&self) -> super::builder::dataplex_service::DeleteEnvironment {
5500        super::builder::dataplex_service::DeleteEnvironment::new(self.inner.clone())
5501    }
5502
5503    /// Lists environments under the given lake.
5504    ///
5505    /// # Example
5506    /// ```
5507    /// # use google_cloud_dataplex_v1::client::DataplexService;
5508    /// use google_cloud_gax::paginator::ItemPaginator as _;
5509    /// use google_cloud_dataplex_v1::Result;
5510    /// async fn sample(
5511    ///    client: &DataplexService, parent: &str
5512    /// ) -> Result<()> {
5513    ///     let mut list = client.list_environments()
5514    ///         .set_parent(parent)
5515    ///         .by_item();
5516    ///     while let Some(item) = list.next().await.transpose()? {
5517    ///         println!("{:?}", item);
5518    ///     }
5519    ///     Ok(())
5520    /// }
5521    /// ```
5522    pub fn list_environments(&self) -> super::builder::dataplex_service::ListEnvironments {
5523        super::builder::dataplex_service::ListEnvironments::new(self.inner.clone())
5524    }
5525
5526    /// Get environment resource.
5527    ///
5528    /// # Example
5529    /// ```
5530    /// # use google_cloud_dataplex_v1::client::DataplexService;
5531    /// use google_cloud_dataplex_v1::Result;
5532    /// async fn sample(
5533    ///    client: &DataplexService, name: &str
5534    /// ) -> Result<()> {
5535    ///     let response = client.get_environment()
5536    ///         .set_name(name)
5537    ///         .send().await?;
5538    ///     println!("response {:?}", response);
5539    ///     Ok(())
5540    /// }
5541    /// ```
5542    pub fn get_environment(&self) -> super::builder::dataplex_service::GetEnvironment {
5543        super::builder::dataplex_service::GetEnvironment::new(self.inner.clone())
5544    }
5545
5546    /// Lists session resources in an environment.
5547    ///
5548    /// # Example
5549    /// ```
5550    /// # use google_cloud_dataplex_v1::client::DataplexService;
5551    /// use google_cloud_gax::paginator::ItemPaginator as _;
5552    /// use google_cloud_dataplex_v1::Result;
5553    /// async fn sample(
5554    ///    client: &DataplexService, parent: &str
5555    /// ) -> Result<()> {
5556    ///     let mut list = client.list_sessions()
5557    ///         .set_parent(parent)
5558    ///         .by_item();
5559    ///     while let Some(item) = list.next().await.transpose()? {
5560    ///         println!("{:?}", item);
5561    ///     }
5562    ///     Ok(())
5563    /// }
5564    /// ```
5565    pub fn list_sessions(&self) -> super::builder::dataplex_service::ListSessions {
5566        super::builder::dataplex_service::ListSessions::new(self.inner.clone())
5567    }
5568
5569    /// Lists information about the supported locations for this service.
5570    ///
5571    /// # Example
5572    /// ```
5573    /// # use google_cloud_dataplex_v1::client::DataplexService;
5574    /// use google_cloud_gax::paginator::ItemPaginator as _;
5575    /// use google_cloud_dataplex_v1::Result;
5576    /// async fn sample(
5577    ///    client: &DataplexService
5578    /// ) -> Result<()> {
5579    ///     let mut list = client.list_locations()
5580    ///         /* set fields */
5581    ///         .by_item();
5582    ///     while let Some(item) = list.next().await.transpose()? {
5583    ///         println!("{:?}", item);
5584    ///     }
5585    ///     Ok(())
5586    /// }
5587    /// ```
5588    pub fn list_locations(&self) -> super::builder::dataplex_service::ListLocations {
5589        super::builder::dataplex_service::ListLocations::new(self.inner.clone())
5590    }
5591
5592    /// Gets information about a location.
5593    ///
5594    /// # Example
5595    /// ```
5596    /// # use google_cloud_dataplex_v1::client::DataplexService;
5597    /// use google_cloud_dataplex_v1::Result;
5598    /// async fn sample(
5599    ///    client: &DataplexService
5600    /// ) -> Result<()> {
5601    ///     let response = client.get_location()
5602    ///         /* set fields */
5603    ///         .send().await?;
5604    ///     println!("response {:?}", response);
5605    ///     Ok(())
5606    /// }
5607    /// ```
5608    pub fn get_location(&self) -> super::builder::dataplex_service::GetLocation {
5609        super::builder::dataplex_service::GetLocation::new(self.inner.clone())
5610    }
5611
5612    /// Sets the access control policy on the specified resource. Replaces
5613    /// any existing policy.
5614    ///
5615    /// Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
5616    /// errors.
5617    ///
5618    /// # Example
5619    /// ```
5620    /// # use google_cloud_dataplex_v1::client::DataplexService;
5621    /// use google_cloud_dataplex_v1::Result;
5622    /// async fn sample(
5623    ///    client: &DataplexService
5624    /// ) -> Result<()> {
5625    ///     let response = client.set_iam_policy()
5626    ///         /* set fields */
5627    ///         .send().await?;
5628    ///     println!("response {:?}", response);
5629    ///     Ok(())
5630    /// }
5631    /// ```
5632    pub fn set_iam_policy(&self) -> super::builder::dataplex_service::SetIamPolicy {
5633        super::builder::dataplex_service::SetIamPolicy::new(self.inner.clone())
5634    }
5635
5636    /// Gets the access control policy for a resource. Returns an empty policy
5637    /// if the resource exists and does not have a policy set.
5638    ///
5639    /// # Example
5640    /// ```
5641    /// # use google_cloud_dataplex_v1::client::DataplexService;
5642    /// use google_cloud_dataplex_v1::Result;
5643    /// async fn sample(
5644    ///    client: &DataplexService
5645    /// ) -> Result<()> {
5646    ///     let response = client.get_iam_policy()
5647    ///         /* set fields */
5648    ///         .send().await?;
5649    ///     println!("response {:?}", response);
5650    ///     Ok(())
5651    /// }
5652    /// ```
5653    pub fn get_iam_policy(&self) -> super::builder::dataplex_service::GetIamPolicy {
5654        super::builder::dataplex_service::GetIamPolicy::new(self.inner.clone())
5655    }
5656
5657    /// Returns permissions that a caller has on the specified resource. If the
5658    /// resource does not exist, this will return an empty set of
5659    /// permissions, not a `NOT_FOUND` error.
5660    ///
5661    /// Note: This operation is designed to be used for building
5662    /// permission-aware UIs and command-line tools, not for authorization
5663    /// checking. This operation may "fail open" without warning.
5664    ///
5665    /// # Example
5666    /// ```
5667    /// # use google_cloud_dataplex_v1::client::DataplexService;
5668    /// use google_cloud_dataplex_v1::Result;
5669    /// async fn sample(
5670    ///    client: &DataplexService
5671    /// ) -> Result<()> {
5672    ///     let response = client.test_iam_permissions()
5673    ///         /* set fields */
5674    ///         .send().await?;
5675    ///     println!("response {:?}", response);
5676    ///     Ok(())
5677    /// }
5678    /// ```
5679    pub fn test_iam_permissions(&self) -> super::builder::dataplex_service::TestIamPermissions {
5680        super::builder::dataplex_service::TestIamPermissions::new(self.inner.clone())
5681    }
5682
5683    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
5684    ///
5685    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
5686    ///
5687    /// # Example
5688    /// ```
5689    /// # use google_cloud_dataplex_v1::client::DataplexService;
5690    /// use google_cloud_gax::paginator::ItemPaginator as _;
5691    /// use google_cloud_dataplex_v1::Result;
5692    /// async fn sample(
5693    ///    client: &DataplexService
5694    /// ) -> Result<()> {
5695    ///     let mut list = client.list_operations()
5696    ///         /* set fields */
5697    ///         .by_item();
5698    ///     while let Some(item) = list.next().await.transpose()? {
5699    ///         println!("{:?}", item);
5700    ///     }
5701    ///     Ok(())
5702    /// }
5703    /// ```
5704    pub fn list_operations(&self) -> super::builder::dataplex_service::ListOperations {
5705        super::builder::dataplex_service::ListOperations::new(self.inner.clone())
5706    }
5707
5708    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
5709    ///
5710    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
5711    ///
5712    /// # Example
5713    /// ```
5714    /// # use google_cloud_dataplex_v1::client::DataplexService;
5715    /// use google_cloud_dataplex_v1::Result;
5716    /// async fn sample(
5717    ///    client: &DataplexService
5718    /// ) -> Result<()> {
5719    ///     let response = client.get_operation()
5720    ///         /* set fields */
5721    ///         .send().await?;
5722    ///     println!("response {:?}", response);
5723    ///     Ok(())
5724    /// }
5725    /// ```
5726    pub fn get_operation(&self) -> super::builder::dataplex_service::GetOperation {
5727        super::builder::dataplex_service::GetOperation::new(self.inner.clone())
5728    }
5729
5730    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
5731    ///
5732    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
5733    ///
5734    /// # Example
5735    /// ```
5736    /// # use google_cloud_dataplex_v1::client::DataplexService;
5737    /// use google_cloud_dataplex_v1::Result;
5738    /// async fn sample(
5739    ///    client: &DataplexService
5740    /// ) -> Result<()> {
5741    ///     client.delete_operation()
5742    ///         /* set fields */
5743    ///         .send().await?;
5744    ///     Ok(())
5745    /// }
5746    /// ```
5747    pub fn delete_operation(&self) -> super::builder::dataplex_service::DeleteOperation {
5748        super::builder::dataplex_service::DeleteOperation::new(self.inner.clone())
5749    }
5750
5751    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
5752    ///
5753    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
5754    ///
5755    /// # Example
5756    /// ```
5757    /// # use google_cloud_dataplex_v1::client::DataplexService;
5758    /// use google_cloud_dataplex_v1::Result;
5759    /// async fn sample(
5760    ///    client: &DataplexService
5761    /// ) -> Result<()> {
5762    ///     client.cancel_operation()
5763    ///         /* set fields */
5764    ///         .send().await?;
5765    ///     Ok(())
5766    /// }
5767    /// ```
5768    pub fn cancel_operation(&self) -> super::builder::dataplex_service::CancelOperation {
5769        super::builder::dataplex_service::CancelOperation::new(self.inner.clone())
5770    }
5771}