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://lance.org/format/namespace/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://lance.org/format/namespace/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_scalar_index`]
101#[derive(Debug, Clone, Serialize, Deserialize)]
102#[serde(untagged)]
103pub enum CreateTableScalarIndexError {
104    Status400(models::ErrorResponse),
105    Status401(models::ErrorResponse),
106    Status403(models::ErrorResponse),
107    Status404(models::ErrorResponse),
108    Status503(models::ErrorResponse),
109    Status5XX(models::ErrorResponse),
110    UnknownValue(serde_json::Value),
111}
112
113/// struct for typed errors of method [`create_table_tag`]
114#[derive(Debug, Clone, Serialize, Deserialize)]
115#[serde(untagged)]
116pub enum CreateTableTagError {
117    Status400(models::ErrorResponse),
118    Status401(models::ErrorResponse),
119    Status403(models::ErrorResponse),
120    Status404(models::ErrorResponse),
121    Status409(models::ErrorResponse),
122    Status503(models::ErrorResponse),
123    Status5XX(models::ErrorResponse),
124    UnknownValue(serde_json::Value),
125}
126
127/// struct for typed errors of method [`declare_table`]
128#[derive(Debug, Clone, Serialize, Deserialize)]
129#[serde(untagged)]
130pub enum DeclareTableError {
131    Status400(models::ErrorResponse),
132    Status401(models::ErrorResponse),
133    Status403(models::ErrorResponse),
134    Status404(models::ErrorResponse),
135    Status409(models::ErrorResponse),
136    Status503(models::ErrorResponse),
137    Status5XX(models::ErrorResponse),
138    UnknownValue(serde_json::Value),
139}
140
141/// struct for typed errors of method [`delete_table_tag`]
142#[derive(Debug, Clone, Serialize, Deserialize)]
143#[serde(untagged)]
144pub enum DeleteTableTagError {
145    Status400(models::ErrorResponse),
146    Status401(models::ErrorResponse),
147    Status403(models::ErrorResponse),
148    Status404(models::ErrorResponse),
149    Status503(models::ErrorResponse),
150    Status5XX(models::ErrorResponse),
151    UnknownValue(serde_json::Value),
152}
153
154/// struct for typed errors of method [`deregister_table`]
155#[derive(Debug, Clone, Serialize, Deserialize)]
156#[serde(untagged)]
157pub enum DeregisterTableError {
158    Status400(models::ErrorResponse),
159    Status401(models::ErrorResponse),
160    Status403(models::ErrorResponse),
161    Status404(models::ErrorResponse),
162    Status503(models::ErrorResponse),
163    Status5XX(models::ErrorResponse),
164    UnknownValue(serde_json::Value),
165}
166
167/// struct for typed errors of method [`describe_namespace`]
168#[derive(Debug, Clone, Serialize, Deserialize)]
169#[serde(untagged)]
170pub enum DescribeNamespaceError {
171    Status400(models::ErrorResponse),
172    Status401(models::ErrorResponse),
173    Status403(models::ErrorResponse),
174    Status404(models::ErrorResponse),
175    Status503(models::ErrorResponse),
176    Status5XX(models::ErrorResponse),
177    UnknownValue(serde_json::Value),
178}
179
180/// struct for typed errors of method [`describe_table`]
181#[derive(Debug, Clone, Serialize, Deserialize)]
182#[serde(untagged)]
183pub enum DescribeTableError {
184    Status400(models::ErrorResponse),
185    Status401(models::ErrorResponse),
186    Status403(models::ErrorResponse),
187    Status404(models::ErrorResponse),
188    Status503(models::ErrorResponse),
189    Status5XX(models::ErrorResponse),
190    UnknownValue(serde_json::Value),
191}
192
193/// struct for typed errors of method [`describe_table_index_stats`]
194#[derive(Debug, Clone, Serialize, Deserialize)]
195#[serde(untagged)]
196pub enum DescribeTableIndexStatsError {
197    Status400(models::ErrorResponse),
198    Status401(models::ErrorResponse),
199    Status403(models::ErrorResponse),
200    Status404(models::ErrorResponse),
201    Status503(models::ErrorResponse),
202    Status5XX(models::ErrorResponse),
203    UnknownValue(serde_json::Value),
204}
205
206/// struct for typed errors of method [`describe_transaction`]
207#[derive(Debug, Clone, Serialize, Deserialize)]
208#[serde(untagged)]
209pub enum DescribeTransactionError {
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_namespace`]
220#[derive(Debug, Clone, Serialize, Deserialize)]
221#[serde(untagged)]
222pub enum DropNamespaceError {
223    Status400(models::ErrorResponse),
224    Status401(models::ErrorResponse),
225    Status403(models::ErrorResponse),
226    Status404(models::ErrorResponse),
227    Status409(models::ErrorResponse),
228    Status503(models::ErrorResponse),
229    Status5XX(models::ErrorResponse),
230    UnknownValue(serde_json::Value),
231}
232
233/// struct for typed errors of method [`drop_table`]
234#[derive(Debug, Clone, Serialize, Deserialize)]
235#[serde(untagged)]
236pub enum DropTableError {
237    Status400(models::ErrorResponse),
238    Status401(models::ErrorResponse),
239    Status403(models::ErrorResponse),
240    Status404(models::ErrorResponse),
241    Status503(models::ErrorResponse),
242    Status5XX(models::ErrorResponse),
243    UnknownValue(serde_json::Value),
244}
245
246/// struct for typed errors of method [`drop_table_index`]
247#[derive(Debug, Clone, Serialize, Deserialize)]
248#[serde(untagged)]
249pub enum DropTableIndexError {
250    Status400(models::ErrorResponse),
251    Status401(models::ErrorResponse),
252    Status403(models::ErrorResponse),
253    Status404(models::ErrorResponse),
254    Status503(models::ErrorResponse),
255    Status5XX(models::ErrorResponse),
256    UnknownValue(serde_json::Value),
257}
258
259/// struct for typed errors of method [`get_table_stats`]
260#[derive(Debug, Clone, Serialize, Deserialize)]
261#[serde(untagged)]
262pub enum GetTableStatsError {
263    Status400(models::ErrorResponse),
264    Status401(models::ErrorResponse),
265    Status403(models::ErrorResponse),
266    Status404(models::ErrorResponse),
267    Status503(models::ErrorResponse),
268    Status5XX(models::ErrorResponse),
269    UnknownValue(serde_json::Value),
270}
271
272/// struct for typed errors of method [`get_table_tag_version`]
273#[derive(Debug, Clone, Serialize, Deserialize)]
274#[serde(untagged)]
275pub enum GetTableTagVersionError {
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_namespaces`]
286#[derive(Debug, Clone, Serialize, Deserialize)]
287#[serde(untagged)]
288pub enum ListNamespacesError {
289    Status400(models::ErrorResponse),
290    Status401(models::ErrorResponse),
291    Status403(models::ErrorResponse),
292    Status404(models::ErrorResponse),
293    Status406(models::ErrorResponse),
294    Status503(models::ErrorResponse),
295    Status5XX(models::ErrorResponse),
296    UnknownValue(serde_json::Value),
297}
298
299/// struct for typed errors of method [`list_table_indices`]
300#[derive(Debug, Clone, Serialize, Deserialize)]
301#[serde(untagged)]
302pub enum ListTableIndicesError {
303    Status400(models::ErrorResponse),
304    Status401(models::ErrorResponse),
305    Status403(models::ErrorResponse),
306    Status404(models::ErrorResponse),
307    Status503(models::ErrorResponse),
308    Status5XX(models::ErrorResponse),
309    UnknownValue(serde_json::Value),
310}
311
312/// struct for typed errors of method [`list_table_tags`]
313#[derive(Debug, Clone, Serialize, Deserialize)]
314#[serde(untagged)]
315pub enum ListTableTagsError {
316    Status400(models::ErrorResponse),
317    Status401(models::ErrorResponse),
318    Status403(models::ErrorResponse),
319    Status404(models::ErrorResponse),
320    Status503(models::ErrorResponse),
321    Status5XX(models::ErrorResponse),
322    UnknownValue(serde_json::Value),
323}
324
325/// struct for typed errors of method [`list_table_versions`]
326#[derive(Debug, Clone, Serialize, Deserialize)]
327#[serde(untagged)]
328pub enum ListTableVersionsError {
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 [`list_tables`]
339#[derive(Debug, Clone, Serialize, Deserialize)]
340#[serde(untagged)]
341pub enum ListTablesError {
342    Status400(models::ErrorResponse),
343    Status401(models::ErrorResponse),
344    Status403(models::ErrorResponse),
345    Status404(models::ErrorResponse),
346    Status406(models::ErrorResponse),
347    Status503(models::ErrorResponse),
348    Status5XX(models::ErrorResponse),
349    UnknownValue(serde_json::Value),
350}
351
352/// struct for typed errors of method [`namespace_exists`]
353#[derive(Debug, Clone, Serialize, Deserialize)]
354#[serde(untagged)]
355pub enum NamespaceExistsError {
356    Status400(models::ErrorResponse),
357    Status401(models::ErrorResponse),
358    Status403(models::ErrorResponse),
359    Status404(models::ErrorResponse),
360    Status503(models::ErrorResponse),
361    Status5XX(models::ErrorResponse),
362    UnknownValue(serde_json::Value),
363}
364
365/// struct for typed errors of method [`register_table`]
366#[derive(Debug, Clone, Serialize, Deserialize)]
367#[serde(untagged)]
368pub enum RegisterTableError {
369    Status400(models::ErrorResponse),
370    Status401(models::ErrorResponse),
371    Status403(models::ErrorResponse),
372    Status404(models::ErrorResponse),
373    Status406(models::ErrorResponse),
374    Status409(models::ErrorResponse),
375    Status503(models::ErrorResponse),
376    Status5XX(models::ErrorResponse),
377    UnknownValue(serde_json::Value),
378}
379
380/// struct for typed errors of method [`rename_table`]
381#[derive(Debug, Clone, Serialize, Deserialize)]
382#[serde(untagged)]
383pub enum RenameTableError {
384    Status400(models::ErrorResponse),
385    Status401(models::ErrorResponse),
386    Status403(models::ErrorResponse),
387    Status404(models::ErrorResponse),
388    Status409(models::ErrorResponse),
389    Status503(models::ErrorResponse),
390    Status5XX(models::ErrorResponse),
391    UnknownValue(serde_json::Value),
392}
393
394/// struct for typed errors of method [`restore_table`]
395#[derive(Debug, Clone, Serialize, Deserialize)]
396#[serde(untagged)]
397pub enum RestoreTableError {
398    Status400(models::ErrorResponse),
399    Status401(models::ErrorResponse),
400    Status403(models::ErrorResponse),
401    Status404(models::ErrorResponse),
402    Status503(models::ErrorResponse),
403    Status5XX(models::ErrorResponse),
404    UnknownValue(serde_json::Value),
405}
406
407/// struct for typed errors of method [`table_exists`]
408#[derive(Debug, Clone, Serialize, Deserialize)]
409#[serde(untagged)]
410pub enum TableExistsError {
411    Status400(models::ErrorResponse),
412    Status401(models::ErrorResponse),
413    Status403(models::ErrorResponse),
414    Status404(models::ErrorResponse),
415    Status503(models::ErrorResponse),
416    Status5XX(models::ErrorResponse),
417    UnknownValue(serde_json::Value),
418}
419
420/// struct for typed errors of method [`update_table_schema_metadata`]
421#[derive(Debug, Clone, Serialize, Deserialize)]
422#[serde(untagged)]
423pub enum UpdateTableSchemaMetadataError {
424    Status400(models::ErrorResponse),
425    Status401(models::ErrorResponse),
426    Status403(models::ErrorResponse),
427    Status404(models::ErrorResponse),
428    Status503(models::ErrorResponse),
429    Status5XX(models::ErrorResponse),
430    UnknownValue(serde_json::Value),
431}
432
433/// struct for typed errors of method [`update_table_tag`]
434#[derive(Debug, Clone, Serialize, Deserialize)]
435#[serde(untagged)]
436pub enum UpdateTableTagError {
437    Status400(models::ErrorResponse),
438    Status401(models::ErrorResponse),
439    Status403(models::ErrorResponse),
440    Status404(models::ErrorResponse),
441    Status503(models::ErrorResponse),
442    Status5XX(models::ErrorResponse),
443    UnknownValue(serde_json::Value),
444}
445
446
447/// Modify existing columns in table `id`, such as renaming or changing data types. 
448pub 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>> {
449    // add a prefix to parameters to efficiently prevent name collisions
450    let p_id = id;
451    let p_alter_table_alter_columns_request = alter_table_alter_columns_request;
452    let p_delimiter = delimiter;
453
454    let uri_str = format!("{}/v1/table/{id}/alter_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
455    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
456
457    if let Some(ref param_value) = p_delimiter {
458        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
459    }
460    if let Some(ref user_agent) = configuration.user_agent {
461        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
462    }
463    if let Some(ref token) = configuration.oauth_access_token {
464        req_builder = req_builder.bearer_auth(token.to_owned());
465    };
466    if let Some(ref apikey) = configuration.api_key {
467        let key = apikey.key.clone();
468        let value = match apikey.prefix {
469            Some(ref prefix) => format!("{} {}", prefix, key),
470            None => key,
471        };
472        req_builder = req_builder.header("x-api-key", value);
473    };
474    if let Some(ref token) = configuration.bearer_access_token {
475        req_builder = req_builder.bearer_auth(token.to_owned());
476    };
477    req_builder = req_builder.json(&p_alter_table_alter_columns_request);
478
479    let req = req_builder.build()?;
480    let resp = configuration.client.execute(req).await?;
481
482    let status = resp.status();
483    let content_type = resp
484        .headers()
485        .get("content-type")
486        .and_then(|v| v.to_str().ok())
487        .unwrap_or("application/octet-stream");
488    let content_type = super::ContentType::from(content_type);
489
490    if !status.is_client_error() && !status.is_server_error() {
491        let content = resp.text().await?;
492        match content_type {
493            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
494            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableAlterColumnsResponse`"))),
495            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`")))),
496        }
497    } else {
498        let content = resp.text().await?;
499        let entity: Option<AlterTableAlterColumnsError> = serde_json::from_str(&content).ok();
500        Err(Error::ResponseError(ResponseContent { status, content, entity }))
501    }
502}
503
504/// Remove specified columns from table `id`. 
505pub 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>> {
506    // add a prefix to parameters to efficiently prevent name collisions
507    let p_id = id;
508    let p_alter_table_drop_columns_request = alter_table_drop_columns_request;
509    let p_delimiter = delimiter;
510
511    let uri_str = format!("{}/v1/table/{id}/drop_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
512    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
513
514    if let Some(ref param_value) = p_delimiter {
515        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
516    }
517    if let Some(ref user_agent) = configuration.user_agent {
518        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
519    }
520    if let Some(ref token) = configuration.oauth_access_token {
521        req_builder = req_builder.bearer_auth(token.to_owned());
522    };
523    if let Some(ref apikey) = configuration.api_key {
524        let key = apikey.key.clone();
525        let value = match apikey.prefix {
526            Some(ref prefix) => format!("{} {}", prefix, key),
527            None => key,
528        };
529        req_builder = req_builder.header("x-api-key", value);
530    };
531    if let Some(ref token) = configuration.bearer_access_token {
532        req_builder = req_builder.bearer_auth(token.to_owned());
533    };
534    req_builder = req_builder.json(&p_alter_table_drop_columns_request);
535
536    let req = req_builder.build()?;
537    let resp = configuration.client.execute(req).await?;
538
539    let status = resp.status();
540    let content_type = resp
541        .headers()
542        .get("content-type")
543        .and_then(|v| v.to_str().ok())
544        .unwrap_or("application/octet-stream");
545    let content_type = super::ContentType::from(content_type);
546
547    if !status.is_client_error() && !status.is_server_error() {
548        let content = resp.text().await?;
549        match content_type {
550            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
551            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableDropColumnsResponse`"))),
552            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`")))),
553        }
554    } else {
555        let content = resp.text().await?;
556        let entity: Option<AlterTableDropColumnsError> = serde_json::from_str(&content).ok();
557        Err(Error::ResponseError(ResponseContent { status, content, entity }))
558    }
559}
560
561/// 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. 
562pub async fn alter_transaction(configuration: &configuration::Configuration, id: &str, alter_transaction_request: models::AlterTransactionRequest, delimiter: Option<&str>) -> Result<models::AlterTransactionResponse, Error<AlterTransactionError>> {
563    // add a prefix to parameters to efficiently prevent name collisions
564    let p_id = id;
565    let p_alter_transaction_request = alter_transaction_request;
566    let p_delimiter = delimiter;
567
568    let uri_str = format!("{}/v1/transaction/{id}/alter", configuration.base_path, id=crate::apis::urlencode(p_id));
569    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
570
571    if let Some(ref param_value) = p_delimiter {
572        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
573    }
574    if let Some(ref user_agent) = configuration.user_agent {
575        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
576    }
577    if let Some(ref token) = configuration.oauth_access_token {
578        req_builder = req_builder.bearer_auth(token.to_owned());
579    };
580    if let Some(ref apikey) = configuration.api_key {
581        let key = apikey.key.clone();
582        let value = match apikey.prefix {
583            Some(ref prefix) => format!("{} {}", prefix, key),
584            None => key,
585        };
586        req_builder = req_builder.header("x-api-key", value);
587    };
588    if let Some(ref token) = configuration.bearer_access_token {
589        req_builder = req_builder.bearer_auth(token.to_owned());
590    };
591    req_builder = req_builder.json(&p_alter_transaction_request);
592
593    let req = req_builder.build()?;
594    let resp = configuration.client.execute(req).await?;
595
596    let status = resp.status();
597    let content_type = resp
598        .headers()
599        .get("content-type")
600        .and_then(|v| v.to_str().ok())
601        .unwrap_or("application/octet-stream");
602    let content_type = super::ContentType::from(content_type);
603
604    if !status.is_client_error() && !status.is_server_error() {
605        let content = resp.text().await?;
606        match content_type {
607            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
608            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTransactionResponse`"))),
609            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`")))),
610        }
611    } else {
612        let content = resp.text().await?;
613        let entity: Option<AlterTransactionError> = serde_json::from_str(&content).ok();
614        Err(Error::ResponseError(ResponseContent { status, content, entity }))
615    }
616}
617
618/// 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.  **Deprecated**: Use `DeclareTable` instead. 
619pub async fn create_empty_table(configuration: &configuration::Configuration, id: &str, create_empty_table_request: models::CreateEmptyTableRequest, delimiter: Option<&str>) -> Result<models::CreateEmptyTableResponse, Error<CreateEmptyTableError>> {
620    // add a prefix to parameters to efficiently prevent name collisions
621    let p_id = id;
622    let p_create_empty_table_request = create_empty_table_request;
623    let p_delimiter = delimiter;
624
625    let uri_str = format!("{}/v1/table/{id}/create-empty", configuration.base_path, id=crate::apis::urlencode(p_id));
626    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
627
628    if let Some(ref param_value) = p_delimiter {
629        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
630    }
631    if let Some(ref user_agent) = configuration.user_agent {
632        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
633    }
634    if let Some(ref token) = configuration.oauth_access_token {
635        req_builder = req_builder.bearer_auth(token.to_owned());
636    };
637    if let Some(ref apikey) = configuration.api_key {
638        let key = apikey.key.clone();
639        let value = match apikey.prefix {
640            Some(ref prefix) => format!("{} {}", prefix, key),
641            None => key,
642        };
643        req_builder = req_builder.header("x-api-key", value);
644    };
645    if let Some(ref token) = configuration.bearer_access_token {
646        req_builder = req_builder.bearer_auth(token.to_owned());
647    };
648    req_builder = req_builder.json(&p_create_empty_table_request);
649
650    let req = req_builder.build()?;
651    let resp = configuration.client.execute(req).await?;
652
653    let status = resp.status();
654    let content_type = resp
655        .headers()
656        .get("content-type")
657        .and_then(|v| v.to_str().ok())
658        .unwrap_or("application/octet-stream");
659    let content_type = super::ContentType::from(content_type);
660
661    if !status.is_client_error() && !status.is_server_error() {
662        let content = resp.text().await?;
663        match content_type {
664            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
665            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateEmptyTableResponse`"))),
666            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`")))),
667        }
668    } else {
669        let content = resp.text().await?;
670        let entity: Option<CreateEmptyTableError> = serde_json::from_str(&content).ok();
671        Err(Error::ResponseError(ResponseContent { status, content, entity }))
672    }
673}
674
675/// 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. 
676pub async fn create_namespace(configuration: &configuration::Configuration, id: &str, create_namespace_request: models::CreateNamespaceRequest, delimiter: Option<&str>) -> Result<models::CreateNamespaceResponse, Error<CreateNamespaceError>> {
677    // add a prefix to parameters to efficiently prevent name collisions
678    let p_id = id;
679    let p_create_namespace_request = create_namespace_request;
680    let p_delimiter = delimiter;
681
682    let uri_str = format!("{}/v1/namespace/{id}/create", configuration.base_path, id=crate::apis::urlencode(p_id));
683    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
684
685    if let Some(ref param_value) = p_delimiter {
686        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
687    }
688    if let Some(ref user_agent) = configuration.user_agent {
689        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
690    }
691    if let Some(ref token) = configuration.oauth_access_token {
692        req_builder = req_builder.bearer_auth(token.to_owned());
693    };
694    if let Some(ref apikey) = configuration.api_key {
695        let key = apikey.key.clone();
696        let value = match apikey.prefix {
697            Some(ref prefix) => format!("{} {}", prefix, key),
698            None => key,
699        };
700        req_builder = req_builder.header("x-api-key", value);
701    };
702    if let Some(ref token) = configuration.bearer_access_token {
703        req_builder = req_builder.bearer_auth(token.to_owned());
704    };
705    req_builder = req_builder.json(&p_create_namespace_request);
706
707    let req = req_builder.build()?;
708    let resp = configuration.client.execute(req).await?;
709
710    let status = resp.status();
711    let content_type = resp
712        .headers()
713        .get("content-type")
714        .and_then(|v| v.to_str().ok())
715        .unwrap_or("application/octet-stream");
716    let content_type = super::ContentType::from(content_type);
717
718    if !status.is_client_error() && !status.is_server_error() {
719        let content = resp.text().await?;
720        match content_type {
721            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
722            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateNamespaceResponse`"))),
723            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`")))),
724        }
725    } else {
726        let content = resp.text().await?;
727        let entity: Option<CreateNamespaceError> = serde_json::from_str(&content).ok();
728        Err(Error::ResponseError(ResponseContent { status, content, entity }))
729    }
730}
731
732/// 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. 
733pub async fn create_table_index(configuration: &configuration::Configuration, id: &str, create_table_index_request: models::CreateTableIndexRequest, delimiter: Option<&str>) -> Result<models::CreateTableIndexResponse, Error<CreateTableIndexError>> {
734    // add a prefix to parameters to efficiently prevent name collisions
735    let p_id = id;
736    let p_create_table_index_request = create_table_index_request;
737    let p_delimiter = delimiter;
738
739    let uri_str = format!("{}/v1/table/{id}/create_index", configuration.base_path, id=crate::apis::urlencode(p_id));
740    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
741
742    if let Some(ref param_value) = p_delimiter {
743        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
744    }
745    if let Some(ref user_agent) = configuration.user_agent {
746        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
747    }
748    if let Some(ref token) = configuration.oauth_access_token {
749        req_builder = req_builder.bearer_auth(token.to_owned());
750    };
751    if let Some(ref apikey) = configuration.api_key {
752        let key = apikey.key.clone();
753        let value = match apikey.prefix {
754            Some(ref prefix) => format!("{} {}", prefix, key),
755            None => key,
756        };
757        req_builder = req_builder.header("x-api-key", value);
758    };
759    if let Some(ref token) = configuration.bearer_access_token {
760        req_builder = req_builder.bearer_auth(token.to_owned());
761    };
762    req_builder = req_builder.json(&p_create_table_index_request);
763
764    let req = req_builder.build()?;
765    let resp = configuration.client.execute(req).await?;
766
767    let status = resp.status();
768    let content_type = resp
769        .headers()
770        .get("content-type")
771        .and_then(|v| v.to_str().ok())
772        .unwrap_or("application/octet-stream");
773    let content_type = super::ContentType::from(content_type);
774
775    if !status.is_client_error() && !status.is_server_error() {
776        let content = resp.text().await?;
777        match content_type {
778            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
779            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableIndexResponse`"))),
780            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`")))),
781        }
782    } else {
783        let content = resp.text().await?;
784        let entity: Option<CreateTableIndexError> = serde_json::from_str(&content).ok();
785        Err(Error::ResponseError(ResponseContent { status, content, entity }))
786    }
787}
788
789/// Create a scalar index on a table column for faster filtering operations. Supports scalar indexes (BTREE, BITMAP, LABEL_LIST, FTS, etc.). This is an alias for CreateTableIndex specifically for scalar indexes. Index creation is handled asynchronously. Use the `ListTableIndices` and `DescribeTableIndexStats` operations to monitor index creation progress. 
790pub async fn create_table_scalar_index(configuration: &configuration::Configuration, id: &str, create_table_index_request: models::CreateTableIndexRequest, delimiter: Option<&str>) -> Result<models::CreateTableScalarIndexResponse, Error<CreateTableScalarIndexError>> {
791    // add a prefix to parameters to efficiently prevent name collisions
792    let p_id = id;
793    let p_create_table_index_request = create_table_index_request;
794    let p_delimiter = delimiter;
795
796    let uri_str = format!("{}/v1/table/{id}/create_scalar_index", configuration.base_path, id=crate::apis::urlencode(p_id));
797    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
798
799    if let Some(ref param_value) = p_delimiter {
800        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
801    }
802    if let Some(ref user_agent) = configuration.user_agent {
803        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
804    }
805    if let Some(ref token) = configuration.oauth_access_token {
806        req_builder = req_builder.bearer_auth(token.to_owned());
807    };
808    if let Some(ref apikey) = configuration.api_key {
809        let key = apikey.key.clone();
810        let value = match apikey.prefix {
811            Some(ref prefix) => format!("{} {}", prefix, key),
812            None => key,
813        };
814        req_builder = req_builder.header("x-api-key", value);
815    };
816    if let Some(ref token) = configuration.bearer_access_token {
817        req_builder = req_builder.bearer_auth(token.to_owned());
818    };
819    req_builder = req_builder.json(&p_create_table_index_request);
820
821    let req = req_builder.build()?;
822    let resp = configuration.client.execute(req).await?;
823
824    let status = resp.status();
825    let content_type = resp
826        .headers()
827        .get("content-type")
828        .and_then(|v| v.to_str().ok())
829        .unwrap_or("application/octet-stream");
830    let content_type = super::ContentType::from(content_type);
831
832    if !status.is_client_error() && !status.is_server_error() {
833        let content = resp.text().await?;
834        match content_type {
835            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
836            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableScalarIndexResponse`"))),
837            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::CreateTableScalarIndexResponse`")))),
838        }
839    } else {
840        let content = resp.text().await?;
841        let entity: Option<CreateTableScalarIndexError> = serde_json::from_str(&content).ok();
842        Err(Error::ResponseError(ResponseContent { status, content, entity }))
843    }
844}
845
846/// Create a new tag for table `id` that points to a specific version. 
847pub async fn create_table_tag(configuration: &configuration::Configuration, id: &str, create_table_tag_request: models::CreateTableTagRequest, delimiter: Option<&str>) -> Result<models::CreateTableTagResponse, Error<CreateTableTagError>> {
848    // add a prefix to parameters to efficiently prevent name collisions
849    let p_id = id;
850    let p_create_table_tag_request = create_table_tag_request;
851    let p_delimiter = delimiter;
852
853    let uri_str = format!("{}/v1/table/{id}/tags/create", configuration.base_path, id=crate::apis::urlencode(p_id));
854    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
855
856    if let Some(ref param_value) = p_delimiter {
857        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
858    }
859    if let Some(ref user_agent) = configuration.user_agent {
860        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
861    }
862    if let Some(ref token) = configuration.oauth_access_token {
863        req_builder = req_builder.bearer_auth(token.to_owned());
864    };
865    if let Some(ref apikey) = configuration.api_key {
866        let key = apikey.key.clone();
867        let value = match apikey.prefix {
868            Some(ref prefix) => format!("{} {}", prefix, key),
869            None => key,
870        };
871        req_builder = req_builder.header("x-api-key", value);
872    };
873    if let Some(ref token) = configuration.bearer_access_token {
874        req_builder = req_builder.bearer_auth(token.to_owned());
875    };
876    req_builder = req_builder.json(&p_create_table_tag_request);
877
878    let req = req_builder.build()?;
879    let resp = configuration.client.execute(req).await?;
880
881    let status = resp.status();
882    let content_type = resp
883        .headers()
884        .get("content-type")
885        .and_then(|v| v.to_str().ok())
886        .unwrap_or("application/octet-stream");
887    let content_type = super::ContentType::from(content_type);
888
889    if !status.is_client_error() && !status.is_server_error() {
890        let content = resp.text().await?;
891        match content_type {
892            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
893            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableTagResponse`"))),
894            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::CreateTableTagResponse`")))),
895        }
896    } else {
897        let content = resp.text().await?;
898        let entity: Option<CreateTableTagError> = serde_json::from_str(&content).ok();
899        Err(Error::ResponseError(ResponseContent { status, content, entity }))
900    }
901}
902
903/// Declare a 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. 
904pub async fn declare_table(configuration: &configuration::Configuration, id: &str, declare_table_request: models::DeclareTableRequest, delimiter: Option<&str>) -> Result<models::DeclareTableResponse, Error<DeclareTableError>> {
905    // add a prefix to parameters to efficiently prevent name collisions
906    let p_id = id;
907    let p_declare_table_request = declare_table_request;
908    let p_delimiter = delimiter;
909
910    let uri_str = format!("{}/v1/table/{id}/declare", configuration.base_path, id=crate::apis::urlencode(p_id));
911    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
912
913    if let Some(ref param_value) = p_delimiter {
914        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
915    }
916    if let Some(ref user_agent) = configuration.user_agent {
917        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
918    }
919    if let Some(ref token) = configuration.oauth_access_token {
920        req_builder = req_builder.bearer_auth(token.to_owned());
921    };
922    if let Some(ref apikey) = configuration.api_key {
923        let key = apikey.key.clone();
924        let value = match apikey.prefix {
925            Some(ref prefix) => format!("{} {}", prefix, key),
926            None => key,
927        };
928        req_builder = req_builder.header("x-api-key", value);
929    };
930    if let Some(ref token) = configuration.bearer_access_token {
931        req_builder = req_builder.bearer_auth(token.to_owned());
932    };
933    req_builder = req_builder.json(&p_declare_table_request);
934
935    let req = req_builder.build()?;
936    let resp = configuration.client.execute(req).await?;
937
938    let status = resp.status();
939    let content_type = resp
940        .headers()
941        .get("content-type")
942        .and_then(|v| v.to_str().ok())
943        .unwrap_or("application/octet-stream");
944    let content_type = super::ContentType::from(content_type);
945
946    if !status.is_client_error() && !status.is_server_error() {
947        let content = resp.text().await?;
948        match content_type {
949            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
950            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DeclareTableResponse`"))),
951            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::DeclareTableResponse`")))),
952        }
953    } else {
954        let content = resp.text().await?;
955        let entity: Option<DeclareTableError> = serde_json::from_str(&content).ok();
956        Err(Error::ResponseError(ResponseContent { status, content, entity }))
957    }
958}
959
960/// Delete an existing tag from table `id`. 
961pub async fn delete_table_tag(configuration: &configuration::Configuration, id: &str, delete_table_tag_request: models::DeleteTableTagRequest, delimiter: Option<&str>) -> Result<models::DeleteTableTagResponse, Error<DeleteTableTagError>> {
962    // add a prefix to parameters to efficiently prevent name collisions
963    let p_id = id;
964    let p_delete_table_tag_request = delete_table_tag_request;
965    let p_delimiter = delimiter;
966
967    let uri_str = format!("{}/v1/table/{id}/tags/delete", configuration.base_path, id=crate::apis::urlencode(p_id));
968    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
969
970    if let Some(ref param_value) = p_delimiter {
971        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
972    }
973    if let Some(ref user_agent) = configuration.user_agent {
974        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
975    }
976    if let Some(ref token) = configuration.oauth_access_token {
977        req_builder = req_builder.bearer_auth(token.to_owned());
978    };
979    if let Some(ref apikey) = configuration.api_key {
980        let key = apikey.key.clone();
981        let value = match apikey.prefix {
982            Some(ref prefix) => format!("{} {}", prefix, key),
983            None => key,
984        };
985        req_builder = req_builder.header("x-api-key", value);
986    };
987    if let Some(ref token) = configuration.bearer_access_token {
988        req_builder = req_builder.bearer_auth(token.to_owned());
989    };
990    req_builder = req_builder.json(&p_delete_table_tag_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::DeleteTableTagResponse`"))),
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::DeleteTableTagResponse`")))),
1009        }
1010    } else {
1011        let content = resp.text().await?;
1012        let entity: Option<DeleteTableTagError> = serde_json::from_str(&content).ok();
1013        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1014    }
1015}
1016
1017/// Deregister table `id` from its namespace. 
1018pub async fn deregister_table(configuration: &configuration::Configuration, id: &str, deregister_table_request: models::DeregisterTableRequest, delimiter: Option<&str>) -> Result<models::DeregisterTableResponse, Error<DeregisterTableError>> {
1019    // add a prefix to parameters to efficiently prevent name collisions
1020    let p_id = id;
1021    let p_deregister_table_request = deregister_table_request;
1022    let p_delimiter = delimiter;
1023
1024    let uri_str = format!("{}/v1/table/{id}/deregister", configuration.base_path, id=crate::apis::urlencode(p_id));
1025    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1026
1027    if let Some(ref param_value) = p_delimiter {
1028        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1029    }
1030    if let Some(ref user_agent) = configuration.user_agent {
1031        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1032    }
1033    if let Some(ref token) = configuration.oauth_access_token {
1034        req_builder = req_builder.bearer_auth(token.to_owned());
1035    };
1036    if let Some(ref apikey) = configuration.api_key {
1037        let key = apikey.key.clone();
1038        let value = match apikey.prefix {
1039            Some(ref prefix) => format!("{} {}", prefix, key),
1040            None => key,
1041        };
1042        req_builder = req_builder.header("x-api-key", value);
1043    };
1044    if let Some(ref token) = configuration.bearer_access_token {
1045        req_builder = req_builder.bearer_auth(token.to_owned());
1046    };
1047    req_builder = req_builder.json(&p_deregister_table_request);
1048
1049    let req = req_builder.build()?;
1050    let resp = configuration.client.execute(req).await?;
1051
1052    let status = resp.status();
1053    let content_type = resp
1054        .headers()
1055        .get("content-type")
1056        .and_then(|v| v.to_str().ok())
1057        .unwrap_or("application/octet-stream");
1058    let content_type = super::ContentType::from(content_type);
1059
1060    if !status.is_client_error() && !status.is_server_error() {
1061        let content = resp.text().await?;
1062        match content_type {
1063            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1064            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DeregisterTableResponse`"))),
1065            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`")))),
1066        }
1067    } else {
1068        let content = resp.text().await?;
1069        let entity: Option<DeregisterTableError> = serde_json::from_str(&content).ok();
1070        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1071    }
1072}
1073
1074/// Describe the detailed information for namespace `id`. 
1075pub async fn describe_namespace(configuration: &configuration::Configuration, id: &str, describe_namespace_request: models::DescribeNamespaceRequest, delimiter: Option<&str>) -> Result<models::DescribeNamespaceResponse, Error<DescribeNamespaceError>> {
1076    // add a prefix to parameters to efficiently prevent name collisions
1077    let p_id = id;
1078    let p_describe_namespace_request = describe_namespace_request;
1079    let p_delimiter = delimiter;
1080
1081    let uri_str = format!("{}/v1/namespace/{id}/describe", configuration.base_path, id=crate::apis::urlencode(p_id));
1082    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1083
1084    if let Some(ref param_value) = p_delimiter {
1085        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1086    }
1087    if let Some(ref user_agent) = configuration.user_agent {
1088        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1089    }
1090    if let Some(ref token) = configuration.oauth_access_token {
1091        req_builder = req_builder.bearer_auth(token.to_owned());
1092    };
1093    if let Some(ref apikey) = configuration.api_key {
1094        let key = apikey.key.clone();
1095        let value = match apikey.prefix {
1096            Some(ref prefix) => format!("{} {}", prefix, key),
1097            None => key,
1098        };
1099        req_builder = req_builder.header("x-api-key", value);
1100    };
1101    if let Some(ref token) = configuration.bearer_access_token {
1102        req_builder = req_builder.bearer_auth(token.to_owned());
1103    };
1104    req_builder = req_builder.json(&p_describe_namespace_request);
1105
1106    let req = req_builder.build()?;
1107    let resp = configuration.client.execute(req).await?;
1108
1109    let status = resp.status();
1110    let content_type = resp
1111        .headers()
1112        .get("content-type")
1113        .and_then(|v| v.to_str().ok())
1114        .unwrap_or("application/octet-stream");
1115    let content_type = super::ContentType::from(content_type);
1116
1117    if !status.is_client_error() && !status.is_server_error() {
1118        let content = resp.text().await?;
1119        match content_type {
1120            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1121            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeNamespaceResponse`"))),
1122            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`")))),
1123        }
1124    } else {
1125        let content = resp.text().await?;
1126        let entity: Option<DescribeNamespaceError> = serde_json::from_str(&content).ok();
1127        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1128    }
1129}
1130
1131/// Describe the detailed information for table `id`.  REST NAMESPACE ONLY REST namespace passes `with_table_uri` and `load_detailed_metadata` as query parameters instead of in the request body. 
1132pub async fn describe_table(configuration: &configuration::Configuration, id: &str, describe_table_request: models::DescribeTableRequest, delimiter: Option<&str>, with_table_uri: Option<bool>, load_detailed_metadata: Option<bool>) -> Result<models::DescribeTableResponse, Error<DescribeTableError>> {
1133    // add a prefix to parameters to efficiently prevent name collisions
1134    let p_id = id;
1135    let p_describe_table_request = describe_table_request;
1136    let p_delimiter = delimiter;
1137    let p_with_table_uri = with_table_uri;
1138    let p_load_detailed_metadata = load_detailed_metadata;
1139
1140    let uri_str = format!("{}/v1/table/{id}/describe", configuration.base_path, id=crate::apis::urlencode(p_id));
1141    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1142
1143    if let Some(ref param_value) = p_delimiter {
1144        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1145    }
1146    if let Some(ref param_value) = p_with_table_uri {
1147        req_builder = req_builder.query(&[("with_table_uri", &param_value.to_string())]);
1148    }
1149    if let Some(ref param_value) = p_load_detailed_metadata {
1150        req_builder = req_builder.query(&[("load_detailed_metadata", &param_value.to_string())]);
1151    }
1152    if let Some(ref user_agent) = configuration.user_agent {
1153        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1154    }
1155    if let Some(ref token) = configuration.oauth_access_token {
1156        req_builder = req_builder.bearer_auth(token.to_owned());
1157    };
1158    if let Some(ref apikey) = configuration.api_key {
1159        let key = apikey.key.clone();
1160        let value = match apikey.prefix {
1161            Some(ref prefix) => format!("{} {}", prefix, key),
1162            None => key,
1163        };
1164        req_builder = req_builder.header("x-api-key", value);
1165    };
1166    if let Some(ref token) = configuration.bearer_access_token {
1167        req_builder = req_builder.bearer_auth(token.to_owned());
1168    };
1169    req_builder = req_builder.json(&p_describe_table_request);
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::DescribeTableResponse`"))),
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::DescribeTableResponse`")))),
1188        }
1189    } else {
1190        let content = resp.text().await?;
1191        let entity: Option<DescribeTableError> = serde_json::from_str(&content).ok();
1192        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1193    }
1194}
1195
1196/// Get statistics for a specific index on a table. Returns information about the index type, distance type (for vector indices), and row counts. 
1197pub 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>> {
1198    // add a prefix to parameters to efficiently prevent name collisions
1199    let p_id = id;
1200    let p_index_name = index_name;
1201    let p_describe_table_index_stats_request = describe_table_index_stats_request;
1202    let p_delimiter = delimiter;
1203
1204    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));
1205    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1206
1207    if let Some(ref param_value) = p_delimiter {
1208        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1209    }
1210    if let Some(ref user_agent) = configuration.user_agent {
1211        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1212    }
1213    if let Some(ref token) = configuration.oauth_access_token {
1214        req_builder = req_builder.bearer_auth(token.to_owned());
1215    };
1216    if let Some(ref apikey) = configuration.api_key {
1217        let key = apikey.key.clone();
1218        let value = match apikey.prefix {
1219            Some(ref prefix) => format!("{} {}", prefix, key),
1220            None => key,
1221        };
1222        req_builder = req_builder.header("x-api-key", value);
1223    };
1224    if let Some(ref token) = configuration.bearer_access_token {
1225        req_builder = req_builder.bearer_auth(token.to_owned());
1226    };
1227    req_builder = req_builder.json(&p_describe_table_index_stats_request);
1228
1229    let req = req_builder.build()?;
1230    let resp = configuration.client.execute(req).await?;
1231
1232    let status = resp.status();
1233    let content_type = resp
1234        .headers()
1235        .get("content-type")
1236        .and_then(|v| v.to_str().ok())
1237        .unwrap_or("application/octet-stream");
1238    let content_type = super::ContentType::from(content_type);
1239
1240    if !status.is_client_error() && !status.is_server_error() {
1241        let content = resp.text().await?;
1242        match content_type {
1243            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1244            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTableIndexStatsResponse`"))),
1245            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`")))),
1246        }
1247    } else {
1248        let content = resp.text().await?;
1249        let entity: Option<DescribeTableIndexStatsError> = serde_json::from_str(&content).ok();
1250        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1251    }
1252}
1253
1254/// Return a detailed information for a given transaction 
1255pub async fn describe_transaction(configuration: &configuration::Configuration, id: &str, describe_transaction_request: models::DescribeTransactionRequest, delimiter: Option<&str>) -> Result<models::DescribeTransactionResponse, Error<DescribeTransactionError>> {
1256    // add a prefix to parameters to efficiently prevent name collisions
1257    let p_id = id;
1258    let p_describe_transaction_request = describe_transaction_request;
1259    let p_delimiter = delimiter;
1260
1261    let uri_str = format!("{}/v1/transaction/{id}/describe", configuration.base_path, id=crate::apis::urlencode(p_id));
1262    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1263
1264    if let Some(ref param_value) = p_delimiter {
1265        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1266    }
1267    if let Some(ref user_agent) = configuration.user_agent {
1268        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1269    }
1270    if let Some(ref token) = configuration.oauth_access_token {
1271        req_builder = req_builder.bearer_auth(token.to_owned());
1272    };
1273    if let Some(ref apikey) = configuration.api_key {
1274        let key = apikey.key.clone();
1275        let value = match apikey.prefix {
1276            Some(ref prefix) => format!("{} {}", prefix, key),
1277            None => key,
1278        };
1279        req_builder = req_builder.header("x-api-key", value);
1280    };
1281    if let Some(ref token) = configuration.bearer_access_token {
1282        req_builder = req_builder.bearer_auth(token.to_owned());
1283    };
1284    req_builder = req_builder.json(&p_describe_transaction_request);
1285
1286    let req = req_builder.build()?;
1287    let resp = configuration.client.execute(req).await?;
1288
1289    let status = resp.status();
1290    let content_type = resp
1291        .headers()
1292        .get("content-type")
1293        .and_then(|v| v.to_str().ok())
1294        .unwrap_or("application/octet-stream");
1295    let content_type = super::ContentType::from(content_type);
1296
1297    if !status.is_client_error() && !status.is_server_error() {
1298        let content = resp.text().await?;
1299        match content_type {
1300            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1301            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTransactionResponse`"))),
1302            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`")))),
1303        }
1304    } else {
1305        let content = resp.text().await?;
1306        let entity: Option<DescribeTransactionError> = serde_json::from_str(&content).ok();
1307        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1308    }
1309}
1310
1311/// Drop namespace `id` from its parent namespace. 
1312pub async fn drop_namespace(configuration: &configuration::Configuration, id: &str, drop_namespace_request: models::DropNamespaceRequest, delimiter: Option<&str>) -> Result<models::DropNamespaceResponse, Error<DropNamespaceError>> {
1313    // add a prefix to parameters to efficiently prevent name collisions
1314    let p_id = id;
1315    let p_drop_namespace_request = drop_namespace_request;
1316    let p_delimiter = delimiter;
1317
1318    let uri_str = format!("{}/v1/namespace/{id}/drop", configuration.base_path, id=crate::apis::urlencode(p_id));
1319    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1320
1321    if let Some(ref param_value) = p_delimiter {
1322        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1323    }
1324    if let Some(ref user_agent) = configuration.user_agent {
1325        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1326    }
1327    if let Some(ref token) = configuration.oauth_access_token {
1328        req_builder = req_builder.bearer_auth(token.to_owned());
1329    };
1330    if let Some(ref apikey) = configuration.api_key {
1331        let key = apikey.key.clone();
1332        let value = match apikey.prefix {
1333            Some(ref prefix) => format!("{} {}", prefix, key),
1334            None => key,
1335        };
1336        req_builder = req_builder.header("x-api-key", value);
1337    };
1338    if let Some(ref token) = configuration.bearer_access_token {
1339        req_builder = req_builder.bearer_auth(token.to_owned());
1340    };
1341    req_builder = req_builder.json(&p_drop_namespace_request);
1342
1343    let req = req_builder.build()?;
1344    let resp = configuration.client.execute(req).await?;
1345
1346    let status = resp.status();
1347    let content_type = resp
1348        .headers()
1349        .get("content-type")
1350        .and_then(|v| v.to_str().ok())
1351        .unwrap_or("application/octet-stream");
1352    let content_type = super::ContentType::from(content_type);
1353
1354    if !status.is_client_error() && !status.is_server_error() {
1355        let content = resp.text().await?;
1356        match content_type {
1357            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1358            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropNamespaceResponse`"))),
1359            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`")))),
1360        }
1361    } else {
1362        let content = resp.text().await?;
1363        let entity: Option<DropNamespaceError> = serde_json::from_str(&content).ok();
1364        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1365    }
1366}
1367
1368/// Drop table `id` and delete its data.  REST NAMESPACE ONLY REST namespace does not use a request body for this operation. The `DropTableRequest` information is passed in the following way: - `id`: pass through path parameter of the same name 
1369pub async fn drop_table(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>) -> Result<models::DropTableResponse, Error<DropTableError>> {
1370    // add a prefix to parameters to efficiently prevent name collisions
1371    let p_id = id;
1372    let p_delimiter = delimiter;
1373
1374    let uri_str = format!("{}/v1/table/{id}/drop", configuration.base_path, id=crate::apis::urlencode(p_id));
1375    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1376
1377    if let Some(ref param_value) = p_delimiter {
1378        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1379    }
1380    if let Some(ref user_agent) = configuration.user_agent {
1381        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1382    }
1383    if let Some(ref token) = configuration.oauth_access_token {
1384        req_builder = req_builder.bearer_auth(token.to_owned());
1385    };
1386    if let Some(ref apikey) = configuration.api_key {
1387        let key = apikey.key.clone();
1388        let value = match apikey.prefix {
1389            Some(ref prefix) => format!("{} {}", prefix, key),
1390            None => key,
1391        };
1392        req_builder = req_builder.header("x-api-key", value);
1393    };
1394    if let Some(ref token) = configuration.bearer_access_token {
1395        req_builder = req_builder.bearer_auth(token.to_owned());
1396    };
1397
1398    let req = req_builder.build()?;
1399    let resp = configuration.client.execute(req).await?;
1400
1401    let status = resp.status();
1402    let content_type = resp
1403        .headers()
1404        .get("content-type")
1405        .and_then(|v| v.to_str().ok())
1406        .unwrap_or("application/octet-stream");
1407    let content_type = super::ContentType::from(content_type);
1408
1409    if !status.is_client_error() && !status.is_server_error() {
1410        let content = resp.text().await?;
1411        match content_type {
1412            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1413            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropTableResponse`"))),
1414            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`")))),
1415        }
1416    } else {
1417        let content = resp.text().await?;
1418        let entity: Option<DropTableError> = serde_json::from_str(&content).ok();
1419        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1420    }
1421}
1422
1423/// Drop the specified index from table `id`.  REST NAMESPACE ONLY REST namespace does not use a request body for this operation. The `DropTableIndexRequest` information is passed in the following way: - `id`: pass through path parameter of the same name - `index_name`: pass through path parameter of the same name 
1424pub async fn drop_table_index(configuration: &configuration::Configuration, id: &str, index_name: &str, delimiter: Option<&str>) -> Result<models::DropTableIndexResponse, Error<DropTableIndexError>> {
1425    // add a prefix to parameters to efficiently prevent name collisions
1426    let p_id = id;
1427    let p_index_name = index_name;
1428    let p_delimiter = delimiter;
1429
1430    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));
1431    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1432
1433    if let Some(ref param_value) = p_delimiter {
1434        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1435    }
1436    if let Some(ref user_agent) = configuration.user_agent {
1437        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1438    }
1439    if let Some(ref token) = configuration.oauth_access_token {
1440        req_builder = req_builder.bearer_auth(token.to_owned());
1441    };
1442    if let Some(ref apikey) = configuration.api_key {
1443        let key = apikey.key.clone();
1444        let value = match apikey.prefix {
1445            Some(ref prefix) => format!("{} {}", prefix, key),
1446            None => key,
1447        };
1448        req_builder = req_builder.header("x-api-key", value);
1449    };
1450    if let Some(ref token) = configuration.bearer_access_token {
1451        req_builder = req_builder.bearer_auth(token.to_owned());
1452    };
1453
1454    let req = req_builder.build()?;
1455    let resp = configuration.client.execute(req).await?;
1456
1457    let status = resp.status();
1458    let content_type = resp
1459        .headers()
1460        .get("content-type")
1461        .and_then(|v| v.to_str().ok())
1462        .unwrap_or("application/octet-stream");
1463    let content_type = super::ContentType::from(content_type);
1464
1465    if !status.is_client_error() && !status.is_server_error() {
1466        let content = resp.text().await?;
1467        match content_type {
1468            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1469            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropTableIndexResponse`"))),
1470            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`")))),
1471        }
1472    } else {
1473        let content = resp.text().await?;
1474        let entity: Option<DropTableIndexError> = serde_json::from_str(&content).ok();
1475        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1476    }
1477}
1478
1479/// Get statistics for table `id`, including row counts, data sizes, and column statistics. 
1480pub async fn get_table_stats(configuration: &configuration::Configuration, id: &str, get_table_stats_request: models::GetTableStatsRequest, delimiter: Option<&str>) -> Result<models::GetTableStatsResponse, Error<GetTableStatsError>> {
1481    // add a prefix to parameters to efficiently prevent name collisions
1482    let p_id = id;
1483    let p_get_table_stats_request = get_table_stats_request;
1484    let p_delimiter = delimiter;
1485
1486    let uri_str = format!("{}/v1/table/{id}/stats", configuration.base_path, id=crate::apis::urlencode(p_id));
1487    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1488
1489    if let Some(ref param_value) = p_delimiter {
1490        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1491    }
1492    if let Some(ref user_agent) = configuration.user_agent {
1493        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1494    }
1495    if let Some(ref token) = configuration.oauth_access_token {
1496        req_builder = req_builder.bearer_auth(token.to_owned());
1497    };
1498    if let Some(ref apikey) = configuration.api_key {
1499        let key = apikey.key.clone();
1500        let value = match apikey.prefix {
1501            Some(ref prefix) => format!("{} {}", prefix, key),
1502            None => key,
1503        };
1504        req_builder = req_builder.header("x-api-key", value);
1505    };
1506    if let Some(ref token) = configuration.bearer_access_token {
1507        req_builder = req_builder.bearer_auth(token.to_owned());
1508    };
1509    req_builder = req_builder.json(&p_get_table_stats_request);
1510
1511    let req = req_builder.build()?;
1512    let resp = configuration.client.execute(req).await?;
1513
1514    let status = resp.status();
1515    let content_type = resp
1516        .headers()
1517        .get("content-type")
1518        .and_then(|v| v.to_str().ok())
1519        .unwrap_or("application/octet-stream");
1520    let content_type = super::ContentType::from(content_type);
1521
1522    if !status.is_client_error() && !status.is_server_error() {
1523        let content = resp.text().await?;
1524        match content_type {
1525            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1526            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::GetTableStatsResponse`"))),
1527            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`")))),
1528        }
1529    } else {
1530        let content = resp.text().await?;
1531        let entity: Option<GetTableStatsError> = serde_json::from_str(&content).ok();
1532        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1533    }
1534}
1535
1536/// Get the version number that a specific tag points to for table `id`. 
1537pub 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>> {
1538    // add a prefix to parameters to efficiently prevent name collisions
1539    let p_id = id;
1540    let p_get_table_tag_version_request = get_table_tag_version_request;
1541    let p_delimiter = delimiter;
1542
1543    let uri_str = format!("{}/v1/table/{id}/tags/version", configuration.base_path, id=crate::apis::urlencode(p_id));
1544    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1545
1546    if let Some(ref param_value) = p_delimiter {
1547        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1548    }
1549    if let Some(ref user_agent) = configuration.user_agent {
1550        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1551    }
1552    if let Some(ref token) = configuration.oauth_access_token {
1553        req_builder = req_builder.bearer_auth(token.to_owned());
1554    };
1555    if let Some(ref apikey) = configuration.api_key {
1556        let key = apikey.key.clone();
1557        let value = match apikey.prefix {
1558            Some(ref prefix) => format!("{} {}", prefix, key),
1559            None => key,
1560        };
1561        req_builder = req_builder.header("x-api-key", value);
1562    };
1563    if let Some(ref token) = configuration.bearer_access_token {
1564        req_builder = req_builder.bearer_auth(token.to_owned());
1565    };
1566    req_builder = req_builder.json(&p_get_table_tag_version_request);
1567
1568    let req = req_builder.build()?;
1569    let resp = configuration.client.execute(req).await?;
1570
1571    let status = resp.status();
1572    let content_type = resp
1573        .headers()
1574        .get("content-type")
1575        .and_then(|v| v.to_str().ok())
1576        .unwrap_or("application/octet-stream");
1577    let content_type = super::ContentType::from(content_type);
1578
1579    if !status.is_client_error() && !status.is_server_error() {
1580        let content = resp.text().await?;
1581        match content_type {
1582            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1583            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::GetTableTagVersionResponse`"))),
1584            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`")))),
1585        }
1586    } else {
1587        let content = resp.text().await?;
1588        let entity: Option<GetTableTagVersionError> = serde_json::from_str(&content).ok();
1589        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1590    }
1591}
1592
1593/// 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 
1594pub async fn list_namespaces(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>) -> Result<models::ListNamespacesResponse, Error<ListNamespacesError>> {
1595    // add a prefix to parameters to efficiently prevent name collisions
1596    let p_id = id;
1597    let p_delimiter = delimiter;
1598    let p_page_token = page_token;
1599    let p_limit = limit;
1600
1601    let uri_str = format!("{}/v1/namespace/{id}/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1602    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
1603
1604    if let Some(ref param_value) = p_delimiter {
1605        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1606    }
1607    if let Some(ref param_value) = p_page_token {
1608        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
1609    }
1610    if let Some(ref param_value) = p_limit {
1611        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
1612    }
1613    if let Some(ref user_agent) = configuration.user_agent {
1614        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1615    }
1616    if let Some(ref token) = configuration.oauth_access_token {
1617        req_builder = req_builder.bearer_auth(token.to_owned());
1618    };
1619    if let Some(ref apikey) = configuration.api_key {
1620        let key = apikey.key.clone();
1621        let value = match apikey.prefix {
1622            Some(ref prefix) => format!("{} {}", prefix, key),
1623            None => key,
1624        };
1625        req_builder = req_builder.header("x-api-key", value);
1626    };
1627    if let Some(ref token) = configuration.bearer_access_token {
1628        req_builder = req_builder.bearer_auth(token.to_owned());
1629    };
1630
1631    let req = req_builder.build()?;
1632    let resp = configuration.client.execute(req).await?;
1633
1634    let status = resp.status();
1635    let content_type = resp
1636        .headers()
1637        .get("content-type")
1638        .and_then(|v| v.to_str().ok())
1639        .unwrap_or("application/octet-stream");
1640    let content_type = super::ContentType::from(content_type);
1641
1642    if !status.is_client_error() && !status.is_server_error() {
1643        let content = resp.text().await?;
1644        match content_type {
1645            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1646            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListNamespacesResponse`"))),
1647            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`")))),
1648        }
1649    } else {
1650        let content = resp.text().await?;
1651        let entity: Option<ListNamespacesError> = serde_json::from_str(&content).ok();
1652        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1653    }
1654}
1655
1656/// List all indices created on a table. Returns information about each index including name, columns, status, and UUID. 
1657pub async fn list_table_indices(configuration: &configuration::Configuration, id: &str, list_table_indices_request: models::ListTableIndicesRequest, delimiter: Option<&str>) -> Result<models::ListTableIndicesResponse, Error<ListTableIndicesError>> {
1658    // add a prefix to parameters to efficiently prevent name collisions
1659    let p_id = id;
1660    let p_list_table_indices_request = list_table_indices_request;
1661    let p_delimiter = delimiter;
1662
1663    let uri_str = format!("{}/v1/table/{id}/index/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1664    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1665
1666    if let Some(ref param_value) = p_delimiter {
1667        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1668    }
1669    if let Some(ref user_agent) = configuration.user_agent {
1670        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1671    }
1672    if let Some(ref token) = configuration.oauth_access_token {
1673        req_builder = req_builder.bearer_auth(token.to_owned());
1674    };
1675    if let Some(ref apikey) = configuration.api_key {
1676        let key = apikey.key.clone();
1677        let value = match apikey.prefix {
1678            Some(ref prefix) => format!("{} {}", prefix, key),
1679            None => key,
1680        };
1681        req_builder = req_builder.header("x-api-key", value);
1682    };
1683    if let Some(ref token) = configuration.bearer_access_token {
1684        req_builder = req_builder.bearer_auth(token.to_owned());
1685    };
1686    req_builder = req_builder.json(&p_list_table_indices_request);
1687
1688    let req = req_builder.build()?;
1689    let resp = configuration.client.execute(req).await?;
1690
1691    let status = resp.status();
1692    let content_type = resp
1693        .headers()
1694        .get("content-type")
1695        .and_then(|v| v.to_str().ok())
1696        .unwrap_or("application/octet-stream");
1697    let content_type = super::ContentType::from(content_type);
1698
1699    if !status.is_client_error() && !status.is_server_error() {
1700        let content = resp.text().await?;
1701        match content_type {
1702            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1703            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableIndicesResponse`"))),
1704            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`")))),
1705        }
1706    } else {
1707        let content = resp.text().await?;
1708        let entity: Option<ListTableIndicesError> = serde_json::from_str(&content).ok();
1709        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1710    }
1711}
1712
1713/// 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 does not use a request body for this operation. The `ListTableTagsRequest` information is passed 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 
1714pub 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>> {
1715    // add a prefix to parameters to efficiently prevent name collisions
1716    let p_id = id;
1717    let p_delimiter = delimiter;
1718    let p_page_token = page_token;
1719    let p_limit = limit;
1720
1721    let uri_str = format!("{}/v1/table/{id}/tags/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1722    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1723
1724    if let Some(ref param_value) = p_delimiter {
1725        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1726    }
1727    if let Some(ref param_value) = p_page_token {
1728        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
1729    }
1730    if let Some(ref param_value) = p_limit {
1731        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
1732    }
1733    if let Some(ref user_agent) = configuration.user_agent {
1734        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1735    }
1736    if let Some(ref token) = configuration.oauth_access_token {
1737        req_builder = req_builder.bearer_auth(token.to_owned());
1738    };
1739    if let Some(ref apikey) = configuration.api_key {
1740        let key = apikey.key.clone();
1741        let value = match apikey.prefix {
1742            Some(ref prefix) => format!("{} {}", prefix, key),
1743            None => key,
1744        };
1745        req_builder = req_builder.header("x-api-key", value);
1746    };
1747    if let Some(ref token) = configuration.bearer_access_token {
1748        req_builder = req_builder.bearer_auth(token.to_owned());
1749    };
1750
1751    let req = req_builder.build()?;
1752    let resp = configuration.client.execute(req).await?;
1753
1754    let status = resp.status();
1755    let content_type = resp
1756        .headers()
1757        .get("content-type")
1758        .and_then(|v| v.to_str().ok())
1759        .unwrap_or("application/octet-stream");
1760    let content_type = super::ContentType::from(content_type);
1761
1762    if !status.is_client_error() && !status.is_server_error() {
1763        let content = resp.text().await?;
1764        match content_type {
1765            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1766            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableTagsResponse`"))),
1767            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`")))),
1768        }
1769    } else {
1770        let content = resp.text().await?;
1771        let entity: Option<ListTableTagsError> = serde_json::from_str(&content).ok();
1772        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1773    }
1774}
1775
1776/// List all versions (commits) of table `id` with their metadata.  REST NAMESPACE ONLY REST namespace does not use a request body for this operation. The `ListTableVersionsRequest` information is passed 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 
1777pub async fn list_table_versions(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>) -> Result<models::ListTableVersionsResponse, Error<ListTableVersionsError>> {
1778    // add a prefix to parameters to efficiently prevent name collisions
1779    let p_id = id;
1780    let p_delimiter = delimiter;
1781    let p_page_token = page_token;
1782    let p_limit = limit;
1783
1784    let uri_str = format!("{}/v1/table/{id}/version/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1785    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1786
1787    if let Some(ref param_value) = p_delimiter {
1788        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1789    }
1790    if let Some(ref param_value) = p_page_token {
1791        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
1792    }
1793    if let Some(ref param_value) = p_limit {
1794        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
1795    }
1796    if let Some(ref user_agent) = configuration.user_agent {
1797        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1798    }
1799    if let Some(ref token) = configuration.oauth_access_token {
1800        req_builder = req_builder.bearer_auth(token.to_owned());
1801    };
1802    if let Some(ref apikey) = configuration.api_key {
1803        let key = apikey.key.clone();
1804        let value = match apikey.prefix {
1805            Some(ref prefix) => format!("{} {}", prefix, key),
1806            None => key,
1807        };
1808        req_builder = req_builder.header("x-api-key", value);
1809    };
1810    if let Some(ref token) = configuration.bearer_access_token {
1811        req_builder = req_builder.bearer_auth(token.to_owned());
1812    };
1813
1814    let req = req_builder.build()?;
1815    let resp = configuration.client.execute(req).await?;
1816
1817    let status = resp.status();
1818    let content_type = resp
1819        .headers()
1820        .get("content-type")
1821        .and_then(|v| v.to_str().ok())
1822        .unwrap_or("application/octet-stream");
1823    let content_type = super::ContentType::from(content_type);
1824
1825    if !status.is_client_error() && !status.is_server_error() {
1826        let content = resp.text().await?;
1827        match content_type {
1828            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1829            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableVersionsResponse`"))),
1830            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`")))),
1831        }
1832    } else {
1833        let content = resp.text().await?;
1834        let entity: Option<ListTableVersionsError> = serde_json::from_str(&content).ok();
1835        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1836    }
1837}
1838
1839/// 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 
1840pub async fn list_tables(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>) -> Result<models::ListTablesResponse, Error<ListTablesError>> {
1841    // add a prefix to parameters to efficiently prevent name collisions
1842    let p_id = id;
1843    let p_delimiter = delimiter;
1844    let p_page_token = page_token;
1845    let p_limit = limit;
1846
1847    let uri_str = format!("{}/v1/namespace/{id}/table/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1848    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
1849
1850    if let Some(ref param_value) = p_delimiter {
1851        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1852    }
1853    if let Some(ref param_value) = p_page_token {
1854        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
1855    }
1856    if let Some(ref param_value) = p_limit {
1857        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
1858    }
1859    if let Some(ref user_agent) = configuration.user_agent {
1860        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1861    }
1862    if let Some(ref token) = configuration.oauth_access_token {
1863        req_builder = req_builder.bearer_auth(token.to_owned());
1864    };
1865    if let Some(ref apikey) = configuration.api_key {
1866        let key = apikey.key.clone();
1867        let value = match apikey.prefix {
1868            Some(ref prefix) => format!("{} {}", prefix, key),
1869            None => key,
1870        };
1871        req_builder = req_builder.header("x-api-key", value);
1872    };
1873    if let Some(ref token) = configuration.bearer_access_token {
1874        req_builder = req_builder.bearer_auth(token.to_owned());
1875    };
1876
1877    let req = req_builder.build()?;
1878    let resp = configuration.client.execute(req).await?;
1879
1880    let status = resp.status();
1881    let content_type = resp
1882        .headers()
1883        .get("content-type")
1884        .and_then(|v| v.to_str().ok())
1885        .unwrap_or("application/octet-stream");
1886    let content_type = super::ContentType::from(content_type);
1887
1888    if !status.is_client_error() && !status.is_server_error() {
1889        let content = resp.text().await?;
1890        match content_type {
1891            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1892            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTablesResponse`"))),
1893            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`")))),
1894        }
1895    } else {
1896        let content = resp.text().await?;
1897        let entity: Option<ListTablesError> = serde_json::from_str(&content).ok();
1898        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1899    }
1900}
1901
1902/// Check if namespace `id` exists.  This operation must behave exactly like the DescribeNamespace API,  except it does not contain a response body. 
1903pub async fn namespace_exists(configuration: &configuration::Configuration, id: &str, namespace_exists_request: models::NamespaceExistsRequest, delimiter: Option<&str>) -> Result<(), Error<NamespaceExistsError>> {
1904    // add a prefix to parameters to efficiently prevent name collisions
1905    let p_id = id;
1906    let p_namespace_exists_request = namespace_exists_request;
1907    let p_delimiter = delimiter;
1908
1909    let uri_str = format!("{}/v1/namespace/{id}/exists", configuration.base_path, id=crate::apis::urlencode(p_id));
1910    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1911
1912    if let Some(ref param_value) = p_delimiter {
1913        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1914    }
1915    if let Some(ref user_agent) = configuration.user_agent {
1916        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1917    }
1918    if let Some(ref token) = configuration.oauth_access_token {
1919        req_builder = req_builder.bearer_auth(token.to_owned());
1920    };
1921    if let Some(ref apikey) = configuration.api_key {
1922        let key = apikey.key.clone();
1923        let value = match apikey.prefix {
1924            Some(ref prefix) => format!("{} {}", prefix, key),
1925            None => key,
1926        };
1927        req_builder = req_builder.header("x-api-key", value);
1928    };
1929    if let Some(ref token) = configuration.bearer_access_token {
1930        req_builder = req_builder.bearer_auth(token.to_owned());
1931    };
1932    req_builder = req_builder.json(&p_namespace_exists_request);
1933
1934    let req = req_builder.build()?;
1935    let resp = configuration.client.execute(req).await?;
1936
1937    let status = resp.status();
1938
1939    if !status.is_client_error() && !status.is_server_error() {
1940        Ok(())
1941    } else {
1942        let content = resp.text().await?;
1943        let entity: Option<NamespaceExistsError> = serde_json::from_str(&content).ok();
1944        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1945    }
1946}
1947
1948/// Register an existing table at a given storage location as `id`. 
1949pub async fn register_table(configuration: &configuration::Configuration, id: &str, register_table_request: models::RegisterTableRequest, delimiter: Option<&str>) -> Result<models::RegisterTableResponse, Error<RegisterTableError>> {
1950    // add a prefix to parameters to efficiently prevent name collisions
1951    let p_id = id;
1952    let p_register_table_request = register_table_request;
1953    let p_delimiter = delimiter;
1954
1955    let uri_str = format!("{}/v1/table/{id}/register", configuration.base_path, id=crate::apis::urlencode(p_id));
1956    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1957
1958    if let Some(ref param_value) = p_delimiter {
1959        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1960    }
1961    if let Some(ref user_agent) = configuration.user_agent {
1962        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1963    }
1964    if let Some(ref token) = configuration.oauth_access_token {
1965        req_builder = req_builder.bearer_auth(token.to_owned());
1966    };
1967    if let Some(ref apikey) = configuration.api_key {
1968        let key = apikey.key.clone();
1969        let value = match apikey.prefix {
1970            Some(ref prefix) => format!("{} {}", prefix, key),
1971            None => key,
1972        };
1973        req_builder = req_builder.header("x-api-key", value);
1974    };
1975    if let Some(ref token) = configuration.bearer_access_token {
1976        req_builder = req_builder.bearer_auth(token.to_owned());
1977    };
1978    req_builder = req_builder.json(&p_register_table_request);
1979
1980    let req = req_builder.build()?;
1981    let resp = configuration.client.execute(req).await?;
1982
1983    let status = resp.status();
1984    let content_type = resp
1985        .headers()
1986        .get("content-type")
1987        .and_then(|v| v.to_str().ok())
1988        .unwrap_or("application/octet-stream");
1989    let content_type = super::ContentType::from(content_type);
1990
1991    if !status.is_client_error() && !status.is_server_error() {
1992        let content = resp.text().await?;
1993        match content_type {
1994            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1995            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RegisterTableResponse`"))),
1996            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`")))),
1997        }
1998    } else {
1999        let content = resp.text().await?;
2000        let entity: Option<RegisterTableError> = serde_json::from_str(&content).ok();
2001        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2002    }
2003}
2004
2005/// Rename table `id` to a new name. 
2006pub async fn rename_table(configuration: &configuration::Configuration, id: &str, rename_table_request: models::RenameTableRequest, delimiter: Option<&str>) -> Result<models::RenameTableResponse, Error<RenameTableError>> {
2007    // add a prefix to parameters to efficiently prevent name collisions
2008    let p_id = id;
2009    let p_rename_table_request = rename_table_request;
2010    let p_delimiter = delimiter;
2011
2012    let uri_str = format!("{}/v1/table/{id}/rename", configuration.base_path, id=crate::apis::urlencode(p_id));
2013    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2014
2015    if let Some(ref param_value) = p_delimiter {
2016        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2017    }
2018    if let Some(ref user_agent) = configuration.user_agent {
2019        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2020    }
2021    if let Some(ref token) = configuration.oauth_access_token {
2022        req_builder = req_builder.bearer_auth(token.to_owned());
2023    };
2024    if let Some(ref apikey) = configuration.api_key {
2025        let key = apikey.key.clone();
2026        let value = match apikey.prefix {
2027            Some(ref prefix) => format!("{} {}", prefix, key),
2028            None => key,
2029        };
2030        req_builder = req_builder.header("x-api-key", value);
2031    };
2032    if let Some(ref token) = configuration.bearer_access_token {
2033        req_builder = req_builder.bearer_auth(token.to_owned());
2034    };
2035    req_builder = req_builder.json(&p_rename_table_request);
2036
2037    let req = req_builder.build()?;
2038    let resp = configuration.client.execute(req).await?;
2039
2040    let status = resp.status();
2041    let content_type = resp
2042        .headers()
2043        .get("content-type")
2044        .and_then(|v| v.to_str().ok())
2045        .unwrap_or("application/octet-stream");
2046    let content_type = super::ContentType::from(content_type);
2047
2048    if !status.is_client_error() && !status.is_server_error() {
2049        let content = resp.text().await?;
2050        match content_type {
2051            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2052            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RenameTableResponse`"))),
2053            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::RenameTableResponse`")))),
2054        }
2055    } else {
2056        let content = resp.text().await?;
2057        let entity: Option<RenameTableError> = serde_json::from_str(&content).ok();
2058        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2059    }
2060}
2061
2062/// Restore table `id` to a specific version. 
2063pub async fn restore_table(configuration: &configuration::Configuration, id: &str, restore_table_request: models::RestoreTableRequest, delimiter: Option<&str>) -> Result<models::RestoreTableResponse, Error<RestoreTableError>> {
2064    // add a prefix to parameters to efficiently prevent name collisions
2065    let p_id = id;
2066    let p_restore_table_request = restore_table_request;
2067    let p_delimiter = delimiter;
2068
2069    let uri_str = format!("{}/v1/table/{id}/restore", configuration.base_path, id=crate::apis::urlencode(p_id));
2070    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2071
2072    if let Some(ref param_value) = p_delimiter {
2073        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2074    }
2075    if let Some(ref user_agent) = configuration.user_agent {
2076        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2077    }
2078    if let Some(ref token) = configuration.oauth_access_token {
2079        req_builder = req_builder.bearer_auth(token.to_owned());
2080    };
2081    if let Some(ref apikey) = configuration.api_key {
2082        let key = apikey.key.clone();
2083        let value = match apikey.prefix {
2084            Some(ref prefix) => format!("{} {}", prefix, key),
2085            None => key,
2086        };
2087        req_builder = req_builder.header("x-api-key", value);
2088    };
2089    if let Some(ref token) = configuration.bearer_access_token {
2090        req_builder = req_builder.bearer_auth(token.to_owned());
2091    };
2092    req_builder = req_builder.json(&p_restore_table_request);
2093
2094    let req = req_builder.build()?;
2095    let resp = configuration.client.execute(req).await?;
2096
2097    let status = resp.status();
2098    let content_type = resp
2099        .headers()
2100        .get("content-type")
2101        .and_then(|v| v.to_str().ok())
2102        .unwrap_or("application/octet-stream");
2103    let content_type = super::ContentType::from(content_type);
2104
2105    if !status.is_client_error() && !status.is_server_error() {
2106        let content = resp.text().await?;
2107        match content_type {
2108            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2109            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RestoreTableResponse`"))),
2110            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`")))),
2111        }
2112    } else {
2113        let content = resp.text().await?;
2114        let entity: Option<RestoreTableError> = serde_json::from_str(&content).ok();
2115        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2116    }
2117}
2118
2119/// 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 (declared table created with DeclareTable) 
2120pub async fn table_exists(configuration: &configuration::Configuration, id: &str, table_exists_request: models::TableExistsRequest, delimiter: Option<&str>) -> Result<(), Error<TableExistsError>> {
2121    // add a prefix to parameters to efficiently prevent name collisions
2122    let p_id = id;
2123    let p_table_exists_request = table_exists_request;
2124    let p_delimiter = delimiter;
2125
2126    let uri_str = format!("{}/v1/table/{id}/exists", configuration.base_path, id=crate::apis::urlencode(p_id));
2127    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2128
2129    if let Some(ref param_value) = p_delimiter {
2130        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2131    }
2132    if let Some(ref user_agent) = configuration.user_agent {
2133        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2134    }
2135    if let Some(ref token) = configuration.oauth_access_token {
2136        req_builder = req_builder.bearer_auth(token.to_owned());
2137    };
2138    if let Some(ref apikey) = configuration.api_key {
2139        let key = apikey.key.clone();
2140        let value = match apikey.prefix {
2141            Some(ref prefix) => format!("{} {}", prefix, key),
2142            None => key,
2143        };
2144        req_builder = req_builder.header("x-api-key", value);
2145    };
2146    if let Some(ref token) = configuration.bearer_access_token {
2147        req_builder = req_builder.bearer_auth(token.to_owned());
2148    };
2149    req_builder = req_builder.json(&p_table_exists_request);
2150
2151    let req = req_builder.build()?;
2152    let resp = configuration.client.execute(req).await?;
2153
2154    let status = resp.status();
2155
2156    if !status.is_client_error() && !status.is_server_error() {
2157        Ok(())
2158    } else {
2159        let content = resp.text().await?;
2160        let entity: Option<TableExistsError> = serde_json::from_str(&content).ok();
2161        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2162    }
2163}
2164
2165/// Replace the schema metadata for table `id` with the provided key-value pairs.  REST NAMESPACE ONLY REST namespace uses a direct object (map of string to string) as both request and response body instead of the wrapped `UpdateTableSchemaMetadataRequest` and `UpdateTableSchemaMetadataResponse`. 
2166pub async fn update_table_schema_metadata(configuration: &configuration::Configuration, id: &str, request_body: std::collections::HashMap<String, String>, delimiter: Option<&str>) -> Result<std::collections::HashMap<String, String>, Error<UpdateTableSchemaMetadataError>> {
2167    // add a prefix to parameters to efficiently prevent name collisions
2168    let p_id = id;
2169    let p_request_body = request_body;
2170    let p_delimiter = delimiter;
2171
2172    let uri_str = format!("{}/v1/table/{id}/schema_metadata/update", configuration.base_path, id=crate::apis::urlencode(p_id));
2173    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2174
2175    if let Some(ref param_value) = p_delimiter {
2176        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2177    }
2178    if let Some(ref user_agent) = configuration.user_agent {
2179        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2180    }
2181    if let Some(ref token) = configuration.oauth_access_token {
2182        req_builder = req_builder.bearer_auth(token.to_owned());
2183    };
2184    if let Some(ref apikey) = configuration.api_key {
2185        let key = apikey.key.clone();
2186        let value = match apikey.prefix {
2187            Some(ref prefix) => format!("{} {}", prefix, key),
2188            None => key,
2189        };
2190        req_builder = req_builder.header("x-api-key", value);
2191    };
2192    if let Some(ref token) = configuration.bearer_access_token {
2193        req_builder = req_builder.bearer_auth(token.to_owned());
2194    };
2195    req_builder = req_builder.json(&p_request_body);
2196
2197    let req = req_builder.build()?;
2198    let resp = configuration.client.execute(req).await?;
2199
2200    let status = resp.status();
2201    let content_type = resp
2202        .headers()
2203        .get("content-type")
2204        .and_then(|v| v.to_str().ok())
2205        .unwrap_or("application/octet-stream");
2206    let content_type = super::ContentType::from(content_type);
2207
2208    if !status.is_client_error() && !status.is_server_error() {
2209        let content = resp.text().await?;
2210        match content_type {
2211            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2212            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `std::collections::HashMap&lt;String, String&gt;`"))),
2213            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `std::collections::HashMap&lt;String, String&gt;`")))),
2214        }
2215    } else {
2216        let content = resp.text().await?;
2217        let entity: Option<UpdateTableSchemaMetadataError> = serde_json::from_str(&content).ok();
2218        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2219    }
2220}
2221
2222/// Update an existing tag for table `id` to point to a different version. 
2223pub async fn update_table_tag(configuration: &configuration::Configuration, id: &str, update_table_tag_request: models::UpdateTableTagRequest, delimiter: Option<&str>) -> Result<models::UpdateTableTagResponse, Error<UpdateTableTagError>> {
2224    // add a prefix to parameters to efficiently prevent name collisions
2225    let p_id = id;
2226    let p_update_table_tag_request = update_table_tag_request;
2227    let p_delimiter = delimiter;
2228
2229    let uri_str = format!("{}/v1/table/{id}/tags/update", configuration.base_path, id=crate::apis::urlencode(p_id));
2230    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2231
2232    if let Some(ref param_value) = p_delimiter {
2233        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2234    }
2235    if let Some(ref user_agent) = configuration.user_agent {
2236        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2237    }
2238    if let Some(ref token) = configuration.oauth_access_token {
2239        req_builder = req_builder.bearer_auth(token.to_owned());
2240    };
2241    if let Some(ref apikey) = configuration.api_key {
2242        let key = apikey.key.clone();
2243        let value = match apikey.prefix {
2244            Some(ref prefix) => format!("{} {}", prefix, key),
2245            None => key,
2246        };
2247        req_builder = req_builder.header("x-api-key", value);
2248    };
2249    if let Some(ref token) = configuration.bearer_access_token {
2250        req_builder = req_builder.bearer_auth(token.to_owned());
2251    };
2252    req_builder = req_builder.json(&p_update_table_tag_request);
2253
2254    let req = req_builder.build()?;
2255    let resp = configuration.client.execute(req).await?;
2256
2257    let status = resp.status();
2258    let content_type = resp
2259        .headers()
2260        .get("content-type")
2261        .and_then(|v| v.to_str().ok())
2262        .unwrap_or("application/octet-stream");
2263    let content_type = super::ContentType::from(content_type);
2264
2265    if !status.is_client_error() && !status.is_server_error() {
2266        let content = resp.text().await?;
2267        match content_type {
2268            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2269            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::UpdateTableTagResponse`"))),
2270            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::UpdateTableTagResponse`")))),
2271        }
2272    } else {
2273        let content = resp.text().await?;
2274        let entity: Option<UpdateTableTagError> = serde_json::from_str(&content).ok();
2275        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2276    }
2277}
2278