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