Skip to main content

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