Skip to main content

unitycatalog_client/codegen/model_versions/
client.rs

1// @generated — do not edit by hand.
2#![allow(unused_imports)]
3use crate::Result;
4#[cfg(not(target_arch = "wasm32"))]
5use ::olai_http::CloudClient as Transport;
6#[cfg(target_arch = "wasm32")]
7use ::olai_http_wasm::WasmClient as Transport;
8use unitycatalog_common::models::model_versions::v1::*;
9use url::Url;
10/// HTTP client for service operations
11#[derive(Clone)]
12pub struct ModelVersionServiceClient {
13    pub(crate) client: Transport,
14    pub(crate) base_url: Url,
15}
16impl ModelVersionServiceClient {
17    /// Create a new client instance
18    pub fn new(client: Transport, mut base_url: Url) -> Self {
19        if !base_url.path().ends_with('/') {
20            base_url.set_path(&format!("{}/", base_url.path()));
21        }
22        Self { client, base_url }
23    }
24    /// List model versions
25    ///
26    /// List the model versions of the specified registered model. If the caller is
27    /// the metastore admin, all model versions are returned. Otherwise, the caller
28    /// must have the appropriate privileges on the parent model.
29    pub async fn list_model_versions(
30        &self,
31        request: &ListModelVersionsRequest,
32    ) -> Result<ListModelVersionsResponse> {
33        let formatted_path = format!("models/{}/versions", request.full_name);
34        let mut url = self.base_url.join(&formatted_path)?;
35        if let Some(ref value) = request.max_results {
36            url.query_pairs_mut()
37                .append_pair("max_results", &value.to_string());
38        }
39        if let Some(ref value) = request.page_token {
40            url.query_pairs_mut()
41                .append_pair("page_token", &value.to_string());
42        }
43        if let Some(ref value) = request.include_browse {
44            url.query_pairs_mut()
45                .append_pair("include_browse", &value.to_string());
46        }
47        let response = self.client.get(url).send().await?;
48        if !response.status().is_success() {
49            return Err(crate::error::parse_error_response(response).await);
50        }
51        let result = response.bytes().await?;
52        Ok(serde_json::from_slice(&result)?)
53    }
54    /// Create a model version
55    ///
56    /// Creates a new model version in PENDING_REGISTRATION status. The server
57    /// assigns the version number and a storage location for the artifacts. The
58    /// caller must be a metastore admin or the owner of the parent registered model.
59    pub async fn create_model_version(
60        &self,
61        request: &CreateModelVersionRequest,
62    ) -> Result<ModelVersion> {
63        let url = self.base_url.join("models/versions")?;
64        let response = self.client.post(url).json(request).send().await?;
65        if !response.status().is_success() {
66            return Err(crate::error::parse_error_response(response).await);
67        }
68        let result = response.bytes().await?;
69        Ok(serde_json::from_slice(&result)?)
70    }
71    /// Get a model version
72    ///
73    /// Gets a model version by its parent model name and version number.
74    pub async fn get_model_version(
75        &self,
76        request: &GetModelVersionRequest,
77    ) -> Result<ModelVersion> {
78        let formatted_path = format!("models/{}/versions/{}", request.full_name, request.version);
79        let mut url = self.base_url.join(&formatted_path)?;
80        if let Some(ref value) = request.include_browse {
81            url.query_pairs_mut()
82                .append_pair("include_browse", &value.to_string());
83        }
84        let response = self.client.get(url).send().await?;
85        if !response.status().is_success() {
86            return Err(crate::error::parse_error_response(response).await);
87        }
88        let result = response.bytes().await?;
89        Ok(serde_json::from_slice(&result)?)
90    }
91    /// Update a model version
92    ///
93    /// Updates the model version that matches the supplied name and version.
94    pub async fn update_model_version(
95        &self,
96        request: &UpdateModelVersionRequest,
97    ) -> Result<ModelVersion> {
98        let formatted_path = format!("models/{}/versions/{}", request.full_name, request.version);
99        let url = self.base_url.join(&formatted_path)?;
100        let response = self.client.patch(url).json(request).send().await?;
101        if !response.status().is_success() {
102            return Err(crate::error::parse_error_response(response).await);
103        }
104        let result = response.bytes().await?;
105        Ok(serde_json::from_slice(&result)?)
106    }
107    /// Delete a model version
108    ///
109    /// Deletes the model version that matches the supplied name and version. For the
110    /// deletion to succeed, the caller must be the owner of the parent registered
111    /// model.
112    pub async fn delete_model_version(&self, request: &DeleteModelVersionRequest) -> Result<()> {
113        let formatted_path = format!("models/{}/versions/{}", request.full_name, request.version);
114        let url = self.base_url.join(&formatted_path)?;
115        let response = self.client.delete(url).send().await?;
116        if !response.status().is_success() {
117            return Err(crate::error::parse_error_response(response).await);
118        }
119        Ok(())
120    }
121    /// Finalize a model version
122    ///
123    /// Transitions a model version to READY once all artifacts have been written to
124    /// its storage location.
125    pub async fn finalize_model_version(
126        &self,
127        request: &FinalizeModelVersionRequest,
128    ) -> Result<ModelVersion> {
129        let formatted_path = format!(
130            "models/{}/versions/{}/finalize",
131            request.full_name, request.version
132        );
133        let url = self.base_url.join(&formatted_path)?;
134        let response = self.client.patch(url).json(request).send().await?;
135        if !response.status().is_success() {
136            return Err(crate::error::parse_error_response(response).await);
137        }
138        let result = response.bytes().await?;
139        Ok(serde_json::from_slice(&result)?)
140    }
141}