Skip to main content

unitycatalog_client/codegen/
client.rs

1// @generated — do not edit by hand.
2#![allow(unused_imports)]
3use crate::codegen::agent_skills::*;
4use crate::codegen::agents::*;
5use crate::codegen::catalogs::*;
6use crate::codegen::credentials::*;
7use crate::codegen::entity_tag_assignments::*;
8use crate::codegen::external_locations::*;
9use crate::codegen::functions::*;
10use crate::codegen::model_versions::*;
11use crate::codegen::policies::*;
12use crate::codegen::providers::*;
13use crate::codegen::recipients::*;
14use crate::codegen::registered_models::*;
15use crate::codegen::schemas::*;
16use crate::codegen::shares::*;
17use crate::codegen::staging_tables::*;
18use crate::codegen::tables::*;
19use crate::codegen::tag_policies::*;
20use crate::codegen::temporary_credentials::*;
21use crate::codegen::volumes::*;
22use olai_http::CloudClient;
23use unitycatalog_common::models::agent_skills::v0alpha1::*;
24use unitycatalog_common::models::agents::v0alpha1::*;
25use unitycatalog_common::models::catalogs::v1::*;
26use unitycatalog_common::models::credentials::v1::*;
27use unitycatalog_common::models::external_locations::v1::*;
28use unitycatalog_common::models::functions::v1::*;
29use unitycatalog_common::models::model_versions::v1::*;
30use unitycatalog_common::models::policies::v1::*;
31use unitycatalog_common::models::providers::v1::*;
32use unitycatalog_common::models::recipients::v1::*;
33use unitycatalog_common::models::registered_models::v1::*;
34use unitycatalog_common::models::schemas::v1::*;
35use unitycatalog_common::models::shares::v1::*;
36use unitycatalog_common::models::staging_tables::v1::*;
37use unitycatalog_common::models::tables::v1::*;
38use unitycatalog_common::models::tags::v1::*;
39use unitycatalog_common::models::temporary_credentials::v1::*;
40use unitycatalog_common::models::volumes::v1::*;
41use url::Url;
42#[derive(Clone)]
43pub struct UnityCatalogClient {
44    client: CloudClient,
45    base_url: Url,
46}
47impl UnityCatalogClient {
48    /// Create a new aggregate client from a cloud client and base URL.
49    ///
50    /// Per-service clients are constructed on demand (they only hold a cheaply-cloneable
51    /// `CloudClient` + `Url`), so nothing is allocated per service here.
52    pub fn new(client: CloudClient, mut base_url: Url) -> Self {
53        if !base_url.path().ends_with('/') {
54            base_url.set_path(&format!("{}/", base_url.path()));
55        }
56        Self { client, base_url }
57    }
58    /// Create a new aggregate client with no authentication.
59    pub fn new_unauthenticated(base_url: Url) -> Self {
60        Self::new(CloudClient::new_unauthenticated(), base_url)
61    }
62    /// Create a new aggregate client authenticating with a bearer token.
63    pub fn new_with_token(base_url: Url, token: impl ToString) -> Self {
64        Self::new(CloudClient::new_with_token(token), base_url)
65    }
66    ///Low-level `agent_skills` client exposing request/response passthrough methods.
67    pub fn agent_skills_client(&self) -> crate::codegen::agent_skills::AgentSkillServiceClient {
68        crate::codegen::agent_skills::AgentSkillServiceClient::new(
69            self.client.clone(),
70            self.base_url.clone(),
71        )
72    }
73    ///Low-level `agents` client exposing request/response passthrough methods.
74    pub fn agents_client(&self) -> crate::codegen::agents::AgentServiceClient {
75        crate::codegen::agents::AgentServiceClient::new(self.client.clone(), self.base_url.clone())
76    }
77    ///Low-level `catalogs` client exposing request/response passthrough methods.
78    pub fn catalogs_client(&self) -> crate::codegen::catalogs::CatalogServiceClient {
79        crate::codegen::catalogs::CatalogServiceClient::new(
80            self.client.clone(),
81            self.base_url.clone(),
82        )
83    }
84    ///Low-level `credentials` client exposing request/response passthrough methods.
85    pub fn credentials_client(&self) -> crate::codegen::credentials::CredentialServiceClient {
86        crate::codegen::credentials::CredentialServiceClient::new(
87            self.client.clone(),
88            self.base_url.clone(),
89        )
90    }
91    ///Low-level `entity_tag_assignments` client exposing request/response passthrough methods.
92    pub fn entity_tag_assignments_client(
93        &self,
94    ) -> crate::codegen::entity_tag_assignments::EntityTagAssignmentClient {
95        crate::codegen::entity_tag_assignments::EntityTagAssignmentClient::new(
96            self.client.clone(),
97            self.base_url.clone(),
98        )
99    }
100    ///Low-level `external_locations` client exposing request/response passthrough methods.
101    pub fn external_locations_client(
102        &self,
103    ) -> crate::codegen::external_locations::ExternalLocationServiceClient {
104        crate::codegen::external_locations::ExternalLocationServiceClient::new(
105            self.client.clone(),
106            self.base_url.clone(),
107        )
108    }
109    ///Low-level `functions` client exposing request/response passthrough methods.
110    pub fn functions_client(&self) -> crate::codegen::functions::FunctionServiceClient {
111        crate::codegen::functions::FunctionServiceClient::new(
112            self.client.clone(),
113            self.base_url.clone(),
114        )
115    }
116    ///Low-level `model_versions` client exposing request/response passthrough methods.
117    pub fn model_versions_client(
118        &self,
119    ) -> crate::codegen::model_versions::ModelVersionServiceClient {
120        crate::codegen::model_versions::ModelVersionServiceClient::new(
121            self.client.clone(),
122            self.base_url.clone(),
123        )
124    }
125    ///Low-level `policies` client exposing request/response passthrough methods.
126    pub fn policies_client(&self) -> crate::codegen::policies::PolicyServiceClient {
127        crate::codegen::policies::PolicyServiceClient::new(
128            self.client.clone(),
129            self.base_url.clone(),
130        )
131    }
132    ///Low-level `providers` client exposing request/response passthrough methods.
133    pub fn providers_client(&self) -> crate::codegen::providers::ProviderServiceClient {
134        crate::codegen::providers::ProviderServiceClient::new(
135            self.client.clone(),
136            self.base_url.clone(),
137        )
138    }
139    ///Low-level `recipients` client exposing request/response passthrough methods.
140    pub fn recipients_client(&self) -> crate::codegen::recipients::RecipientServiceClient {
141        crate::codegen::recipients::RecipientServiceClient::new(
142            self.client.clone(),
143            self.base_url.clone(),
144        )
145    }
146    ///Low-level `registered_models` client exposing request/response passthrough methods.
147    pub fn registered_models_client(
148        &self,
149    ) -> crate::codegen::registered_models::RegisteredModelServiceClient {
150        crate::codegen::registered_models::RegisteredModelServiceClient::new(
151            self.client.clone(),
152            self.base_url.clone(),
153        )
154    }
155    ///Low-level `schemas` client exposing request/response passthrough methods.
156    pub fn schemas_client(&self) -> crate::codegen::schemas::SchemaServiceClient {
157        crate::codegen::schemas::SchemaServiceClient::new(
158            self.client.clone(),
159            self.base_url.clone(),
160        )
161    }
162    ///Low-level `shares` client exposing request/response passthrough methods.
163    pub fn shares_client(&self) -> crate::codegen::shares::ShareServiceClient {
164        crate::codegen::shares::ShareServiceClient::new(self.client.clone(), self.base_url.clone())
165    }
166    ///Low-level `staging_tables` client exposing request/response passthrough methods.
167    pub fn staging_tables_client(
168        &self,
169    ) -> crate::codegen::staging_tables::StagingTableServiceClient {
170        crate::codegen::staging_tables::StagingTableServiceClient::new(
171            self.client.clone(),
172            self.base_url.clone(),
173        )
174    }
175    ///Low-level `tables` client exposing request/response passthrough methods.
176    pub fn tables_client(&self) -> crate::codegen::tables::TableServiceClient {
177        crate::codegen::tables::TableServiceClient::new(self.client.clone(), self.base_url.clone())
178    }
179    ///Low-level `tag_policies` client exposing request/response passthrough methods.
180    pub fn tag_policies_client(&self) -> crate::codegen::tag_policies::TagPolicyServiceClient {
181        crate::codegen::tag_policies::TagPolicyServiceClient::new(
182            self.client.clone(),
183            self.base_url.clone(),
184        )
185    }
186    ///Low-level `temporary_credentials` client exposing request/response passthrough methods.
187    pub fn temporary_credentials_client(
188        &self,
189    ) -> crate::codegen::temporary_credentials::TemporaryCredentialClient {
190        crate::codegen::temporary_credentials::TemporaryCredentialClient::new(
191            self.client.clone(),
192            self.base_url.clone(),
193        )
194    }
195    ///Low-level `volumes` client exposing request/response passthrough methods.
196    pub fn volumes_client(&self) -> crate::codegen::volumes::VolumeServiceClient {
197        crate::codegen::volumes::VolumeServiceClient::new(
198            self.client.clone(),
199            self.base_url.clone(),
200        )
201    }
202    /// Lists agent skills.
203    ///
204    /// # Arguments
205    ///
206    /// * `catalog_name` - The identifier of the catalog.
207    /// * `schema_name` - The identifier of the schema.
208    pub fn list_agent_skills(
209        &self,
210        catalog_name: impl Into<String>,
211        schema_name: impl Into<String>,
212    ) -> ListAgentSkillsBuilder {
213        ListAgentSkillsBuilder::new(
214            crate::codegen::agent_skills::AgentSkillServiceClient::new(
215                self.client.clone(),
216                self.base_url.clone(),
217            ),
218            catalog_name,
219            schema_name,
220        )
221    }
222    /// # Arguments
223    ///
224    /// * `catalog_name` - The identifier of the catalog.
225    /// * `schema_name` - The identifier of the schema.
226    /// * `name` - The identifier of the agent skill.
227    /// * `agent_skill_type` - How the storage location is provisioned (external or managed).
228    pub fn create_agent_skill(
229        &self,
230        catalog_name: impl Into<String>,
231        schema_name: impl Into<String>,
232        name: impl Into<String>,
233        agent_skill_type: AgentSkillType,
234    ) -> CreateAgentSkillBuilder {
235        CreateAgentSkillBuilder::new(
236            crate::codegen::agent_skills::AgentSkillServiceClient::new(
237                self.client.clone(),
238                self.base_url.clone(),
239            ),
240            catalog_name,
241            schema_name,
242            name,
243            agent_skill_type,
244        )
245    }
246    /// Access the `agent_skill` resource scoped to the given name.
247    pub fn agent_skill(
248        &self,
249        catalog_name: impl Into<String>,
250        schema_name: impl Into<String>,
251        agent_skill_name: impl Into<String>,
252    ) -> AgentSkillClient {
253        AgentSkillClient::new(
254            catalog_name,
255            schema_name,
256            agent_skill_name,
257            crate::codegen::agent_skills::AgentSkillServiceClient::new(
258                self.client.clone(),
259                self.base_url.clone(),
260            ),
261        )
262    }
263    /// Access the `agent_skill` resource from its dot-joined full name.
264    pub fn agent_skill_from_full_name(&self, full_name: impl Into<String>) -> AgentSkillClient {
265        AgentSkillClient::from_full_name(
266            full_name,
267            crate::codegen::agent_skills::AgentSkillServiceClient::new(
268                self.client.clone(),
269                self.base_url.clone(),
270            ),
271        )
272    }
273    /// Lists agents.
274    ///
275    /// # Arguments
276    ///
277    /// * `catalog_name` - The identifier of the catalog.
278    /// * `schema_name` - The identifier of the schema.
279    pub fn list_agents(
280        &self,
281        catalog_name: impl Into<String>,
282        schema_name: impl Into<String>,
283    ) -> ListAgentsBuilder {
284        ListAgentsBuilder::new(
285            crate::codegen::agents::AgentServiceClient::new(
286                self.client.clone(),
287                self.base_url.clone(),
288            ),
289            catalog_name,
290            schema_name,
291        )
292    }
293    /// # Arguments
294    ///
295    /// * `catalog_name` - The identifier of the catalog.
296    /// * `schema_name` - The identifier of the schema.
297    /// * `name` - The identifier of the agent.
298    /// * `invocation_protocol` - The protocol a recipient uses to invoke the agent.
299    /// * `endpoint` - The agent's invocation endpoint URL.
300    pub fn create_agent(
301        &self,
302        catalog_name: impl Into<String>,
303        schema_name: impl Into<String>,
304        name: impl Into<String>,
305        invocation_protocol: InvocationProtocol,
306        endpoint: impl Into<String>,
307    ) -> CreateAgentBuilder {
308        CreateAgentBuilder::new(
309            crate::codegen::agents::AgentServiceClient::new(
310                self.client.clone(),
311                self.base_url.clone(),
312            ),
313            catalog_name,
314            schema_name,
315            name,
316            invocation_protocol,
317            endpoint,
318        )
319    }
320    /// Access the `agent` resource scoped to the given name.
321    pub fn agent(
322        &self,
323        catalog_name: impl Into<String>,
324        schema_name: impl Into<String>,
325        agent_name: impl Into<String>,
326    ) -> AgentClient {
327        AgentClient::new(
328            catalog_name,
329            schema_name,
330            agent_name,
331            crate::codegen::agents::AgentServiceClient::new(
332                self.client.clone(),
333                self.base_url.clone(),
334            ),
335        )
336    }
337    /// Access the `agent` resource from its dot-joined full name.
338    pub fn agent_from_full_name(&self, full_name: impl Into<String>) -> AgentClient {
339        AgentClient::from_full_name(
340            full_name,
341            crate::codegen::agents::AgentServiceClient::new(
342                self.client.clone(),
343                self.base_url.clone(),
344            ),
345        )
346    }
347    /// List catalogs
348    ///
349    /// Gets an array of catalogs in the metastore. If the caller is the metastore admin,
350    /// all catalogs will be retrieved. Otherwise, only catalogs owned by the caller
351    /// (or for which the caller has the USE_CATALOG privilege) will be retrieved.
352    /// There is no guarantee of a specific ordering of the elements in the array.
353    pub fn list_catalogs(&self) -> ListCatalogsBuilder {
354        ListCatalogsBuilder::new(crate::codegen::catalogs::CatalogServiceClient::new(
355            self.client.clone(),
356            self.base_url.clone(),
357        ))
358    }
359    /// Create a new catalog
360    ///
361    /// Creates a new catalog instance in the parent metastore if the caller
362    /// is a metastore admin or has the CREATE_CATALOG privilege.
363    ///
364    /// # Arguments
365    ///
366    /// * `name` - Name of catalog.
367    pub fn create_catalog(&self, name: impl Into<String>) -> CreateCatalogBuilder {
368        CreateCatalogBuilder::new(
369            crate::codegen::catalogs::CatalogServiceClient::new(
370                self.client.clone(),
371                self.base_url.clone(),
372            ),
373            name,
374        )
375    }
376    /// Access the `catalog` resource scoped to the given name.
377    pub fn catalog(&self, catalog_name: impl Into<String>) -> CatalogClient {
378        CatalogClient::new(
379            catalog_name,
380            crate::codegen::catalogs::CatalogServiceClient::new(
381                self.client.clone(),
382                self.base_url.clone(),
383            ),
384        )
385    }
386    pub fn list_credentials(&self) -> ListCredentialsBuilder {
387        ListCredentialsBuilder::new(crate::codegen::credentials::CredentialServiceClient::new(
388            self.client.clone(),
389            self.base_url.clone(),
390        ))
391    }
392    /// # Arguments
393    ///
394    /// * `name` - The credential name. The name must be unique among storage and service credentials within the metastore.
395    /// * `purpose` - Indicates the purpose of the credential.
396    pub fn create_credential(
397        &self,
398        name: impl Into<String>,
399        purpose: Purpose,
400    ) -> CreateCredentialBuilder {
401        CreateCredentialBuilder::new(
402            crate::codegen::credentials::CredentialServiceClient::new(
403                self.client.clone(),
404                self.base_url.clone(),
405            ),
406            name,
407            purpose,
408        )
409    }
410    /// Access the `credential` resource scoped to the given name.
411    pub fn credential(&self, credential_name: impl Into<String>) -> CredentialClient {
412        CredentialClient::new(
413            credential_name,
414            crate::codegen::credentials::CredentialServiceClient::new(
415                self.client.clone(),
416                self.base_url.clone(),
417            ),
418        )
419    }
420    /// List entity tag assignments
421    ///
422    /// Gets the tag assignments for the specified entity.
423    ///
424    /// # Arguments
425    ///
426    /// * `entity_type` - The type of the entity whose tag assignments to list.
427    /// * `entity_name` - The fully qualified name of the entity whose tag assignments to list.
428    pub fn list_entity_tag_assignments(
429        &self,
430        entity_type: impl Into<String>,
431        entity_name: impl Into<String>,
432    ) -> ListEntityTagAssignmentsBuilder {
433        ListEntityTagAssignmentsBuilder::new(
434            crate::codegen::entity_tag_assignments::EntityTagAssignmentClient::new(
435                self.client.clone(),
436                self.base_url.clone(),
437            ),
438            entity_type,
439            entity_name,
440        )
441    }
442    /// Create an entity tag assignment
443    ///
444    /// Assigns a tag to a Unity Catalog entity.
445    ///
446    /// # Arguments
447    ///
448    /// * `tag_assignment` - The tag assignment to create.
449    pub fn create_entity_tag_assignment(
450        &self,
451        tag_assignment: EntityTagAssignment,
452    ) -> CreateEntityTagAssignmentBuilder {
453        CreateEntityTagAssignmentBuilder::new(
454            crate::codegen::entity_tag_assignments::EntityTagAssignmentClient::new(
455                self.client.clone(),
456                self.base_url.clone(),
457            ),
458            tag_assignment,
459        )
460    }
461    /// Get an entity tag assignment
462    ///
463    /// Gets the tag assignment for the specified entity and tag key.
464    ///
465    /// # Arguments
466    ///
467    /// * `entity_type` - The type of the entity to which the tag is assigned.
468    /// * `entity_name` - The fully qualified name of the entity to which the tag is assigned.
469    /// * `tag_key` - The key of the tag.
470    pub fn get_entity_tag_assignment(
471        &self,
472        entity_type: impl Into<String>,
473        entity_name: impl Into<String>,
474        tag_key: impl Into<String>,
475    ) -> GetEntityTagAssignmentBuilder {
476        GetEntityTagAssignmentBuilder::new(
477            crate::codegen::entity_tag_assignments::EntityTagAssignmentClient::new(
478                self.client.clone(),
479                self.base_url.clone(),
480            ),
481            entity_type,
482            entity_name,
483            tag_key,
484        )
485    }
486    /// Update an entity tag assignment
487    ///
488    /// Updates the tag assignment for the specified entity and tag key.
489    ///
490    /// # Arguments
491    ///
492    /// * `entity_type` - The type of the entity to which the tag is assigned.
493    /// * `entity_name` - The fully qualified name of the entity to which the tag is assigned.
494    /// * `tag_key` - The key of the tag to update.
495    /// * `tag_assignment` - The tag assignment with the updated fields.
496    pub fn update_entity_tag_assignment(
497        &self,
498        entity_type: impl Into<String>,
499        entity_name: impl Into<String>,
500        tag_key: impl Into<String>,
501        tag_assignment: EntityTagAssignment,
502    ) -> UpdateEntityTagAssignmentBuilder {
503        UpdateEntityTagAssignmentBuilder::new(
504            crate::codegen::entity_tag_assignments::EntityTagAssignmentClient::new(
505                self.client.clone(),
506                self.base_url.clone(),
507            ),
508            entity_type,
509            entity_name,
510            tag_key,
511            tag_assignment,
512        )
513    }
514    /// Delete an entity tag assignment
515    ///
516    /// Deletes the tag assignment for the specified entity and tag key.
517    ///
518    /// # Arguments
519    ///
520    /// * `entity_type` - The type of the entity to which the tag is assigned.
521    /// * `entity_name` - The fully qualified name of the entity to which the tag is assigned.
522    /// * `tag_key` - The key of the tag to delete.
523    pub fn delete_entity_tag_assignment(
524        &self,
525        entity_type: impl Into<String>,
526        entity_name: impl Into<String>,
527        tag_key: impl Into<String>,
528    ) -> DeleteEntityTagAssignmentBuilder {
529        DeleteEntityTagAssignmentBuilder::new(
530            crate::codegen::entity_tag_assignments::EntityTagAssignmentClient::new(
531                self.client.clone(),
532                self.base_url.clone(),
533            ),
534            entity_type,
535            entity_name,
536            tag_key,
537        )
538    }
539    /// List external locations
540    pub fn list_external_locations(&self) -> ListExternalLocationsBuilder {
541        ListExternalLocationsBuilder::new(
542            crate::codegen::external_locations::ExternalLocationServiceClient::new(
543                self.client.clone(),
544                self.base_url.clone(),
545            ),
546        )
547    }
548    /// Create a new external location
549    ///
550    /// # Arguments
551    ///
552    /// * `name` - Name of external location.
553    /// * `url` - Path URL of the external location.
554    /// * `credential_name` - Name of the storage credential used with this location.
555    pub fn create_external_location(
556        &self,
557        name: impl Into<String>,
558        url: impl Into<String>,
559        credential_name: impl Into<String>,
560    ) -> CreateExternalLocationBuilder {
561        CreateExternalLocationBuilder::new(
562            crate::codegen::external_locations::ExternalLocationServiceClient::new(
563                self.client.clone(),
564                self.base_url.clone(),
565            ),
566            name,
567            url,
568            credential_name,
569        )
570    }
571    /// Access the `external_location` resource scoped to the given name.
572    pub fn external_location(
573        &self,
574        external_location_name: impl Into<String>,
575    ) -> ExternalLocationClient {
576        ExternalLocationClient::new(
577            external_location_name,
578            crate::codegen::external_locations::ExternalLocationServiceClient::new(
579                self.client.clone(),
580                self.base_url.clone(),
581            ),
582        )
583    }
584    /// List functions
585    ///
586    /// List functions within the specified parent catalog and schema. If the caller is the metastore
587    /// admin, all functions are returned in the response. Otherwise, the caller must have USE_CATALOG
588    /// on the parent catalog and USE_SCHEMA on the parent schema, and the function must either be
589    /// owned by the caller or have SELECT on the function.
590    ///
591    /// # Arguments
592    ///
593    /// * `catalog_name` - Name of parent catalog for functions of interest.
594    /// * `schema_name` - Parent schema of functions.
595    pub fn list_functions(
596        &self,
597        catalog_name: impl Into<String>,
598        schema_name: impl Into<String>,
599    ) -> ListFunctionsBuilder {
600        ListFunctionsBuilder::new(
601            crate::codegen::functions::FunctionServiceClient::new(
602                self.client.clone(),
603                self.base_url.clone(),
604            ),
605            catalog_name,
606            schema_name,
607        )
608    }
609    /// Create a function
610    ///
611    /// Creates a new function. The caller must be a metastore admin or have the CREATE_FUNCTION
612    /// privilege on the parent catalog and schema.
613    ///
614    /// # Arguments
615    ///
616    /// * `function_info` - The function to create.
617    pub fn create_function(&self, function_info: CreateFunction) -> CreateFunctionBuilder {
618        CreateFunctionBuilder::new(
619            crate::codegen::functions::FunctionServiceClient::new(
620                self.client.clone(),
621                self.base_url.clone(),
622            ),
623            function_info,
624        )
625    }
626    /// Access the `function` resource scoped to the given name.
627    pub fn function(
628        &self,
629        catalog_name: impl Into<String>,
630        schema_name: impl Into<String>,
631        function_name: impl Into<String>,
632    ) -> FunctionClient {
633        FunctionClient::new(
634            catalog_name,
635            schema_name,
636            function_name,
637            crate::codegen::functions::FunctionServiceClient::new(
638                self.client.clone(),
639                self.base_url.clone(),
640            ),
641        )
642    }
643    /// Access the `function` resource from its dot-joined full name.
644    pub fn function_from_full_name(&self, full_name: impl Into<String>) -> FunctionClient {
645        FunctionClient::from_full_name(
646            full_name,
647            crate::codegen::functions::FunctionServiceClient::new(
648                self.client.clone(),
649                self.base_url.clone(),
650            ),
651        )
652    }
653    /// List model versions
654    ///
655    /// List the model versions of the specified registered model. If the caller is
656    /// the metastore admin, all model versions are returned. Otherwise, the caller
657    /// must have the appropriate privileges on the parent model.
658    ///
659    /// # Arguments
660    ///
661    /// * `full_name` - The full three-level name of the registered model (catalog.schema.model)
662    /// whose versions are being listed.
663    pub fn list_model_versions(&self, full_name: impl Into<String>) -> ListModelVersionsBuilder {
664        ListModelVersionsBuilder::new(
665            crate::codegen::model_versions::ModelVersionServiceClient::new(
666                self.client.clone(),
667                self.base_url.clone(),
668            ),
669            full_name,
670        )
671    }
672    /// Create a model version
673    ///
674    /// Creates a new model version in PENDING_REGISTRATION status. The server
675    /// assigns the version number and a storage location for the artifacts. The
676    /// caller must be a metastore admin or the owner of the parent registered model.
677    ///
678    /// # Arguments
679    ///
680    /// * `model_name` - Name of the parent registered model, relative to parent schema.
681    /// * `catalog_name` - Name of parent catalog.
682    /// * `schema_name` - Name of parent schema.
683    /// * `source` - URI indicating the location of the source artifacts (e.g. an MLflow run
684    /// artifact path) used to create the model version.
685    pub fn create_model_version(
686        &self,
687        model_name: impl Into<String>,
688        catalog_name: impl Into<String>,
689        schema_name: impl Into<String>,
690        source: impl Into<String>,
691    ) -> CreateModelVersionBuilder {
692        CreateModelVersionBuilder::new(
693            crate::codegen::model_versions::ModelVersionServiceClient::new(
694                self.client.clone(),
695                self.base_url.clone(),
696            ),
697            model_name,
698            catalog_name,
699            schema_name,
700            source,
701        )
702    }
703    /// Get a model version
704    ///
705    /// Gets a model version by its parent model name and version number.
706    ///
707    /// # Arguments
708    ///
709    /// * `full_name` - The full three-level name of the parent registered model
710    /// (catalog.schema.model).
711    /// * `version` - The integer version number of the model version.
712    pub fn get_model_version(
713        &self,
714        full_name: impl Into<String>,
715        version: i64,
716    ) -> GetModelVersionBuilder {
717        GetModelVersionBuilder::new(
718            crate::codegen::model_versions::ModelVersionServiceClient::new(
719                self.client.clone(),
720                self.base_url.clone(),
721            ),
722            full_name,
723            version,
724        )
725    }
726    /// Update a model version
727    ///
728    /// Updates the model version that matches the supplied name and version.
729    ///
730    /// # Arguments
731    ///
732    /// * `full_name` - The full three-level name of the parent registered model
733    /// (catalog.schema.model).
734    /// * `version` - The integer version number of the model version.
735    pub fn update_model_version(
736        &self,
737        full_name: impl Into<String>,
738        version: i64,
739    ) -> UpdateModelVersionBuilder {
740        UpdateModelVersionBuilder::new(
741            crate::codegen::model_versions::ModelVersionServiceClient::new(
742                self.client.clone(),
743                self.base_url.clone(),
744            ),
745            full_name,
746            version,
747        )
748    }
749    /// Delete a model version
750    ///
751    /// Deletes the model version that matches the supplied name and version. For the
752    /// deletion to succeed, the caller must be the owner of the parent registered
753    /// model.
754    ///
755    /// # Arguments
756    ///
757    /// * `full_name` - The full three-level name of the parent registered model
758    /// (catalog.schema.model).
759    /// * `version` - The integer version number of the model version.
760    pub fn delete_model_version(
761        &self,
762        full_name: impl Into<String>,
763        version: i64,
764    ) -> DeleteModelVersionBuilder {
765        DeleteModelVersionBuilder::new(
766            crate::codegen::model_versions::ModelVersionServiceClient::new(
767                self.client.clone(),
768                self.base_url.clone(),
769            ),
770            full_name,
771            version,
772        )
773    }
774    /// Finalize a model version
775    ///
776    /// Transitions a model version to READY once all artifacts have been written to
777    /// its storage location.
778    ///
779    /// # Arguments
780    ///
781    /// * `full_name` - The full three-level name of the parent registered model
782    /// (catalog.schema.model).
783    /// * `version` - The integer version number of the model version to finalize.
784    pub fn finalize_model_version(
785        &self,
786        full_name: impl Into<String>,
787        version: i64,
788    ) -> FinalizeModelVersionBuilder {
789        FinalizeModelVersionBuilder::new(
790            crate::codegen::model_versions::ModelVersionServiceClient::new(
791                self.client.clone(),
792                self.base_url.clone(),
793            ),
794            full_name,
795            version,
796        )
797    }
798    /// List policies
799    ///
800    /// Gets an array of policies defined on the specified securable. There is no guarantee
801    /// of a specific ordering of the elements in the array.
802    ///
803    /// # Arguments
804    ///
805    /// * `on_securable_type` - The type of the securable to list policies on.
806    ///
807    /// Supported values: catalogs, schemas, tables.
808    /// * `on_securable_fullname` - The fully qualified name of the securable to list policies on.
809    pub fn list_policies(
810        &self,
811        on_securable_type: impl Into<String>,
812        on_securable_fullname: impl Into<String>,
813    ) -> ListPoliciesBuilder {
814        ListPoliciesBuilder::new(
815            crate::codegen::policies::PolicyServiceClient::new(
816                self.client.clone(),
817                self.base_url.clone(),
818            ),
819            on_securable_type,
820            on_securable_fullname,
821        )
822    }
823    /// Access the `policy` resource scoped to the given name.
824    pub fn policy(&self, policy_name: impl Into<String>) -> PolicyClient {
825        PolicyClient::new(
826            policy_name,
827            crate::codegen::policies::PolicyServiceClient::new(
828                self.client.clone(),
829                self.base_url.clone(),
830            ),
831        )
832    }
833    /// List providers.
834    pub fn list_providers(&self) -> ListProvidersBuilder {
835        ListProvidersBuilder::new(crate::codegen::providers::ProviderServiceClient::new(
836            self.client.clone(),
837            self.base_url.clone(),
838        ))
839    }
840    /// Create a new provider.
841    ///
842    /// # Arguments
843    ///
844    /// * `name` - Name of the provider.
845    /// * `authentication_type` - The delta sharing authentication type.
846    pub fn create_provider(
847        &self,
848        name: impl Into<String>,
849        authentication_type: ProviderAuthenticationType,
850    ) -> CreateProviderBuilder {
851        CreateProviderBuilder::new(
852            crate::codegen::providers::ProviderServiceClient::new(
853                self.client.clone(),
854                self.base_url.clone(),
855            ),
856            name,
857            authentication_type,
858        )
859    }
860    /// Access the `provider` resource scoped to the given name.
861    pub fn provider(&self, provider_name: impl Into<String>) -> ProviderClient {
862        ProviderClient::new(
863            provider_name,
864            crate::codegen::providers::ProviderServiceClient::new(
865                self.client.clone(),
866                self.base_url.clone(),
867            ),
868        )
869    }
870    /// List recipients.
871    pub fn list_recipients(&self) -> ListRecipientsBuilder {
872        ListRecipientsBuilder::new(crate::codegen::recipients::RecipientServiceClient::new(
873            self.client.clone(),
874            self.base_url.clone(),
875        ))
876    }
877    /// Create a new recipient.
878    ///
879    /// # Arguments
880    ///
881    /// * `name` - Name of the recipient.
882    /// * `authentication_type` - The delta sharing authentication type.
883    /// * `owner` - Username of the recipient owner.
884    pub fn create_recipient(
885        &self,
886        name: impl Into<String>,
887        authentication_type: AuthenticationType,
888        owner: impl Into<String>,
889    ) -> CreateRecipientBuilder {
890        CreateRecipientBuilder::new(
891            crate::codegen::recipients::RecipientServiceClient::new(
892                self.client.clone(),
893                self.base_url.clone(),
894            ),
895            name,
896            authentication_type,
897            owner,
898        )
899    }
900    /// Access the `recipient` resource scoped to the given name.
901    pub fn recipient(&self, recipient_name: impl Into<String>) -> RecipientClient {
902        RecipientClient::new(
903            recipient_name,
904            crate::codegen::recipients::RecipientServiceClient::new(
905                self.client.clone(),
906                self.base_url.clone(),
907            ),
908        )
909    }
910    /// List registered models
911    ///
912    /// List registered models within the specified parent catalog and schema. If
913    /// the caller is the metastore admin, all registered models are returned in the
914    /// response. Otherwise, the caller must have USE_CATALOG on the parent catalog
915    /// and USE_SCHEMA on the parent schema, and the model must either be owned by
916    /// the caller or the caller must have a privilege on the model.
917    pub fn list_registered_models(&self) -> ListRegisteredModelsBuilder {
918        ListRegisteredModelsBuilder::new(
919            crate::codegen::registered_models::RegisteredModelServiceClient::new(
920                self.client.clone(),
921                self.base_url.clone(),
922            ),
923        )
924    }
925    /// Create a registered model
926    ///
927    /// Creates a new registered model. The caller must be a metastore admin or have
928    /// the CREATE_MODEL privilege on the parent catalog and schema.
929    ///
930    /// # Arguments
931    ///
932    /// * `name` - Name of registered model, relative to parent schema.
933    /// * `catalog_name` - Name of parent catalog.
934    /// * `schema_name` - Name of parent schema.
935    pub fn create_registered_model(
936        &self,
937        name: impl Into<String>,
938        catalog_name: impl Into<String>,
939        schema_name: impl Into<String>,
940    ) -> CreateRegisteredModelBuilder {
941        CreateRegisteredModelBuilder::new(
942            crate::codegen::registered_models::RegisteredModelServiceClient::new(
943                self.client.clone(),
944                self.base_url.clone(),
945            ),
946            name,
947            catalog_name,
948            schema_name,
949        )
950    }
951    /// Access the `registered_model` resource scoped to the given name.
952    pub fn registered_model(
953        &self,
954        catalog_name: impl Into<String>,
955        schema_name: impl Into<String>,
956        registered_model_name: impl Into<String>,
957    ) -> RegisteredModelClient {
958        RegisteredModelClient::new(
959            catalog_name,
960            schema_name,
961            registered_model_name,
962            crate::codegen::registered_models::RegisteredModelServiceClient::new(
963                self.client.clone(),
964                self.base_url.clone(),
965            ),
966        )
967    }
968    /// Access the `registered_model` resource from its dot-joined full name.
969    pub fn registered_model_from_full_name(
970        &self,
971        full_name: impl Into<String>,
972    ) -> RegisteredModelClient {
973        RegisteredModelClient::from_full_name(
974            full_name,
975            crate::codegen::registered_models::RegisteredModelServiceClient::new(
976                self.client.clone(),
977                self.base_url.clone(),
978            ),
979        )
980    }
981    /// Gets an array of schemas for a catalog in the metastore. If the caller is the metastore
982    /// admin or the owner of the parent catalog, all schemas for the catalog will be retrieved.
983    /// Otherwise, only schemas owned by the caller (or for which the caller has the USE_SCHEMA privilege)
984    /// will be retrieved. There is no guarantee of a specific ordering of the elements in the array.
985    ///
986    /// # Arguments
987    ///
988    /// * `catalog_name` - Name of parent catalog.
989    pub fn list_schemas(&self, catalog_name: impl Into<String>) -> ListSchemasBuilder {
990        ListSchemasBuilder::new(
991            crate::codegen::schemas::SchemaServiceClient::new(
992                self.client.clone(),
993                self.base_url.clone(),
994            ),
995            catalog_name,
996        )
997    }
998    /// Creates a new schema for catalog in the Metatastore. The caller must be a metastore admin,
999    /// or have the CREATE_SCHEMA privilege in the parent catalog.
1000    ///
1001    /// # Arguments
1002    ///
1003    /// * `name` - Name of schema, relative to parent catalog.
1004    /// * `catalog_name` - Name of parent catalog.
1005    pub fn create_schema(
1006        &self,
1007        name: impl Into<String>,
1008        catalog_name: impl Into<String>,
1009    ) -> CreateSchemaBuilder {
1010        CreateSchemaBuilder::new(
1011            crate::codegen::schemas::SchemaServiceClient::new(
1012                self.client.clone(),
1013                self.base_url.clone(),
1014            ),
1015            name,
1016            catalog_name,
1017        )
1018    }
1019    /// Access the `schema` resource scoped to the given name.
1020    pub fn schema(
1021        &self,
1022        catalog_name: impl Into<String>,
1023        schema_name: impl Into<String>,
1024    ) -> SchemaClient {
1025        SchemaClient::new(
1026            catalog_name,
1027            schema_name,
1028            crate::codegen::schemas::SchemaServiceClient::new(
1029                self.client.clone(),
1030                self.base_url.clone(),
1031            ),
1032        )
1033    }
1034    /// Access the `schema` resource from its dot-joined full name.
1035    pub fn schema_from_full_name(&self, full_name: impl Into<String>) -> SchemaClient {
1036        SchemaClient::from_full_name(
1037            full_name,
1038            crate::codegen::schemas::SchemaServiceClient::new(
1039                self.client.clone(),
1040                self.base_url.clone(),
1041            ),
1042        )
1043    }
1044    /// List shares.
1045    pub fn list_shares(&self) -> ListSharesBuilder {
1046        ListSharesBuilder::new(crate::codegen::shares::ShareServiceClient::new(
1047            self.client.clone(),
1048            self.base_url.clone(),
1049        ))
1050    }
1051    /// Create a new share.
1052    ///
1053    /// # Arguments
1054    ///
1055    /// * `name` - Name of the share.
1056    pub fn create_share(&self, name: impl Into<String>) -> CreateShareBuilder {
1057        CreateShareBuilder::new(
1058            crate::codegen::shares::ShareServiceClient::new(
1059                self.client.clone(),
1060                self.base_url.clone(),
1061            ),
1062            name,
1063        )
1064    }
1065    /// Access the `share` resource scoped to the given name.
1066    pub fn share(&self, share_name: impl Into<String>) -> ShareClient {
1067        ShareClient::new(
1068            share_name,
1069            crate::codegen::shares::ShareServiceClient::new(
1070                self.client.clone(),
1071                self.base_url.clone(),
1072            ),
1073        )
1074    }
1075    /// Creates a new staging table, allocating an immutable table id and a storage
1076    /// location under the parent schema/catalog managed storage root. The caller
1077    /// must have the CREATE privilege on the parent schema.
1078    ///
1079    /// # Arguments
1080    ///
1081    /// * `name` - Name of the staging table, relative to the parent schema.
1082    /// * `catalog_name` - Name of the parent catalog.
1083    /// * `schema_name` - Name of the parent schema relative to its parent catalog.
1084    pub fn create_staging_table(
1085        &self,
1086        name: impl Into<String>,
1087        catalog_name: impl Into<String>,
1088        schema_name: impl Into<String>,
1089    ) -> CreateStagingTableBuilder {
1090        CreateStagingTableBuilder::new(
1091            crate::codegen::staging_tables::StagingTableServiceClient::new(
1092                self.client.clone(),
1093                self.base_url.clone(),
1094            ),
1095            name,
1096            catalog_name,
1097            schema_name,
1098        )
1099    }
1100    /// Access the `staging_table` resource scoped to the given name.
1101    pub fn staging_table(&self, staging_table_name: impl Into<String>) -> StagingTableClient {
1102        StagingTableClient::new(
1103            staging_table_name,
1104            crate::codegen::staging_tables::StagingTableServiceClient::new(
1105                self.client.clone(),
1106                self.base_url.clone(),
1107            ),
1108        )
1109    }
1110    /// Gets an array of summaries for tables for a schema and catalog within the metastore. The table summaries returned are either:
1111    /// - summaries for tables (within the current metastore and parent catalog and schema), when the user is a metastore admin, or:
1112    /// - summaries for tables and schemas (within the current metastore and parent catalog) for which the user has ownership or the
1113    /// SELECT privilege on the table and ownership or USE_SCHEMA privilege on the schema, provided that the user also has ownership
1114    /// or the USE_CATALOG privilege on the parent catalog.
1115    ///
1116    /// There is no guarantee of a specific ordering of the elements in the array.
1117    ///
1118    /// # Arguments
1119    ///
1120    /// * `catalog_name` - Name of parent catalog for tables of interest.
1121    pub fn list_table_summaries(
1122        &self,
1123        catalog_name: impl Into<String>,
1124    ) -> ListTableSummariesBuilder {
1125        ListTableSummariesBuilder::new(
1126            crate::codegen::tables::TableServiceClient::new(
1127                self.client.clone(),
1128                self.base_url.clone(),
1129            ),
1130            catalog_name,
1131        )
1132    }
1133    /// Gets an array of all tables for the current metastore under the parent catalog and schema.
1134    ///
1135    /// The caller must be a metastore admin or an owner of (or have the SELECT privilege on) the table.
1136    /// For the latter case, the caller must also be the owner or have the USE_CATALOG privilege on the
1137    /// parent catalog and the USE_SCHEMA privilege on the parent schema. There is no guarantee of a
1138    /// specific ordering of the elements in the array.
1139    ///
1140    /// # Arguments
1141    ///
1142    /// * `catalog_name` - Name of parent catalog for tables of interest.
1143    /// * `schema_name` - Name of parent schema for tables of interest.
1144    pub fn list_tables(
1145        &self,
1146        catalog_name: impl Into<String>,
1147        schema_name: impl Into<String>,
1148    ) -> ListTablesBuilder {
1149        ListTablesBuilder::new(
1150            crate::codegen::tables::TableServiceClient::new(
1151                self.client.clone(),
1152                self.base_url.clone(),
1153            ),
1154            catalog_name,
1155            schema_name,
1156        )
1157    }
1158    /// Create a table
1159    ///
1160    /// # Arguments
1161    ///
1162    /// * `name` - Name of table, relative to parent schema.
1163    /// * `schema_name` - Name of parent schema relative to its parent catalog.
1164    /// * `catalog_name` - Name of parent catalog.
1165    pub fn create_table(
1166        &self,
1167        name: impl Into<String>,
1168        schema_name: impl Into<String>,
1169        catalog_name: impl Into<String>,
1170        table_type: TableType,
1171        data_source_format: DataSourceFormat,
1172    ) -> CreateTableBuilder {
1173        CreateTableBuilder::new(
1174            crate::codegen::tables::TableServiceClient::new(
1175                self.client.clone(),
1176                self.base_url.clone(),
1177            ),
1178            name,
1179            schema_name,
1180            catalog_name,
1181            table_type,
1182            data_source_format,
1183        )
1184    }
1185    /// Access the `table` resource scoped to the given name.
1186    pub fn table(
1187        &self,
1188        catalog_name: impl Into<String>,
1189        schema_name: impl Into<String>,
1190        table_name: impl Into<String>,
1191    ) -> TableClient {
1192        TableClient::new(
1193            catalog_name,
1194            schema_name,
1195            table_name,
1196            crate::codegen::tables::TableServiceClient::new(
1197                self.client.clone(),
1198                self.base_url.clone(),
1199            ),
1200        )
1201    }
1202    /// Access the `table` resource from its dot-joined full name.
1203    pub fn table_from_full_name(&self, full_name: impl Into<String>) -> TableClient {
1204        TableClient::from_full_name(
1205            full_name,
1206            crate::codegen::tables::TableServiceClient::new(
1207                self.client.clone(),
1208                self.base_url.clone(),
1209            ),
1210        )
1211    }
1212    /// List tag policies
1213    ///
1214    /// Gets an array of tag policies. There is no guarantee of a specific ordering
1215    /// of the elements in the array.
1216    pub fn list_tag_policies(&self) -> ListTagPoliciesBuilder {
1217        ListTagPoliciesBuilder::new(crate::codegen::tag_policies::TagPolicyServiceClient::new(
1218            self.client.clone(),
1219            self.base_url.clone(),
1220        ))
1221    }
1222    /// Create a new tag policy
1223    ///
1224    /// Creates a new governed tag definition.
1225    ///
1226    /// # Arguments
1227    ///
1228    /// * `tag_policy` - The tag policy to create.
1229    pub fn create_tag_policy(&self, tag_policy: TagPolicy) -> CreateTagPolicyBuilder {
1230        CreateTagPolicyBuilder::new(
1231            crate::codegen::tag_policies::TagPolicyServiceClient::new(
1232                self.client.clone(),
1233                self.base_url.clone(),
1234            ),
1235            tag_policy,
1236        )
1237    }
1238    /// Access the `tag_policy` resource scoped to the given name.
1239    pub fn tag_policy(&self, tag_policy_name: impl Into<String>) -> TagPolicyClient {
1240        TagPolicyClient::new(
1241            tag_policy_name,
1242            crate::codegen::tag_policies::TagPolicyServiceClient::new(
1243                self.client.clone(),
1244                self.base_url.clone(),
1245            ),
1246        )
1247    }
1248    /// Generate a new set of credentials for a table.
1249    ///
1250    /// # Arguments
1251    ///
1252    /// * `table_id` - UUID of the table to read or write.
1253    /// * `operation` - The operation performed against the table data, either READ or READ_WRITE.
1254    /// If READ_WRITE is specified, the credentials returned will have write
1255    /// permissions, otherwise, it will be read only.
1256    pub fn generate_temporary_table_credentials(
1257        &self,
1258        table_id: impl Into<String>,
1259        operation: generate_temporary_table_credentials_request::Operation,
1260    ) -> GenerateTemporaryTableCredentialsBuilder {
1261        GenerateTemporaryTableCredentialsBuilder::new(
1262            crate::codegen::temporary_credentials::TemporaryCredentialClient::new(
1263                self.client.clone(),
1264                self.base_url.clone(),
1265            ),
1266            table_id,
1267            operation,
1268        )
1269    }
1270    /// Generate a new set of credentials for a path.
1271    ///
1272    /// # Arguments
1273    ///
1274    /// * `url` - URL for path-based access.
1275    /// * `operation` - The operation being performed on the path.
1276    pub fn generate_temporary_path_credentials(
1277        &self,
1278        url: impl Into<String>,
1279        operation: generate_temporary_path_credentials_request::Operation,
1280    ) -> GenerateTemporaryPathCredentialsBuilder {
1281        GenerateTemporaryPathCredentialsBuilder::new(
1282            crate::codegen::temporary_credentials::TemporaryCredentialClient::new(
1283                self.client.clone(),
1284                self.base_url.clone(),
1285            ),
1286            url,
1287            operation,
1288        )
1289    }
1290    /// Generate a new set of credentials for a volume.
1291    ///
1292    /// The metastore must have the `external_access_enabled` flag set to true
1293    /// (default false). The caller must have the `EXTERNAL_USE_SCHEMA`
1294    /// privilege on the parent schema (granted by a catalog owner).
1295    ///
1296    /// # Arguments
1297    ///
1298    /// * `volume_id` - UUID of the volume to read or write.
1299    /// * `operation` - The operation performed against the volume data, either READ_VOLUME or
1300    /// WRITE_VOLUME. If WRITE_VOLUME is specified, the credentials returned will
1301    /// have write permissions, otherwise, it will be read only.
1302    pub fn generate_temporary_volume_credentials(
1303        &self,
1304        volume_id: impl Into<String>,
1305        operation: generate_temporary_volume_credentials_request::Operation,
1306    ) -> GenerateTemporaryVolumeCredentialsBuilder {
1307        GenerateTemporaryVolumeCredentialsBuilder::new(
1308            crate::codegen::temporary_credentials::TemporaryCredentialClient::new(
1309                self.client.clone(),
1310                self.base_url.clone(),
1311            ),
1312            volume_id,
1313            operation,
1314        )
1315    }
1316    /// Generate a new set of credentials for a model version.
1317    ///
1318    /// The metastore must have the `external_access_enabled` flag set to true
1319    /// (default false). The caller must have the `EXTERNAL_USE_SCHEMA`
1320    /// privilege on the parent schema (granted by a catalog owner).
1321    ///
1322    /// # Arguments
1323    ///
1324    /// * `catalog_name` - Name of parent catalog of the model version.
1325    /// * `schema_name` - Name of parent schema of the model version.
1326    /// * `model_name` - Name of the parent registered model.
1327    /// * `version` - The integer version number of the model version.
1328    /// * `operation` - The operation performed against the model version data, either
1329    /// READ_MODEL_VERSION or READ_WRITE_MODEL_VERSION. If READ_WRITE_MODEL_VERSION
1330    /// is specified, the credentials returned will have write permissions,
1331    /// otherwise, it will be read only.
1332    pub fn generate_temporary_model_version_credentials(
1333        &self,
1334        catalog_name: impl Into<String>,
1335        schema_name: impl Into<String>,
1336        model_name: impl Into<String>,
1337        version: i64,
1338        operation: generate_temporary_model_version_credentials_request::Operation,
1339    ) -> GenerateTemporaryModelVersionCredentialsBuilder {
1340        GenerateTemporaryModelVersionCredentialsBuilder::new(
1341            crate::codegen::temporary_credentials::TemporaryCredentialClient::new(
1342                self.client.clone(),
1343                self.base_url.clone(),
1344            ),
1345            catalog_name,
1346            schema_name,
1347            model_name,
1348            version,
1349            operation,
1350        )
1351    }
1352    /// Lists volumes.
1353    ///
1354    /// # Arguments
1355    ///
1356    /// * `catalog_name` - The identifier of the catalog
1357    /// * `schema_name` - The identifier of the schema
1358    pub fn list_volumes(
1359        &self,
1360        catalog_name: impl Into<String>,
1361        schema_name: impl Into<String>,
1362    ) -> ListVolumesBuilder {
1363        ListVolumesBuilder::new(
1364            crate::codegen::volumes::VolumeServiceClient::new(
1365                self.client.clone(),
1366                self.base_url.clone(),
1367            ),
1368            catalog_name,
1369            schema_name,
1370        )
1371    }
1372    /// # Arguments
1373    ///
1374    /// * `catalog_name` - The identifier of the catalog
1375    /// * `schema_name` - The identifier of the schema
1376    /// * `name` - The identifier of the volume
1377    /// * `volume_type` - The type of the volume.
1378    ///
1379    /// An external volume is located in the specified external location.
1380    /// A managed volume is located in the default location which is specified
1381    /// by the parent schema, or the parent catalog, or the Metastore.
1382    pub fn create_volume(
1383        &self,
1384        catalog_name: impl Into<String>,
1385        schema_name: impl Into<String>,
1386        name: impl Into<String>,
1387        volume_type: VolumeType,
1388    ) -> CreateVolumeBuilder {
1389        CreateVolumeBuilder::new(
1390            crate::codegen::volumes::VolumeServiceClient::new(
1391                self.client.clone(),
1392                self.base_url.clone(),
1393            ),
1394            catalog_name,
1395            schema_name,
1396            name,
1397            volume_type,
1398        )
1399    }
1400    /// Access the `volume` resource scoped to the given name.
1401    pub fn volume(
1402        &self,
1403        catalog_name: impl Into<String>,
1404        schema_name: impl Into<String>,
1405        volume_name: impl Into<String>,
1406    ) -> VolumeClient {
1407        VolumeClient::new(
1408            catalog_name,
1409            schema_name,
1410            volume_name,
1411            crate::codegen::volumes::VolumeServiceClient::new(
1412                self.client.clone(),
1413                self.base_url.clone(),
1414            ),
1415        )
1416    }
1417    /// Access the `volume` resource from its dot-joined full name.
1418    pub fn volume_from_full_name(&self, full_name: impl Into<String>) -> VolumeClient {
1419        VolumeClient::from_full_name(
1420            full_name,
1421            crate::codegen::volumes::VolumeServiceClient::new(
1422                self.client.clone(),
1423                self.base_url.clone(),
1424            ),
1425        )
1426    }
1427}