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