lance_namespace_reqwest_client/apis/
metadata_api.rs

1/*
2 * Lance Namespace Specification
3 *
4 * This OpenAPI specification is a part of the Lance namespace specification. It contains 2 parts:  The `components/schemas`, `components/responses`, `components/examples`, `tags` sections define the request and response shape for each operation in a Lance Namespace across all implementations. See https://lancedb.github.io/lance-namespace/spec/operations for more details.  The `servers`, `security`, `paths`, `components/parameters` sections are for the  Lance REST Namespace implementation, which defines a complete REST server that can work with Lance datasets. See https://lancedb.github.io/lance-namespace/spec/impls/rest for more details. 
5 *
6 * The version of the OpenAPI document: 1.0.0
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18/// struct for typed errors of method [`alter_table_alter_columns`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum AlterTableAlterColumnsError {
22    Status400(models::ErrorResponse),
23    Status401(models::ErrorResponse),
24    Status403(models::ErrorResponse),
25    Status404(models::ErrorResponse),
26    Status503(models::ErrorResponse),
27    Status5XX(models::ErrorResponse),
28    UnknownValue(serde_json::Value),
29}
30
31/// struct for typed errors of method [`alter_table_drop_columns`]
32#[derive(Debug, Clone, Serialize, Deserialize)]
33#[serde(untagged)]
34pub enum AlterTableDropColumnsError {
35    Status400(models::ErrorResponse),
36    Status401(models::ErrorResponse),
37    Status403(models::ErrorResponse),
38    Status404(models::ErrorResponse),
39    Status503(models::ErrorResponse),
40    Status5XX(models::ErrorResponse),
41    UnknownValue(serde_json::Value),
42}
43
44/// struct for typed errors of method [`alter_transaction`]
45#[derive(Debug, Clone, Serialize, Deserialize)]
46#[serde(untagged)]
47pub enum AlterTransactionError {
48    Status400(models::ErrorResponse),
49    Status401(models::ErrorResponse),
50    Status403(models::ErrorResponse),
51    Status404(models::ErrorResponse),
52    Status409(models::ErrorResponse),
53    Status503(models::ErrorResponse),
54    Status5XX(models::ErrorResponse),
55    UnknownValue(serde_json::Value),
56}
57
58/// struct for typed errors of method [`create_empty_table`]
59#[derive(Debug, Clone, Serialize, Deserialize)]
60#[serde(untagged)]
61pub enum CreateEmptyTableError {
62    Status400(models::ErrorResponse),
63    Status401(models::ErrorResponse),
64    Status403(models::ErrorResponse),
65    Status404(models::ErrorResponse),
66    Status409(models::ErrorResponse),
67    Status503(models::ErrorResponse),
68    Status5XX(models::ErrorResponse),
69    UnknownValue(serde_json::Value),
70}
71
72/// struct for typed errors of method [`create_namespace`]
73#[derive(Debug, Clone, Serialize, Deserialize)]
74#[serde(untagged)]
75pub enum CreateNamespaceError {
76    Status400(models::ErrorResponse),
77    Status401(models::ErrorResponse),
78    Status403(models::ErrorResponse),
79    Status404(models::ErrorResponse),
80    Status406(models::ErrorResponse),
81    Status409(models::ErrorResponse),
82    Status503(models::ErrorResponse),
83    Status5XX(models::ErrorResponse),
84    UnknownValue(serde_json::Value),
85}
86
87/// struct for typed errors of method [`create_table_index`]
88#[derive(Debug, Clone, Serialize, Deserialize)]
89#[serde(untagged)]
90pub enum CreateTableIndexError {
91    Status400(models::ErrorResponse),
92    Status401(models::ErrorResponse),
93    Status403(models::ErrorResponse),
94    Status404(models::ErrorResponse),
95    Status503(models::ErrorResponse),
96    Status5XX(models::ErrorResponse),
97    UnknownValue(serde_json::Value),
98}
99
100/// struct for typed errors of method [`create_table_tag`]
101#[derive(Debug, Clone, Serialize, Deserialize)]
102#[serde(untagged)]
103pub enum CreateTableTagError {
104    Status400(models::ErrorResponse),
105    Status401(models::ErrorResponse),
106    Status403(models::ErrorResponse),
107    Status404(models::ErrorResponse),
108    Status409(models::ErrorResponse),
109    Status503(models::ErrorResponse),
110    Status5XX(models::ErrorResponse),
111    UnknownValue(serde_json::Value),
112}
113
114/// struct for typed errors of method [`delete_table_tag`]
115#[derive(Debug, Clone, Serialize, Deserialize)]
116#[serde(untagged)]
117pub enum DeleteTableTagError {
118    Status400(models::ErrorResponse),
119    Status401(models::ErrorResponse),
120    Status403(models::ErrorResponse),
121    Status404(models::ErrorResponse),
122    Status503(models::ErrorResponse),
123    Status5XX(models::ErrorResponse),
124    UnknownValue(serde_json::Value),
125}
126
127/// struct for typed errors of method [`deregister_table`]
128#[derive(Debug, Clone, Serialize, Deserialize)]
129#[serde(untagged)]
130pub enum DeregisterTableError {
131    Status400(models::ErrorResponse),
132    Status401(models::ErrorResponse),
133    Status403(models::ErrorResponse),
134    Status404(models::ErrorResponse),
135    Status503(models::ErrorResponse),
136    Status5XX(models::ErrorResponse),
137    UnknownValue(serde_json::Value),
138}
139
140/// struct for typed errors of method [`describe_namespace`]
141#[derive(Debug, Clone, Serialize, Deserialize)]
142#[serde(untagged)]
143pub enum DescribeNamespaceError {
144    Status400(models::ErrorResponse),
145    Status401(models::ErrorResponse),
146    Status403(models::ErrorResponse),
147    Status404(models::ErrorResponse),
148    Status503(models::ErrorResponse),
149    Status5XX(models::ErrorResponse),
150    UnknownValue(serde_json::Value),
151}
152
153/// struct for typed errors of method [`describe_table`]
154#[derive(Debug, Clone, Serialize, Deserialize)]
155#[serde(untagged)]
156pub enum DescribeTableError {
157    Status400(models::ErrorResponse),
158    Status401(models::ErrorResponse),
159    Status403(models::ErrorResponse),
160    Status404(models::ErrorResponse),
161    Status503(models::ErrorResponse),
162    Status5XX(models::ErrorResponse),
163    UnknownValue(serde_json::Value),
164}
165
166/// struct for typed errors of method [`describe_table_index_stats`]
167#[derive(Debug, Clone, Serialize, Deserialize)]
168#[serde(untagged)]
169pub enum DescribeTableIndexStatsError {
170    Status400(models::ErrorResponse),
171    Status401(models::ErrorResponse),
172    Status403(models::ErrorResponse),
173    Status404(models::ErrorResponse),
174    Status503(models::ErrorResponse),
175    Status5XX(models::ErrorResponse),
176    UnknownValue(serde_json::Value),
177}
178
179/// struct for typed errors of method [`describe_transaction`]
180#[derive(Debug, Clone, Serialize, Deserialize)]
181#[serde(untagged)]
182pub enum DescribeTransactionError {
183    Status400(models::ErrorResponse),
184    Status401(models::ErrorResponse),
185    Status403(models::ErrorResponse),
186    Status404(models::ErrorResponse),
187    Status503(models::ErrorResponse),
188    Status5XX(models::ErrorResponse),
189    UnknownValue(serde_json::Value),
190}
191
192/// struct for typed errors of method [`drop_namespace`]
193#[derive(Debug, Clone, Serialize, Deserialize)]
194#[serde(untagged)]
195pub enum DropNamespaceError {
196    Status400(models::ErrorResponse),
197    Status401(models::ErrorResponse),
198    Status403(models::ErrorResponse),
199    Status404(models::ErrorResponse),
200    Status409(models::ErrorResponse),
201    Status503(models::ErrorResponse),
202    Status5XX(models::ErrorResponse),
203    UnknownValue(serde_json::Value),
204}
205
206/// struct for typed errors of method [`drop_table`]
207#[derive(Debug, Clone, Serialize, Deserialize)]
208#[serde(untagged)]
209pub enum DropTableError {
210    Status400(models::ErrorResponse),
211    Status401(models::ErrorResponse),
212    Status403(models::ErrorResponse),
213    Status404(models::ErrorResponse),
214    Status503(models::ErrorResponse),
215    Status5XX(models::ErrorResponse),
216    UnknownValue(serde_json::Value),
217}
218
219/// struct for typed errors of method [`drop_table_index`]
220#[derive(Debug, Clone, Serialize, Deserialize)]
221#[serde(untagged)]
222pub enum DropTableIndexError {
223    Status400(models::ErrorResponse),
224    Status401(models::ErrorResponse),
225    Status403(models::ErrorResponse),
226    Status404(models::ErrorResponse),
227    Status503(models::ErrorResponse),
228    Status5XX(models::ErrorResponse),
229    UnknownValue(serde_json::Value),
230}
231
232/// struct for typed errors of method [`get_table_stats`]
233#[derive(Debug, Clone, Serialize, Deserialize)]
234#[serde(untagged)]
235pub enum GetTableStatsError {
236    Status400(models::ErrorResponse),
237    Status401(models::ErrorResponse),
238    Status403(models::ErrorResponse),
239    Status404(models::ErrorResponse),
240    Status503(models::ErrorResponse),
241    Status5XX(models::ErrorResponse),
242    UnknownValue(serde_json::Value),
243}
244
245/// struct for typed errors of method [`get_table_tag_version`]
246#[derive(Debug, Clone, Serialize, Deserialize)]
247#[serde(untagged)]
248pub enum GetTableTagVersionError {
249    Status400(models::ErrorResponse),
250    Status401(models::ErrorResponse),
251    Status403(models::ErrorResponse),
252    Status404(models::ErrorResponse),
253    Status503(models::ErrorResponse),
254    Status5XX(models::ErrorResponse),
255    UnknownValue(serde_json::Value),
256}
257
258/// struct for typed errors of method [`list_namespaces`]
259#[derive(Debug, Clone, Serialize, Deserialize)]
260#[serde(untagged)]
261pub enum ListNamespacesError {
262    Status400(models::ErrorResponse),
263    Status401(models::ErrorResponse),
264    Status403(models::ErrorResponse),
265    Status404(models::ErrorResponse),
266    Status406(models::ErrorResponse),
267    Status503(models::ErrorResponse),
268    Status5XX(models::ErrorResponse),
269    UnknownValue(serde_json::Value),
270}
271
272/// struct for typed errors of method [`list_table_indices`]
273#[derive(Debug, Clone, Serialize, Deserialize)]
274#[serde(untagged)]
275pub enum ListTableIndicesError {
276    Status400(models::ErrorResponse),
277    Status401(models::ErrorResponse),
278    Status403(models::ErrorResponse),
279    Status404(models::ErrorResponse),
280    Status503(models::ErrorResponse),
281    Status5XX(models::ErrorResponse),
282    UnknownValue(serde_json::Value),
283}
284
285/// struct for typed errors of method [`list_table_tags`]
286#[derive(Debug, Clone, Serialize, Deserialize)]
287#[serde(untagged)]
288pub enum ListTableTagsError {
289    Status400(models::ErrorResponse),
290    Status401(models::ErrorResponse),
291    Status403(models::ErrorResponse),
292    Status404(models::ErrorResponse),
293    Status503(models::ErrorResponse),
294    Status5XX(models::ErrorResponse),
295    UnknownValue(serde_json::Value),
296}
297
298/// struct for typed errors of method [`list_table_versions`]
299#[derive(Debug, Clone, Serialize, Deserialize)]
300#[serde(untagged)]
301pub enum ListTableVersionsError {
302    Status400(models::ErrorResponse),
303    Status401(models::ErrorResponse),
304    Status403(models::ErrorResponse),
305    Status404(models::ErrorResponse),
306    Status503(models::ErrorResponse),
307    Status5XX(models::ErrorResponse),
308    UnknownValue(serde_json::Value),
309}
310
311/// struct for typed errors of method [`list_tables`]
312#[derive(Debug, Clone, Serialize, Deserialize)]
313#[serde(untagged)]
314pub enum ListTablesError {
315    Status400(models::ErrorResponse),
316    Status401(models::ErrorResponse),
317    Status403(models::ErrorResponse),
318    Status404(models::ErrorResponse),
319    Status406(models::ErrorResponse),
320    Status503(models::ErrorResponse),
321    Status5XX(models::ErrorResponse),
322    UnknownValue(serde_json::Value),
323}
324
325/// struct for typed errors of method [`namespace_exists`]
326#[derive(Debug, Clone, Serialize, Deserialize)]
327#[serde(untagged)]
328pub enum NamespaceExistsError {
329    Status400(models::ErrorResponse),
330    Status401(models::ErrorResponse),
331    Status403(models::ErrorResponse),
332    Status404(models::ErrorResponse),
333    Status503(models::ErrorResponse),
334    Status5XX(models::ErrorResponse),
335    UnknownValue(serde_json::Value),
336}
337
338/// struct for typed errors of method [`register_table`]
339#[derive(Debug, Clone, Serialize, Deserialize)]
340#[serde(untagged)]
341pub enum RegisterTableError {
342    Status400(models::ErrorResponse),
343    Status401(models::ErrorResponse),
344    Status403(models::ErrorResponse),
345    Status404(models::ErrorResponse),
346    Status406(models::ErrorResponse),
347    Status409(models::ErrorResponse),
348    Status503(models::ErrorResponse),
349    Status5XX(models::ErrorResponse),
350    UnknownValue(serde_json::Value),
351}
352
353/// struct for typed errors of method [`restore_table`]
354#[derive(Debug, Clone, Serialize, Deserialize)]
355#[serde(untagged)]
356pub enum RestoreTableError {
357    Status400(models::ErrorResponse),
358    Status401(models::ErrorResponse),
359    Status403(models::ErrorResponse),
360    Status404(models::ErrorResponse),
361    Status503(models::ErrorResponse),
362    Status5XX(models::ErrorResponse),
363    UnknownValue(serde_json::Value),
364}
365
366/// struct for typed errors of method [`table_exists`]
367#[derive(Debug, Clone, Serialize, Deserialize)]
368#[serde(untagged)]
369pub enum TableExistsError {
370    Status400(models::ErrorResponse),
371    Status401(models::ErrorResponse),
372    Status403(models::ErrorResponse),
373    Status404(models::ErrorResponse),
374    Status503(models::ErrorResponse),
375    Status5XX(models::ErrorResponse),
376    UnknownValue(serde_json::Value),
377}
378
379/// struct for typed errors of method [`update_table_tag`]
380#[derive(Debug, Clone, Serialize, Deserialize)]
381#[serde(untagged)]
382pub enum UpdateTableTagError {
383    Status400(models::ErrorResponse),
384    Status401(models::ErrorResponse),
385    Status403(models::ErrorResponse),
386    Status404(models::ErrorResponse),
387    Status503(models::ErrorResponse),
388    Status5XX(models::ErrorResponse),
389    UnknownValue(serde_json::Value),
390}
391
392
393/// Modify existing columns in table `id`, such as renaming or changing data types. 
394pub async fn alter_table_alter_columns(configuration: &configuration::Configuration, id: &str, alter_table_alter_columns_request: models::AlterTableAlterColumnsRequest, delimiter: Option<&str>) -> Result<models::AlterTableAlterColumnsResponse, Error<AlterTableAlterColumnsError>> {
395    // add a prefix to parameters to efficiently prevent name collisions
396    let p_id = id;
397    let p_alter_table_alter_columns_request = alter_table_alter_columns_request;
398    let p_delimiter = delimiter;
399
400    let uri_str = format!("{}/v1/table/{id}/alter_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
401    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
402
403    if let Some(ref param_value) = p_delimiter {
404        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
405    }
406    if let Some(ref user_agent) = configuration.user_agent {
407        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
408    }
409    req_builder = req_builder.json(&p_alter_table_alter_columns_request);
410
411    let req = req_builder.build()?;
412    let resp = configuration.client.execute(req).await?;
413
414    let status = resp.status();
415    let content_type = resp
416        .headers()
417        .get("content-type")
418        .and_then(|v| v.to_str().ok())
419        .unwrap_or("application/octet-stream");
420    let content_type = super::ContentType::from(content_type);
421
422    if !status.is_client_error() && !status.is_server_error() {
423        let content = resp.text().await?;
424        match content_type {
425            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
426            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableAlterColumnsResponse`"))),
427            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::AlterTableAlterColumnsResponse`")))),
428        }
429    } else {
430        let content = resp.text().await?;
431        let entity: Option<AlterTableAlterColumnsError> = serde_json::from_str(&content).ok();
432        Err(Error::ResponseError(ResponseContent { status, content, entity }))
433    }
434}
435
436/// Remove specified columns from table `id`. 
437pub async fn alter_table_drop_columns(configuration: &configuration::Configuration, id: &str, alter_table_drop_columns_request: models::AlterTableDropColumnsRequest, delimiter: Option<&str>) -> Result<models::AlterTableDropColumnsResponse, Error<AlterTableDropColumnsError>> {
438    // add a prefix to parameters to efficiently prevent name collisions
439    let p_id = id;
440    let p_alter_table_drop_columns_request = alter_table_drop_columns_request;
441    let p_delimiter = delimiter;
442
443    let uri_str = format!("{}/v1/table/{id}/drop_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
444    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
445
446    if let Some(ref param_value) = p_delimiter {
447        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
448    }
449    if let Some(ref user_agent) = configuration.user_agent {
450        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
451    }
452    req_builder = req_builder.json(&p_alter_table_drop_columns_request);
453
454    let req = req_builder.build()?;
455    let resp = configuration.client.execute(req).await?;
456
457    let status = resp.status();
458    let content_type = resp
459        .headers()
460        .get("content-type")
461        .and_then(|v| v.to_str().ok())
462        .unwrap_or("application/octet-stream");
463    let content_type = super::ContentType::from(content_type);
464
465    if !status.is_client_error() && !status.is_server_error() {
466        let content = resp.text().await?;
467        match content_type {
468            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
469            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableDropColumnsResponse`"))),
470            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::AlterTableDropColumnsResponse`")))),
471        }
472    } else {
473        let content = resp.text().await?;
474        let entity: Option<AlterTableDropColumnsError> = serde_json::from_str(&content).ok();
475        Err(Error::ResponseError(ResponseContent { status, content, entity }))
476    }
477}
478
479/// Alter a transaction with a list of actions such as setting status or properties. The server should either succeed and apply all actions, or fail and apply no action. 
480pub async fn alter_transaction(configuration: &configuration::Configuration, id: &str, alter_transaction_request: models::AlterTransactionRequest, delimiter: Option<&str>) -> Result<models::AlterTransactionResponse, Error<AlterTransactionError>> {
481    // add a prefix to parameters to efficiently prevent name collisions
482    let p_id = id;
483    let p_alter_transaction_request = alter_transaction_request;
484    let p_delimiter = delimiter;
485
486    let uri_str = format!("{}/v1/transaction/{id}/alter", configuration.base_path, id=crate::apis::urlencode(p_id));
487    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
488
489    if let Some(ref param_value) = p_delimiter {
490        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
491    }
492    if let Some(ref user_agent) = configuration.user_agent {
493        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
494    }
495    req_builder = req_builder.json(&p_alter_transaction_request);
496
497    let req = req_builder.build()?;
498    let resp = configuration.client.execute(req).await?;
499
500    let status = resp.status();
501    let content_type = resp
502        .headers()
503        .get("content-type")
504        .and_then(|v| v.to_str().ok())
505        .unwrap_or("application/octet-stream");
506    let content_type = super::ContentType::from(content_type);
507
508    if !status.is_client_error() && !status.is_server_error() {
509        let content = resp.text().await?;
510        match content_type {
511            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
512            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTransactionResponse`"))),
513            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::AlterTransactionResponse`")))),
514        }
515    } else {
516        let content = resp.text().await?;
517        let entity: Option<AlterTransactionError> = serde_json::from_str(&content).ok();
518        Err(Error::ResponseError(ResponseContent { status, content, entity }))
519    }
520}
521
522/// Create an empty table with the given name without touching storage. This is a metadata-only operation that records the table existence and sets up aspects like access control.  For DirectoryNamespace implementation, this creates a `.lance-reserved` file in the table directory to mark the table's existence without creating actual Lance data files. 
523pub async fn create_empty_table(configuration: &configuration::Configuration, id: &str, create_empty_table_request: models::CreateEmptyTableRequest, delimiter: Option<&str>) -> Result<models::CreateEmptyTableResponse, Error<CreateEmptyTableError>> {
524    // add a prefix to parameters to efficiently prevent name collisions
525    let p_id = id;
526    let p_create_empty_table_request = create_empty_table_request;
527    let p_delimiter = delimiter;
528
529    let uri_str = format!("{}/v1/table/{id}/create-empty", configuration.base_path, id=crate::apis::urlencode(p_id));
530    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
531
532    if let Some(ref param_value) = p_delimiter {
533        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
534    }
535    if let Some(ref user_agent) = configuration.user_agent {
536        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
537    }
538    req_builder = req_builder.json(&p_create_empty_table_request);
539
540    let req = req_builder.build()?;
541    let resp = configuration.client.execute(req).await?;
542
543    let status = resp.status();
544    let content_type = resp
545        .headers()
546        .get("content-type")
547        .and_then(|v| v.to_str().ok())
548        .unwrap_or("application/octet-stream");
549    let content_type = super::ContentType::from(content_type);
550
551    if !status.is_client_error() && !status.is_server_error() {
552        let content = resp.text().await?;
553        match content_type {
554            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
555            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateEmptyTableResponse`"))),
556            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::CreateEmptyTableResponse`")))),
557        }
558    } else {
559        let content = resp.text().await?;
560        let entity: Option<CreateEmptyTableError> = serde_json::from_str(&content).ok();
561        Err(Error::ResponseError(ResponseContent { status, content, entity }))
562    }
563}
564
565/// Create new namespace `id`.  During the creation process, the implementation may modify user-provided `properties`,  such as adding additional properties like `created_at` to user-provided properties,  omitting any specific property, or performing actions based on any property value. 
566pub async fn create_namespace(configuration: &configuration::Configuration, id: &str, create_namespace_request: models::CreateNamespaceRequest, delimiter: Option<&str>) -> Result<models::CreateNamespaceResponse, Error<CreateNamespaceError>> {
567    // add a prefix to parameters to efficiently prevent name collisions
568    let p_id = id;
569    let p_create_namespace_request = create_namespace_request;
570    let p_delimiter = delimiter;
571
572    let uri_str = format!("{}/v1/namespace/{id}/create", configuration.base_path, id=crate::apis::urlencode(p_id));
573    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
574
575    if let Some(ref param_value) = p_delimiter {
576        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
577    }
578    if let Some(ref user_agent) = configuration.user_agent {
579        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
580    }
581    req_builder = req_builder.json(&p_create_namespace_request);
582
583    let req = req_builder.build()?;
584    let resp = configuration.client.execute(req).await?;
585
586    let status = resp.status();
587    let content_type = resp
588        .headers()
589        .get("content-type")
590        .and_then(|v| v.to_str().ok())
591        .unwrap_or("application/octet-stream");
592    let content_type = super::ContentType::from(content_type);
593
594    if !status.is_client_error() && !status.is_server_error() {
595        let content = resp.text().await?;
596        match content_type {
597            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
598            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateNamespaceResponse`"))),
599            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::CreateNamespaceResponse`")))),
600        }
601    } else {
602        let content = resp.text().await?;
603        let entity: Option<CreateNamespaceError> = serde_json::from_str(&content).ok();
604        Err(Error::ResponseError(ResponseContent { status, content, entity }))
605    }
606}
607
608/// Create an index on a table column for faster search operations. Supports vector indexes (IVF_FLAT, IVF_HNSW_SQ, IVF_PQ, etc.) and scalar indexes (BTREE, BITMAP, FTS, etc.). Index creation is handled asynchronously.  Use the `ListTableIndices` and `DescribeTableIndexStats` operations to monitor index creation progress. 
609pub async fn create_table_index(configuration: &configuration::Configuration, id: &str, create_table_index_request: models::CreateTableIndexRequest, delimiter: Option<&str>) -> Result<models::CreateTableIndexResponse, Error<CreateTableIndexError>> {
610    // add a prefix to parameters to efficiently prevent name collisions
611    let p_id = id;
612    let p_create_table_index_request = create_table_index_request;
613    let p_delimiter = delimiter;
614
615    let uri_str = format!("{}/v1/table/{id}/create_index", configuration.base_path, id=crate::apis::urlencode(p_id));
616    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
617
618    if let Some(ref param_value) = p_delimiter {
619        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
620    }
621    if let Some(ref user_agent) = configuration.user_agent {
622        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
623    }
624    req_builder = req_builder.json(&p_create_table_index_request);
625
626    let req = req_builder.build()?;
627    let resp = configuration.client.execute(req).await?;
628
629    let status = resp.status();
630    let content_type = resp
631        .headers()
632        .get("content-type")
633        .and_then(|v| v.to_str().ok())
634        .unwrap_or("application/octet-stream");
635    let content_type = super::ContentType::from(content_type);
636
637    if !status.is_client_error() && !status.is_server_error() {
638        let content = resp.text().await?;
639        match content_type {
640            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
641            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableIndexResponse`"))),
642            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::CreateTableIndexResponse`")))),
643        }
644    } else {
645        let content = resp.text().await?;
646        let entity: Option<CreateTableIndexError> = serde_json::from_str(&content).ok();
647        Err(Error::ResponseError(ResponseContent { status, content, entity }))
648    }
649}
650
651/// Create a new tag for table `id` that points to a specific version. 
652pub async fn create_table_tag(configuration: &configuration::Configuration, id: &str, create_table_tag_request: models::CreateTableTagRequest, delimiter: Option<&str>) -> Result<(), Error<CreateTableTagError>> {
653    // add a prefix to parameters to efficiently prevent name collisions
654    let p_id = id;
655    let p_create_table_tag_request = create_table_tag_request;
656    let p_delimiter = delimiter;
657
658    let uri_str = format!("{}/v1/table/{id}/tags/create", configuration.base_path, id=crate::apis::urlencode(p_id));
659    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
660
661    if let Some(ref param_value) = p_delimiter {
662        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
663    }
664    if let Some(ref user_agent) = configuration.user_agent {
665        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
666    }
667    req_builder = req_builder.json(&p_create_table_tag_request);
668
669    let req = req_builder.build()?;
670    let resp = configuration.client.execute(req).await?;
671
672    let status = resp.status();
673
674    if !status.is_client_error() && !status.is_server_error() {
675        Ok(())
676    } else {
677        let content = resp.text().await?;
678        let entity: Option<CreateTableTagError> = serde_json::from_str(&content).ok();
679        Err(Error::ResponseError(ResponseContent { status, content, entity }))
680    }
681}
682
683/// Delete an existing tag from table `id`. 
684pub async fn delete_table_tag(configuration: &configuration::Configuration, id: &str, delete_table_tag_request: models::DeleteTableTagRequest, delimiter: Option<&str>) -> Result<(), Error<DeleteTableTagError>> {
685    // add a prefix to parameters to efficiently prevent name collisions
686    let p_id = id;
687    let p_delete_table_tag_request = delete_table_tag_request;
688    let p_delimiter = delimiter;
689
690    let uri_str = format!("{}/v1/table/{id}/tags/delete", configuration.base_path, id=crate::apis::urlencode(p_id));
691    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
692
693    if let Some(ref param_value) = p_delimiter {
694        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
695    }
696    if let Some(ref user_agent) = configuration.user_agent {
697        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
698    }
699    req_builder = req_builder.json(&p_delete_table_tag_request);
700
701    let req = req_builder.build()?;
702    let resp = configuration.client.execute(req).await?;
703
704    let status = resp.status();
705
706    if !status.is_client_error() && !status.is_server_error() {
707        Ok(())
708    } else {
709        let content = resp.text().await?;
710        let entity: Option<DeleteTableTagError> = serde_json::from_str(&content).ok();
711        Err(Error::ResponseError(ResponseContent { status, content, entity }))
712    }
713}
714
715/// Deregister table `id` from its namespace. 
716pub async fn deregister_table(configuration: &configuration::Configuration, id: &str, deregister_table_request: models::DeregisterTableRequest, delimiter: Option<&str>) -> Result<models::DeregisterTableResponse, Error<DeregisterTableError>> {
717    // add a prefix to parameters to efficiently prevent name collisions
718    let p_id = id;
719    let p_deregister_table_request = deregister_table_request;
720    let p_delimiter = delimiter;
721
722    let uri_str = format!("{}/v1/table/{id}/deregister", configuration.base_path, id=crate::apis::urlencode(p_id));
723    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
724
725    if let Some(ref param_value) = p_delimiter {
726        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
727    }
728    if let Some(ref user_agent) = configuration.user_agent {
729        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
730    }
731    req_builder = req_builder.json(&p_deregister_table_request);
732
733    let req = req_builder.build()?;
734    let resp = configuration.client.execute(req).await?;
735
736    let status = resp.status();
737    let content_type = resp
738        .headers()
739        .get("content-type")
740        .and_then(|v| v.to_str().ok())
741        .unwrap_or("application/octet-stream");
742    let content_type = super::ContentType::from(content_type);
743
744    if !status.is_client_error() && !status.is_server_error() {
745        let content = resp.text().await?;
746        match content_type {
747            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
748            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DeregisterTableResponse`"))),
749            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DeregisterTableResponse`")))),
750        }
751    } else {
752        let content = resp.text().await?;
753        let entity: Option<DeregisterTableError> = serde_json::from_str(&content).ok();
754        Err(Error::ResponseError(ResponseContent { status, content, entity }))
755    }
756}
757
758/// Describe the detailed information for namespace `id`. 
759pub async fn describe_namespace(configuration: &configuration::Configuration, id: &str, describe_namespace_request: models::DescribeNamespaceRequest, delimiter: Option<&str>) -> Result<models::DescribeNamespaceResponse, Error<DescribeNamespaceError>> {
760    // add a prefix to parameters to efficiently prevent name collisions
761    let p_id = id;
762    let p_describe_namespace_request = describe_namespace_request;
763    let p_delimiter = delimiter;
764
765    let uri_str = format!("{}/v1/namespace/{id}/describe", configuration.base_path, id=crate::apis::urlencode(p_id));
766    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
767
768    if let Some(ref param_value) = p_delimiter {
769        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
770    }
771    if let Some(ref user_agent) = configuration.user_agent {
772        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
773    }
774    req_builder = req_builder.json(&p_describe_namespace_request);
775
776    let req = req_builder.build()?;
777    let resp = configuration.client.execute(req).await?;
778
779    let status = resp.status();
780    let content_type = resp
781        .headers()
782        .get("content-type")
783        .and_then(|v| v.to_str().ok())
784        .unwrap_or("application/octet-stream");
785    let content_type = super::ContentType::from(content_type);
786
787    if !status.is_client_error() && !status.is_server_error() {
788        let content = resp.text().await?;
789        match content_type {
790            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
791            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeNamespaceResponse`"))),
792            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DescribeNamespaceResponse`")))),
793        }
794    } else {
795        let content = resp.text().await?;
796        let entity: Option<DescribeNamespaceError> = serde_json::from_str(&content).ok();
797        Err(Error::ResponseError(ResponseContent { status, content, entity }))
798    }
799}
800
801/// Describe the detailed information for table `id`. 
802pub async fn describe_table(configuration: &configuration::Configuration, id: &str, describe_table_request: models::DescribeTableRequest, delimiter: Option<&str>) -> Result<models::DescribeTableResponse, Error<DescribeTableError>> {
803    // add a prefix to parameters to efficiently prevent name collisions
804    let p_id = id;
805    let p_describe_table_request = describe_table_request;
806    let p_delimiter = delimiter;
807
808    let uri_str = format!("{}/v1/table/{id}/describe", configuration.base_path, id=crate::apis::urlencode(p_id));
809    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
810
811    if let Some(ref param_value) = p_delimiter {
812        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
813    }
814    if let Some(ref user_agent) = configuration.user_agent {
815        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
816    }
817    req_builder = req_builder.json(&p_describe_table_request);
818
819    let req = req_builder.build()?;
820    let resp = configuration.client.execute(req).await?;
821
822    let status = resp.status();
823    let content_type = resp
824        .headers()
825        .get("content-type")
826        .and_then(|v| v.to_str().ok())
827        .unwrap_or("application/octet-stream");
828    let content_type = super::ContentType::from(content_type);
829
830    if !status.is_client_error() && !status.is_server_error() {
831        let content = resp.text().await?;
832        match content_type {
833            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
834            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTableResponse`"))),
835            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DescribeTableResponse`")))),
836        }
837    } else {
838        let content = resp.text().await?;
839        let entity: Option<DescribeTableError> = serde_json::from_str(&content).ok();
840        Err(Error::ResponseError(ResponseContent { status, content, entity }))
841    }
842}
843
844/// Get statistics for a specific index on a table. Returns information about the index type, distance type (for vector indices), and row counts. 
845pub async fn describe_table_index_stats(configuration: &configuration::Configuration, id: &str, index_name: &str, describe_table_index_stats_request: models::DescribeTableIndexStatsRequest, delimiter: Option<&str>) -> Result<models::DescribeTableIndexStatsResponse, Error<DescribeTableIndexStatsError>> {
846    // add a prefix to parameters to efficiently prevent name collisions
847    let p_id = id;
848    let p_index_name = index_name;
849    let p_describe_table_index_stats_request = describe_table_index_stats_request;
850    let p_delimiter = delimiter;
851
852    let uri_str = format!("{}/v1/table/{id}/index/{index_name}/stats", configuration.base_path, id=crate::apis::urlencode(p_id), index_name=crate::apis::urlencode(p_index_name));
853    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
854
855    if let Some(ref param_value) = p_delimiter {
856        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
857    }
858    if let Some(ref user_agent) = configuration.user_agent {
859        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
860    }
861    req_builder = req_builder.json(&p_describe_table_index_stats_request);
862
863    let req = req_builder.build()?;
864    let resp = configuration.client.execute(req).await?;
865
866    let status = resp.status();
867    let content_type = resp
868        .headers()
869        .get("content-type")
870        .and_then(|v| v.to_str().ok())
871        .unwrap_or("application/octet-stream");
872    let content_type = super::ContentType::from(content_type);
873
874    if !status.is_client_error() && !status.is_server_error() {
875        let content = resp.text().await?;
876        match content_type {
877            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
878            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTableIndexStatsResponse`"))),
879            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DescribeTableIndexStatsResponse`")))),
880        }
881    } else {
882        let content = resp.text().await?;
883        let entity: Option<DescribeTableIndexStatsError> = serde_json::from_str(&content).ok();
884        Err(Error::ResponseError(ResponseContent { status, content, entity }))
885    }
886}
887
888/// Return a detailed information for a given transaction 
889pub async fn describe_transaction(configuration: &configuration::Configuration, id: &str, describe_transaction_request: models::DescribeTransactionRequest, delimiter: Option<&str>) -> Result<models::DescribeTransactionResponse, Error<DescribeTransactionError>> {
890    // add a prefix to parameters to efficiently prevent name collisions
891    let p_id = id;
892    let p_describe_transaction_request = describe_transaction_request;
893    let p_delimiter = delimiter;
894
895    let uri_str = format!("{}/v1/transaction/{id}/describe", configuration.base_path, id=crate::apis::urlencode(p_id));
896    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
897
898    if let Some(ref param_value) = p_delimiter {
899        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
900    }
901    if let Some(ref user_agent) = configuration.user_agent {
902        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
903    }
904    req_builder = req_builder.json(&p_describe_transaction_request);
905
906    let req = req_builder.build()?;
907    let resp = configuration.client.execute(req).await?;
908
909    let status = resp.status();
910    let content_type = resp
911        .headers()
912        .get("content-type")
913        .and_then(|v| v.to_str().ok())
914        .unwrap_or("application/octet-stream");
915    let content_type = super::ContentType::from(content_type);
916
917    if !status.is_client_error() && !status.is_server_error() {
918        let content = resp.text().await?;
919        match content_type {
920            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
921            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTransactionResponse`"))),
922            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DescribeTransactionResponse`")))),
923        }
924    } else {
925        let content = resp.text().await?;
926        let entity: Option<DescribeTransactionError> = serde_json::from_str(&content).ok();
927        Err(Error::ResponseError(ResponseContent { status, content, entity }))
928    }
929}
930
931/// Drop namespace `id` from its parent namespace. 
932pub async fn drop_namespace(configuration: &configuration::Configuration, id: &str, drop_namespace_request: models::DropNamespaceRequest, delimiter: Option<&str>) -> Result<models::DropNamespaceResponse, Error<DropNamespaceError>> {
933    // add a prefix to parameters to efficiently prevent name collisions
934    let p_id = id;
935    let p_drop_namespace_request = drop_namespace_request;
936    let p_delimiter = delimiter;
937
938    let uri_str = format!("{}/v1/namespace/{id}/drop", configuration.base_path, id=crate::apis::urlencode(p_id));
939    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
940
941    if let Some(ref param_value) = p_delimiter {
942        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
943    }
944    if let Some(ref user_agent) = configuration.user_agent {
945        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
946    }
947    req_builder = req_builder.json(&p_drop_namespace_request);
948
949    let req = req_builder.build()?;
950    let resp = configuration.client.execute(req).await?;
951
952    let status = resp.status();
953    let content_type = resp
954        .headers()
955        .get("content-type")
956        .and_then(|v| v.to_str().ok())
957        .unwrap_or("application/octet-stream");
958    let content_type = super::ContentType::from(content_type);
959
960    if !status.is_client_error() && !status.is_server_error() {
961        let content = resp.text().await?;
962        match content_type {
963            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
964            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropNamespaceResponse`"))),
965            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DropNamespaceResponse`")))),
966        }
967    } else {
968        let content = resp.text().await?;
969        let entity: Option<DropNamespaceError> = serde_json::from_str(&content).ok();
970        Err(Error::ResponseError(ResponseContent { status, content, entity }))
971    }
972}
973
974/// Drop table `id` and delete its data. 
975pub async fn drop_table(configuration: &configuration::Configuration, id: &str, drop_table_request: models::DropTableRequest, delimiter: Option<&str>) -> Result<models::DropTableResponse, Error<DropTableError>> {
976    // add a prefix to parameters to efficiently prevent name collisions
977    let p_id = id;
978    let p_drop_table_request = drop_table_request;
979    let p_delimiter = delimiter;
980
981    let uri_str = format!("{}/v1/table/{id}/drop", configuration.base_path, id=crate::apis::urlencode(p_id));
982    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
983
984    if let Some(ref param_value) = p_delimiter {
985        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
986    }
987    if let Some(ref user_agent) = configuration.user_agent {
988        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
989    }
990    req_builder = req_builder.json(&p_drop_table_request);
991
992    let req = req_builder.build()?;
993    let resp = configuration.client.execute(req).await?;
994
995    let status = resp.status();
996    let content_type = resp
997        .headers()
998        .get("content-type")
999        .and_then(|v| v.to_str().ok())
1000        .unwrap_or("application/octet-stream");
1001    let content_type = super::ContentType::from(content_type);
1002
1003    if !status.is_client_error() && !status.is_server_error() {
1004        let content = resp.text().await?;
1005        match content_type {
1006            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1007            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropTableResponse`"))),
1008            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DropTableResponse`")))),
1009        }
1010    } else {
1011        let content = resp.text().await?;
1012        let entity: Option<DropTableError> = serde_json::from_str(&content).ok();
1013        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1014    }
1015}
1016
1017/// Drop the specified index from table `id`. 
1018pub async fn drop_table_index(configuration: &configuration::Configuration, id: &str, index_name: &str, drop_table_index_request: models::DropTableIndexRequest, delimiter: Option<&str>) -> Result<models::DropTableIndexResponse, Error<DropTableIndexError>> {
1019    // add a prefix to parameters to efficiently prevent name collisions
1020    let p_id = id;
1021    let p_index_name = index_name;
1022    let p_drop_table_index_request = drop_table_index_request;
1023    let p_delimiter = delimiter;
1024
1025    let uri_str = format!("{}/v1/table/{id}/index/{index_name}/drop", configuration.base_path, id=crate::apis::urlencode(p_id), index_name=crate::apis::urlencode(p_index_name));
1026    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1027
1028    if let Some(ref param_value) = p_delimiter {
1029        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1030    }
1031    if let Some(ref user_agent) = configuration.user_agent {
1032        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1033    }
1034    req_builder = req_builder.json(&p_drop_table_index_request);
1035
1036    let req = req_builder.build()?;
1037    let resp = configuration.client.execute(req).await?;
1038
1039    let status = resp.status();
1040    let content_type = resp
1041        .headers()
1042        .get("content-type")
1043        .and_then(|v| v.to_str().ok())
1044        .unwrap_or("application/octet-stream");
1045    let content_type = super::ContentType::from(content_type);
1046
1047    if !status.is_client_error() && !status.is_server_error() {
1048        let content = resp.text().await?;
1049        match content_type {
1050            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1051            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropTableIndexResponse`"))),
1052            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DropTableIndexResponse`")))),
1053        }
1054    } else {
1055        let content = resp.text().await?;
1056        let entity: Option<DropTableIndexError> = serde_json::from_str(&content).ok();
1057        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1058    }
1059}
1060
1061/// Get statistics for table `id`, including row counts, data sizes, and column statistics. 
1062pub async fn get_table_stats(configuration: &configuration::Configuration, id: &str, get_table_stats_request: models::GetTableStatsRequest, delimiter: Option<&str>) -> Result<models::GetTableStatsResponse, Error<GetTableStatsError>> {
1063    // add a prefix to parameters to efficiently prevent name collisions
1064    let p_id = id;
1065    let p_get_table_stats_request = get_table_stats_request;
1066    let p_delimiter = delimiter;
1067
1068    let uri_str = format!("{}/v1/table/{id}/stats", configuration.base_path, id=crate::apis::urlencode(p_id));
1069    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1070
1071    if let Some(ref param_value) = p_delimiter {
1072        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1073    }
1074    if let Some(ref user_agent) = configuration.user_agent {
1075        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1076    }
1077    req_builder = req_builder.json(&p_get_table_stats_request);
1078
1079    let req = req_builder.build()?;
1080    let resp = configuration.client.execute(req).await?;
1081
1082    let status = resp.status();
1083    let content_type = resp
1084        .headers()
1085        .get("content-type")
1086        .and_then(|v| v.to_str().ok())
1087        .unwrap_or("application/octet-stream");
1088    let content_type = super::ContentType::from(content_type);
1089
1090    if !status.is_client_error() && !status.is_server_error() {
1091        let content = resp.text().await?;
1092        match content_type {
1093            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1094            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::GetTableStatsResponse`"))),
1095            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::GetTableStatsResponse`")))),
1096        }
1097    } else {
1098        let content = resp.text().await?;
1099        let entity: Option<GetTableStatsError> = serde_json::from_str(&content).ok();
1100        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1101    }
1102}
1103
1104/// Get the version number that a specific tag points to for table `id`. 
1105pub async fn get_table_tag_version(configuration: &configuration::Configuration, id: &str, get_table_tag_version_request: models::GetTableTagVersionRequest, delimiter: Option<&str>) -> Result<models::GetTableTagVersionResponse, Error<GetTableTagVersionError>> {
1106    // add a prefix to parameters to efficiently prevent name collisions
1107    let p_id = id;
1108    let p_get_table_tag_version_request = get_table_tag_version_request;
1109    let p_delimiter = delimiter;
1110
1111    let uri_str = format!("{}/v1/table/{id}/tags/version", configuration.base_path, id=crate::apis::urlencode(p_id));
1112    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1113
1114    if let Some(ref param_value) = p_delimiter {
1115        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1116    }
1117    if let Some(ref user_agent) = configuration.user_agent {
1118        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1119    }
1120    req_builder = req_builder.json(&p_get_table_tag_version_request);
1121
1122    let req = req_builder.build()?;
1123    let resp = configuration.client.execute(req).await?;
1124
1125    let status = resp.status();
1126    let content_type = resp
1127        .headers()
1128        .get("content-type")
1129        .and_then(|v| v.to_str().ok())
1130        .unwrap_or("application/octet-stream");
1131    let content_type = super::ContentType::from(content_type);
1132
1133    if !status.is_client_error() && !status.is_server_error() {
1134        let content = resp.text().await?;
1135        match content_type {
1136            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1137            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::GetTableTagVersionResponse`"))),
1138            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::GetTableTagVersionResponse`")))),
1139        }
1140    } else {
1141        let content = resp.text().await?;
1142        let entity: Option<GetTableTagVersionError> = serde_json::from_str(&content).ok();
1143        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1144    }
1145}
1146
1147/// List all child namespace names of the parent namespace `id`.  REST NAMESPACE ONLY REST namespace uses GET to perform this operation without a request body. It passes in the `ListNamespacesRequest` information in the following way: - `id`: pass through path parameter of the same name - `page_token`: pass through query parameter of the same name - `limit`: pass through query parameter of the same name 
1148pub async fn list_namespaces(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>) -> Result<models::ListNamespacesResponse, Error<ListNamespacesError>> {
1149    // add a prefix to parameters to efficiently prevent name collisions
1150    let p_id = id;
1151    let p_delimiter = delimiter;
1152    let p_page_token = page_token;
1153    let p_limit = limit;
1154
1155    let uri_str = format!("{}/v1/namespace/{id}/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1156    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
1157
1158    if let Some(ref param_value) = p_delimiter {
1159        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1160    }
1161    if let Some(ref param_value) = p_page_token {
1162        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
1163    }
1164    if let Some(ref param_value) = p_limit {
1165        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
1166    }
1167    if let Some(ref user_agent) = configuration.user_agent {
1168        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1169    }
1170
1171    let req = req_builder.build()?;
1172    let resp = configuration.client.execute(req).await?;
1173
1174    let status = resp.status();
1175    let content_type = resp
1176        .headers()
1177        .get("content-type")
1178        .and_then(|v| v.to_str().ok())
1179        .unwrap_or("application/octet-stream");
1180    let content_type = super::ContentType::from(content_type);
1181
1182    if !status.is_client_error() && !status.is_server_error() {
1183        let content = resp.text().await?;
1184        match content_type {
1185            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1186            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListNamespacesResponse`"))),
1187            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListNamespacesResponse`")))),
1188        }
1189    } else {
1190        let content = resp.text().await?;
1191        let entity: Option<ListNamespacesError> = serde_json::from_str(&content).ok();
1192        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1193    }
1194}
1195
1196/// List all indices created on a table. Returns information about each index including name, columns, status, and UUID. 
1197pub async fn list_table_indices(configuration: &configuration::Configuration, id: &str, list_table_indices_request: models::ListTableIndicesRequest, delimiter: Option<&str>) -> Result<models::ListTableIndicesResponse, Error<ListTableIndicesError>> {
1198    // add a prefix to parameters to efficiently prevent name collisions
1199    let p_id = id;
1200    let p_list_table_indices_request = list_table_indices_request;
1201    let p_delimiter = delimiter;
1202
1203    let uri_str = format!("{}/v1/table/{id}/index/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1204    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1205
1206    if let Some(ref param_value) = p_delimiter {
1207        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1208    }
1209    if let Some(ref user_agent) = configuration.user_agent {
1210        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1211    }
1212    req_builder = req_builder.json(&p_list_table_indices_request);
1213
1214    let req = req_builder.build()?;
1215    let resp = configuration.client.execute(req).await?;
1216
1217    let status = resp.status();
1218    let content_type = resp
1219        .headers()
1220        .get("content-type")
1221        .and_then(|v| v.to_str().ok())
1222        .unwrap_or("application/octet-stream");
1223    let content_type = super::ContentType::from(content_type);
1224
1225    if !status.is_client_error() && !status.is_server_error() {
1226        let content = resp.text().await?;
1227        match content_type {
1228            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1229            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableIndicesResponse`"))),
1230            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListTableIndicesResponse`")))),
1231        }
1232    } else {
1233        let content = resp.text().await?;
1234        let entity: Option<ListTableIndicesError> = serde_json::from_str(&content).ok();
1235        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1236    }
1237}
1238
1239/// List all tags that have been created for table `id`. Returns a map of tag names to their corresponding version numbers and metadata.  REST NAMESPACE ONLY REST namespace uses GET to perform this operation without a request body. It passes in the `ListTableTagsRequest` information in the following way: - `id`: pass through path parameter of the same name - `page_token`: pass through query parameter of the same name - `limit`: pass through query parameter of the same name 
1240pub async fn list_table_tags(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>) -> Result<models::ListTableTagsResponse, Error<ListTableTagsError>> {
1241    // add a prefix to parameters to efficiently prevent name collisions
1242    let p_id = id;
1243    let p_delimiter = delimiter;
1244    let p_page_token = page_token;
1245    let p_limit = limit;
1246
1247    let uri_str = format!("{}/v1/table/{id}/tags/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1248    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
1249
1250    if let Some(ref param_value) = p_delimiter {
1251        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1252    }
1253    if let Some(ref param_value) = p_page_token {
1254        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
1255    }
1256    if let Some(ref param_value) = p_limit {
1257        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
1258    }
1259    if let Some(ref user_agent) = configuration.user_agent {
1260        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1261    }
1262
1263    let req = req_builder.build()?;
1264    let resp = configuration.client.execute(req).await?;
1265
1266    let status = resp.status();
1267    let content_type = resp
1268        .headers()
1269        .get("content-type")
1270        .and_then(|v| v.to_str().ok())
1271        .unwrap_or("application/octet-stream");
1272    let content_type = super::ContentType::from(content_type);
1273
1274    if !status.is_client_error() && !status.is_server_error() {
1275        let content = resp.text().await?;
1276        match content_type {
1277            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1278            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableTagsResponse`"))),
1279            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListTableTagsResponse`")))),
1280        }
1281    } else {
1282        let content = resp.text().await?;
1283        let entity: Option<ListTableTagsError> = serde_json::from_str(&content).ok();
1284        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1285    }
1286}
1287
1288/// List all versions (commits) of table `id` with their metadata. 
1289pub async fn list_table_versions(configuration: &configuration::Configuration, id: &str, list_table_versions_request: models::ListTableVersionsRequest, delimiter: Option<&str>) -> Result<models::ListTableVersionsResponse, Error<ListTableVersionsError>> {
1290    // add a prefix to parameters to efficiently prevent name collisions
1291    let p_id = id;
1292    let p_list_table_versions_request = list_table_versions_request;
1293    let p_delimiter = delimiter;
1294
1295    let uri_str = format!("{}/v1/table/{id}/version/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1296    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1297
1298    if let Some(ref param_value) = p_delimiter {
1299        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1300    }
1301    if let Some(ref user_agent) = configuration.user_agent {
1302        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1303    }
1304    req_builder = req_builder.json(&p_list_table_versions_request);
1305
1306    let req = req_builder.build()?;
1307    let resp = configuration.client.execute(req).await?;
1308
1309    let status = resp.status();
1310    let content_type = resp
1311        .headers()
1312        .get("content-type")
1313        .and_then(|v| v.to_str().ok())
1314        .unwrap_or("application/octet-stream");
1315    let content_type = super::ContentType::from(content_type);
1316
1317    if !status.is_client_error() && !status.is_server_error() {
1318        let content = resp.text().await?;
1319        match content_type {
1320            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1321            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableVersionsResponse`"))),
1322            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListTableVersionsResponse`")))),
1323        }
1324    } else {
1325        let content = resp.text().await?;
1326        let entity: Option<ListTableVersionsError> = serde_json::from_str(&content).ok();
1327        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1328    }
1329}
1330
1331/// List all child table names of the parent namespace `id`.  REST NAMESPACE ONLY REST namespace uses GET to perform this operation without a request body. It passes in the `ListTablesRequest` information in the following way: - `id`: pass through path parameter of the same name - `page_token`: pass through query parameter of the same name - `limit`: pass through query parameter of the same name 
1332pub async fn list_tables(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>) -> Result<models::ListTablesResponse, Error<ListTablesError>> {
1333    // add a prefix to parameters to efficiently prevent name collisions
1334    let p_id = id;
1335    let p_delimiter = delimiter;
1336    let p_page_token = page_token;
1337    let p_limit = limit;
1338
1339    let uri_str = format!("{}/v1/namespace/{id}/table/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1340    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
1341
1342    if let Some(ref param_value) = p_delimiter {
1343        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1344    }
1345    if let Some(ref param_value) = p_page_token {
1346        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
1347    }
1348    if let Some(ref param_value) = p_limit {
1349        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
1350    }
1351    if let Some(ref user_agent) = configuration.user_agent {
1352        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1353    }
1354
1355    let req = req_builder.build()?;
1356    let resp = configuration.client.execute(req).await?;
1357
1358    let status = resp.status();
1359    let content_type = resp
1360        .headers()
1361        .get("content-type")
1362        .and_then(|v| v.to_str().ok())
1363        .unwrap_or("application/octet-stream");
1364    let content_type = super::ContentType::from(content_type);
1365
1366    if !status.is_client_error() && !status.is_server_error() {
1367        let content = resp.text().await?;
1368        match content_type {
1369            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1370            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTablesResponse`"))),
1371            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListTablesResponse`")))),
1372        }
1373    } else {
1374        let content = resp.text().await?;
1375        let entity: Option<ListTablesError> = serde_json::from_str(&content).ok();
1376        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1377    }
1378}
1379
1380/// Check if namespace `id` exists.  This operation must behave exactly like the DescribeNamespace API,  except it does not contain a response body. 
1381pub async fn namespace_exists(configuration: &configuration::Configuration, id: &str, namespace_exists_request: models::NamespaceExistsRequest, delimiter: Option<&str>) -> Result<(), Error<NamespaceExistsError>> {
1382    // add a prefix to parameters to efficiently prevent name collisions
1383    let p_id = id;
1384    let p_namespace_exists_request = namespace_exists_request;
1385    let p_delimiter = delimiter;
1386
1387    let uri_str = format!("{}/v1/namespace/{id}/exists", configuration.base_path, id=crate::apis::urlencode(p_id));
1388    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1389
1390    if let Some(ref param_value) = p_delimiter {
1391        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1392    }
1393    if let Some(ref user_agent) = configuration.user_agent {
1394        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1395    }
1396    req_builder = req_builder.json(&p_namespace_exists_request);
1397
1398    let req = req_builder.build()?;
1399    let resp = configuration.client.execute(req).await?;
1400
1401    let status = resp.status();
1402
1403    if !status.is_client_error() && !status.is_server_error() {
1404        Ok(())
1405    } else {
1406        let content = resp.text().await?;
1407        let entity: Option<NamespaceExistsError> = serde_json::from_str(&content).ok();
1408        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1409    }
1410}
1411
1412/// Register an existing table at a given storage location as `id`. 
1413pub async fn register_table(configuration: &configuration::Configuration, id: &str, register_table_request: models::RegisterTableRequest, delimiter: Option<&str>) -> Result<models::RegisterTableResponse, Error<RegisterTableError>> {
1414    // add a prefix to parameters to efficiently prevent name collisions
1415    let p_id = id;
1416    let p_register_table_request = register_table_request;
1417    let p_delimiter = delimiter;
1418
1419    let uri_str = format!("{}/v1/table/{id}/register", configuration.base_path, id=crate::apis::urlencode(p_id));
1420    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1421
1422    if let Some(ref param_value) = p_delimiter {
1423        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1424    }
1425    if let Some(ref user_agent) = configuration.user_agent {
1426        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1427    }
1428    req_builder = req_builder.json(&p_register_table_request);
1429
1430    let req = req_builder.build()?;
1431    let resp = configuration.client.execute(req).await?;
1432
1433    let status = resp.status();
1434    let content_type = resp
1435        .headers()
1436        .get("content-type")
1437        .and_then(|v| v.to_str().ok())
1438        .unwrap_or("application/octet-stream");
1439    let content_type = super::ContentType::from(content_type);
1440
1441    if !status.is_client_error() && !status.is_server_error() {
1442        let content = resp.text().await?;
1443        match content_type {
1444            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1445            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RegisterTableResponse`"))),
1446            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::RegisterTableResponse`")))),
1447        }
1448    } else {
1449        let content = resp.text().await?;
1450        let entity: Option<RegisterTableError> = serde_json::from_str(&content).ok();
1451        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1452    }
1453}
1454
1455/// Restore table `id` to a specific version. 
1456pub async fn restore_table(configuration: &configuration::Configuration, id: &str, restore_table_request: models::RestoreTableRequest, delimiter: Option<&str>) -> Result<models::RestoreTableResponse, Error<RestoreTableError>> {
1457    // add a prefix to parameters to efficiently prevent name collisions
1458    let p_id = id;
1459    let p_restore_table_request = restore_table_request;
1460    let p_delimiter = delimiter;
1461
1462    let uri_str = format!("{}/v1/table/{id}/restore", configuration.base_path, id=crate::apis::urlencode(p_id));
1463    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1464
1465    if let Some(ref param_value) = p_delimiter {
1466        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1467    }
1468    if let Some(ref user_agent) = configuration.user_agent {
1469        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1470    }
1471    req_builder = req_builder.json(&p_restore_table_request);
1472
1473    let req = req_builder.build()?;
1474    let resp = configuration.client.execute(req).await?;
1475
1476    let status = resp.status();
1477    let content_type = resp
1478        .headers()
1479        .get("content-type")
1480        .and_then(|v| v.to_str().ok())
1481        .unwrap_or("application/octet-stream");
1482    let content_type = super::ContentType::from(content_type);
1483
1484    if !status.is_client_error() && !status.is_server_error() {
1485        let content = resp.text().await?;
1486        match content_type {
1487            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1488            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RestoreTableResponse`"))),
1489            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::RestoreTableResponse`")))),
1490        }
1491    } else {
1492        let content = resp.text().await?;
1493        let entity: Option<RestoreTableError> = serde_json::from_str(&content).ok();
1494        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1495    }
1496}
1497
1498/// Check if table `id` exists.  This operation should behave exactly like DescribeTable,  except it does not contain a response body.  For DirectoryNamespace implementation, a table exists if either: - The table has Lance data versions (regular table created with CreateTable) - A `.lance-reserved` file exists in the table directory (empty table created with CreateEmptyTable) 
1499pub async fn table_exists(configuration: &configuration::Configuration, id: &str, table_exists_request: models::TableExistsRequest, delimiter: Option<&str>) -> Result<(), Error<TableExistsError>> {
1500    // add a prefix to parameters to efficiently prevent name collisions
1501    let p_id = id;
1502    let p_table_exists_request = table_exists_request;
1503    let p_delimiter = delimiter;
1504
1505    let uri_str = format!("{}/v1/table/{id}/exists", configuration.base_path, id=crate::apis::urlencode(p_id));
1506    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1507
1508    if let Some(ref param_value) = p_delimiter {
1509        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1510    }
1511    if let Some(ref user_agent) = configuration.user_agent {
1512        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1513    }
1514    req_builder = req_builder.json(&p_table_exists_request);
1515
1516    let req = req_builder.build()?;
1517    let resp = configuration.client.execute(req).await?;
1518
1519    let status = resp.status();
1520
1521    if !status.is_client_error() && !status.is_server_error() {
1522        Ok(())
1523    } else {
1524        let content = resp.text().await?;
1525        let entity: Option<TableExistsError> = serde_json::from_str(&content).ok();
1526        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1527    }
1528}
1529
1530/// Update an existing tag for table `id` to point to a different version. 
1531pub async fn update_table_tag(configuration: &configuration::Configuration, id: &str, update_table_tag_request: models::UpdateTableTagRequest, delimiter: Option<&str>) -> Result<(), Error<UpdateTableTagError>> {
1532    // add a prefix to parameters to efficiently prevent name collisions
1533    let p_id = id;
1534    let p_update_table_tag_request = update_table_tag_request;
1535    let p_delimiter = delimiter;
1536
1537    let uri_str = format!("{}/v1/table/{id}/tags/update", configuration.base_path, id=crate::apis::urlencode(p_id));
1538    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1539
1540    if let Some(ref param_value) = p_delimiter {
1541        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1542    }
1543    if let Some(ref user_agent) = configuration.user_agent {
1544        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1545    }
1546    req_builder = req_builder.json(&p_update_table_tag_request);
1547
1548    let req = req_builder.build()?;
1549    let resp = configuration.client.execute(req).await?;
1550
1551    let status = resp.status();
1552
1553    if !status.is_client_error() && !status.is_server_error() {
1554        Ok(())
1555    } else {
1556        let content = resp.text().await?;
1557        let entity: Option<UpdateTableTagError> = serde_json::from_str(&content).ok();
1558        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1559    }
1560}
1561