Skip to main content

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_backfill_columns`]
45#[derive(Debug, Clone, Serialize, Deserialize)]
46#[serde(untagged)]
47pub enum AlterTableBackfillColumnsError {
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 [`alter_table_drop_columns`]
58#[derive(Debug, Clone, Serialize, Deserialize)]
59#[serde(untagged)]
60pub enum AlterTableDropColumnsError {
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 [`analyze_table_query_plan`]
71#[derive(Debug, Clone, Serialize, Deserialize)]
72#[serde(untagged)]
73pub enum AnalyzeTableQueryPlanError {
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 [`batch_commit_tables`]
84#[derive(Debug, Clone, Serialize, Deserialize)]
85#[serde(untagged)]
86pub enum BatchCommitTablesError {
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 [`batch_create_table_versions`]
98#[derive(Debug, Clone, Serialize, Deserialize)]
99#[serde(untagged)]
100pub enum BatchCreateTableVersionsError {
101    Status400(models::ErrorResponse),
102    Status401(models::ErrorResponse),
103    Status403(models::ErrorResponse),
104    Status404(models::ErrorResponse),
105    Status409(models::ErrorResponse),
106    Status503(models::ErrorResponse),
107    Status5XX(models::ErrorResponse),
108    UnknownValue(serde_json::Value),
109}
110
111/// struct for typed errors of method [`batch_delete_table_versions`]
112#[derive(Debug, Clone, Serialize, Deserialize)]
113#[serde(untagged)]
114pub enum BatchDeleteTableVersionsError {
115    Status400(models::ErrorResponse),
116    Status401(models::ErrorResponse),
117    Status403(models::ErrorResponse),
118    Status404(models::ErrorResponse),
119    Status503(models::ErrorResponse),
120    Status5XX(models::ErrorResponse),
121    UnknownValue(serde_json::Value),
122}
123
124/// struct for typed errors of method [`count_table_rows`]
125#[derive(Debug, Clone, Serialize, Deserialize)]
126#[serde(untagged)]
127pub enum CountTableRowsError {
128    Status400(models::ErrorResponse),
129    Status401(models::ErrorResponse),
130    Status403(models::ErrorResponse),
131    Status404(models::ErrorResponse),
132    Status503(models::ErrorResponse),
133    Status5XX(models::ErrorResponse),
134    UnknownValue(serde_json::Value),
135}
136
137/// struct for typed errors of method [`create_table`]
138#[derive(Debug, Clone, Serialize, Deserialize)]
139#[serde(untagged)]
140pub enum CreateTableError {
141    Status400(models::ErrorResponse),
142    Status401(models::ErrorResponse),
143    Status403(models::ErrorResponse),
144    Status404(models::ErrorResponse),
145    Status409(models::ErrorResponse),
146    Status503(models::ErrorResponse),
147    Status5XX(models::ErrorResponse),
148    UnknownValue(serde_json::Value),
149}
150
151/// struct for typed errors of method [`create_table_index`]
152#[derive(Debug, Clone, Serialize, Deserialize)]
153#[serde(untagged)]
154pub enum CreateTableIndexError {
155    Status400(models::ErrorResponse),
156    Status401(models::ErrorResponse),
157    Status403(models::ErrorResponse),
158    Status404(models::ErrorResponse),
159    Status503(models::ErrorResponse),
160    Status5XX(models::ErrorResponse),
161    UnknownValue(serde_json::Value),
162}
163
164/// struct for typed errors of method [`create_table_scalar_index`]
165#[derive(Debug, Clone, Serialize, Deserialize)]
166#[serde(untagged)]
167pub enum CreateTableScalarIndexError {
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 [`create_table_tag`]
178#[derive(Debug, Clone, Serialize, Deserialize)]
179#[serde(untagged)]
180pub enum CreateTableTagError {
181    Status400(models::ErrorResponse),
182    Status401(models::ErrorResponse),
183    Status403(models::ErrorResponse),
184    Status404(models::ErrorResponse),
185    Status409(models::ErrorResponse),
186    Status503(models::ErrorResponse),
187    Status5XX(models::ErrorResponse),
188    UnknownValue(serde_json::Value),
189}
190
191/// struct for typed errors of method [`create_table_version`]
192#[derive(Debug, Clone, Serialize, Deserialize)]
193#[serde(untagged)]
194pub enum CreateTableVersionError {
195    Status400(models::ErrorResponse),
196    Status401(models::ErrorResponse),
197    Status403(models::ErrorResponse),
198    Status404(models::ErrorResponse),
199    Status409(models::ErrorResponse),
200    Status503(models::ErrorResponse),
201    Status5XX(models::ErrorResponse),
202    UnknownValue(serde_json::Value),
203}
204
205/// struct for typed errors of method [`declare_table`]
206#[derive(Debug, Clone, Serialize, Deserialize)]
207#[serde(untagged)]
208pub enum DeclareTableError {
209    Status400(models::ErrorResponse),
210    Status401(models::ErrorResponse),
211    Status403(models::ErrorResponse),
212    Status404(models::ErrorResponse),
213    Status409(models::ErrorResponse),
214    Status503(models::ErrorResponse),
215    Status5XX(models::ErrorResponse),
216    UnknownValue(serde_json::Value),
217}
218
219/// struct for typed errors of method [`delete_from_table`]
220#[derive(Debug, Clone, Serialize, Deserialize)]
221#[serde(untagged)]
222pub enum DeleteFromTableError {
223    Status400(models::ErrorResponse),
224    Status401(models::ErrorResponse),
225    Status403(models::ErrorResponse),
226    Status404(models::ErrorResponse),
227    Status503(models::ErrorResponse),
228    Status5XX(models::ErrorResponse),
229    UnknownValue(serde_json::Value),
230}
231
232/// struct for typed errors of method [`delete_table_tag`]
233#[derive(Debug, Clone, Serialize, Deserialize)]
234#[serde(untagged)]
235pub enum DeleteTableTagError {
236    Status400(models::ErrorResponse),
237    Status401(models::ErrorResponse),
238    Status403(models::ErrorResponse),
239    Status404(models::ErrorResponse),
240    Status503(models::ErrorResponse),
241    Status5XX(models::ErrorResponse),
242    UnknownValue(serde_json::Value),
243}
244
245/// struct for typed errors of method [`deregister_table`]
246#[derive(Debug, Clone, Serialize, Deserialize)]
247#[serde(untagged)]
248pub enum DeregisterTableError {
249    Status400(models::ErrorResponse),
250    Status401(models::ErrorResponse),
251    Status403(models::ErrorResponse),
252    Status404(models::ErrorResponse),
253    Status503(models::ErrorResponse),
254    Status5XX(models::ErrorResponse),
255    UnknownValue(serde_json::Value),
256}
257
258/// struct for typed errors of method [`describe_table`]
259#[derive(Debug, Clone, Serialize, Deserialize)]
260#[serde(untagged)]
261pub enum DescribeTableError {
262    Status400(models::ErrorResponse),
263    Status401(models::ErrorResponse),
264    Status403(models::ErrorResponse),
265    Status404(models::ErrorResponse),
266    Status503(models::ErrorResponse),
267    Status5XX(models::ErrorResponse),
268    UnknownValue(serde_json::Value),
269}
270
271/// struct for typed errors of method [`describe_table_index_stats`]
272#[derive(Debug, Clone, Serialize, Deserialize)]
273#[serde(untagged)]
274pub enum DescribeTableIndexStatsError {
275    Status400(models::ErrorResponse),
276    Status401(models::ErrorResponse),
277    Status403(models::ErrorResponse),
278    Status404(models::ErrorResponse),
279    Status503(models::ErrorResponse),
280    Status5XX(models::ErrorResponse),
281    UnknownValue(serde_json::Value),
282}
283
284/// struct for typed errors of method [`describe_table_version`]
285#[derive(Debug, Clone, Serialize, Deserialize)]
286#[serde(untagged)]
287pub enum DescribeTableVersionError {
288    Status400(models::ErrorResponse),
289    Status401(models::ErrorResponse),
290    Status403(models::ErrorResponse),
291    Status404(models::ErrorResponse),
292    Status503(models::ErrorResponse),
293    Status5XX(models::ErrorResponse),
294    UnknownValue(serde_json::Value),
295}
296
297/// struct for typed errors of method [`drop_table`]
298#[derive(Debug, Clone, Serialize, Deserialize)]
299#[serde(untagged)]
300pub enum DropTableError {
301    Status400(models::ErrorResponse),
302    Status401(models::ErrorResponse),
303    Status403(models::ErrorResponse),
304    Status404(models::ErrorResponse),
305    Status503(models::ErrorResponse),
306    Status5XX(models::ErrorResponse),
307    UnknownValue(serde_json::Value),
308}
309
310/// struct for typed errors of method [`drop_table_index`]
311#[derive(Debug, Clone, Serialize, Deserialize)]
312#[serde(untagged)]
313pub enum DropTableIndexError {
314    Status400(models::ErrorResponse),
315    Status401(models::ErrorResponse),
316    Status403(models::ErrorResponse),
317    Status404(models::ErrorResponse),
318    Status503(models::ErrorResponse),
319    Status5XX(models::ErrorResponse),
320    UnknownValue(serde_json::Value),
321}
322
323/// struct for typed errors of method [`explain_table_query_plan`]
324#[derive(Debug, Clone, Serialize, Deserialize)]
325#[serde(untagged)]
326pub enum ExplainTableQueryPlanError {
327    Status400(models::ErrorResponse),
328    Status401(models::ErrorResponse),
329    Status403(models::ErrorResponse),
330    Status404(models::ErrorResponse),
331    Status503(models::ErrorResponse),
332    Status5XX(models::ErrorResponse),
333    UnknownValue(serde_json::Value),
334}
335
336/// struct for typed errors of method [`get_table_stats`]
337#[derive(Debug, Clone, Serialize, Deserialize)]
338#[serde(untagged)]
339pub enum GetTableStatsError {
340    Status400(models::ErrorResponse),
341    Status401(models::ErrorResponse),
342    Status403(models::ErrorResponse),
343    Status404(models::ErrorResponse),
344    Status503(models::ErrorResponse),
345    Status5XX(models::ErrorResponse),
346    UnknownValue(serde_json::Value),
347}
348
349/// struct for typed errors of method [`get_table_tag_version`]
350#[derive(Debug, Clone, Serialize, Deserialize)]
351#[serde(untagged)]
352pub enum GetTableTagVersionError {
353    Status400(models::ErrorResponse),
354    Status401(models::ErrorResponse),
355    Status403(models::ErrorResponse),
356    Status404(models::ErrorResponse),
357    Status503(models::ErrorResponse),
358    Status5XX(models::ErrorResponse),
359    UnknownValue(serde_json::Value),
360}
361
362/// struct for typed errors of method [`insert_into_table`]
363#[derive(Debug, Clone, Serialize, Deserialize)]
364#[serde(untagged)]
365pub enum InsertIntoTableError {
366    Status400(models::ErrorResponse),
367    Status401(models::ErrorResponse),
368    Status403(models::ErrorResponse),
369    Status404(models::ErrorResponse),
370    Status503(models::ErrorResponse),
371    Status5XX(models::ErrorResponse),
372    UnknownValue(serde_json::Value),
373}
374
375/// struct for typed errors of method [`list_all_tables`]
376#[derive(Debug, Clone, Serialize, Deserialize)]
377#[serde(untagged)]
378pub enum ListAllTablesError {
379    Status400(models::ErrorResponse),
380    Status401(models::ErrorResponse),
381    Status403(models::ErrorResponse),
382    Status503(models::ErrorResponse),
383    Status5XX(models::ErrorResponse),
384    UnknownValue(serde_json::Value),
385}
386
387/// struct for typed errors of method [`list_table_indices`]
388#[derive(Debug, Clone, Serialize, Deserialize)]
389#[serde(untagged)]
390pub enum ListTableIndicesError {
391    Status400(models::ErrorResponse),
392    Status401(models::ErrorResponse),
393    Status403(models::ErrorResponse),
394    Status404(models::ErrorResponse),
395    Status503(models::ErrorResponse),
396    Status5XX(models::ErrorResponse),
397    UnknownValue(serde_json::Value),
398}
399
400/// struct for typed errors of method [`list_table_tags`]
401#[derive(Debug, Clone, Serialize, Deserialize)]
402#[serde(untagged)]
403pub enum ListTableTagsError {
404    Status400(models::ErrorResponse),
405    Status401(models::ErrorResponse),
406    Status403(models::ErrorResponse),
407    Status404(models::ErrorResponse),
408    Status503(models::ErrorResponse),
409    Status5XX(models::ErrorResponse),
410    UnknownValue(serde_json::Value),
411}
412
413/// struct for typed errors of method [`list_table_versions`]
414#[derive(Debug, Clone, Serialize, Deserialize)]
415#[serde(untagged)]
416pub enum ListTableVersionsError {
417    Status400(models::ErrorResponse),
418    Status401(models::ErrorResponse),
419    Status403(models::ErrorResponse),
420    Status404(models::ErrorResponse),
421    Status503(models::ErrorResponse),
422    Status5XX(models::ErrorResponse),
423    UnknownValue(serde_json::Value),
424}
425
426/// struct for typed errors of method [`list_tables`]
427#[derive(Debug, Clone, Serialize, Deserialize)]
428#[serde(untagged)]
429pub enum ListTablesError {
430    Status400(models::ErrorResponse),
431    Status401(models::ErrorResponse),
432    Status403(models::ErrorResponse),
433    Status404(models::ErrorResponse),
434    Status406(models::ErrorResponse),
435    Status503(models::ErrorResponse),
436    Status5XX(models::ErrorResponse),
437    UnknownValue(serde_json::Value),
438}
439
440/// struct for typed errors of method [`merge_insert_into_table`]
441#[derive(Debug, Clone, Serialize, Deserialize)]
442#[serde(untagged)]
443pub enum MergeInsertIntoTableError {
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 [`query_table`]
454#[derive(Debug, Clone, Serialize, Deserialize)]
455#[serde(untagged)]
456pub enum QueryTableError {
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 [`refresh_materialized_view`]
467#[derive(Debug, Clone, Serialize, Deserialize)]
468#[serde(untagged)]
469pub enum RefreshMaterializedViewError {
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 [`register_table`]
480#[derive(Debug, Clone, Serialize, Deserialize)]
481#[serde(untagged)]
482pub enum RegisterTableError {
483    Status400(models::ErrorResponse),
484    Status401(models::ErrorResponse),
485    Status403(models::ErrorResponse),
486    Status404(models::ErrorResponse),
487    Status406(models::ErrorResponse),
488    Status409(models::ErrorResponse),
489    Status503(models::ErrorResponse),
490    Status5XX(models::ErrorResponse),
491    UnknownValue(serde_json::Value),
492}
493
494/// struct for typed errors of method [`rename_table`]
495#[derive(Debug, Clone, Serialize, Deserialize)]
496#[serde(untagged)]
497pub enum RenameTableError {
498    Status400(models::ErrorResponse),
499    Status401(models::ErrorResponse),
500    Status403(models::ErrorResponse),
501    Status404(models::ErrorResponse),
502    Status409(models::ErrorResponse),
503    Status503(models::ErrorResponse),
504    Status5XX(models::ErrorResponse),
505    UnknownValue(serde_json::Value),
506}
507
508/// struct for typed errors of method [`restore_table`]
509#[derive(Debug, Clone, Serialize, Deserialize)]
510#[serde(untagged)]
511pub enum RestoreTableError {
512    Status400(models::ErrorResponse),
513    Status401(models::ErrorResponse),
514    Status403(models::ErrorResponse),
515    Status404(models::ErrorResponse),
516    Status503(models::ErrorResponse),
517    Status5XX(models::ErrorResponse),
518    UnknownValue(serde_json::Value),
519}
520
521/// struct for typed errors of method [`table_exists`]
522#[derive(Debug, Clone, Serialize, Deserialize)]
523#[serde(untagged)]
524pub enum TableExistsError {
525    Status400(models::ErrorResponse),
526    Status401(models::ErrorResponse),
527    Status403(models::ErrorResponse),
528    Status404(models::ErrorResponse),
529    Status503(models::ErrorResponse),
530    Status5XX(models::ErrorResponse),
531    UnknownValue(serde_json::Value),
532}
533
534/// struct for typed errors of method [`update_table`]
535#[derive(Debug, Clone, Serialize, Deserialize)]
536#[serde(untagged)]
537pub enum UpdateTableError {
538    Status400(models::ErrorResponse),
539    Status401(models::ErrorResponse),
540    Status403(models::ErrorResponse),
541    Status404(models::ErrorResponse),
542    Status503(models::ErrorResponse),
543    Status5XX(models::ErrorResponse),
544    UnknownValue(serde_json::Value),
545}
546
547/// struct for typed errors of method [`update_table_schema_metadata`]
548#[derive(Debug, Clone, Serialize, Deserialize)]
549#[serde(untagged)]
550pub enum UpdateTableSchemaMetadataError {
551    Status400(models::ErrorResponse),
552    Status401(models::ErrorResponse),
553    Status403(models::ErrorResponse),
554    Status404(models::ErrorResponse),
555    Status503(models::ErrorResponse),
556    Status5XX(models::ErrorResponse),
557    UnknownValue(serde_json::Value),
558}
559
560/// struct for typed errors of method [`update_table_tag`]
561#[derive(Debug, Clone, Serialize, Deserialize)]
562#[serde(untagged)]
563pub enum UpdateTableTagError {
564    Status400(models::ErrorResponse),
565    Status401(models::ErrorResponse),
566    Status403(models::ErrorResponse),
567    Status404(models::ErrorResponse),
568    Status503(models::ErrorResponse),
569    Status5XX(models::ErrorResponse),
570    UnknownValue(serde_json::Value),
571}
572
573
574/// Add new columns to table `id` using SQL expressions or default values. 
575pub 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>> {
576    // add a prefix to parameters to efficiently prevent name collisions
577    let p_id = id;
578    let p_alter_table_add_columns_request = alter_table_add_columns_request;
579    let p_delimiter = delimiter;
580
581    let uri_str = format!("{}/v1/table/{id}/add_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
582    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
583
584    if let Some(ref param_value) = p_delimiter {
585        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
586    }
587    if let Some(ref user_agent) = configuration.user_agent {
588        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
589    }
590    if let Some(ref token) = configuration.oauth_access_token {
591        req_builder = req_builder.bearer_auth(token.to_owned());
592    };
593    if let Some(ref apikey) = configuration.api_key {
594        let key = apikey.key.clone();
595        let value = match apikey.prefix {
596            Some(ref prefix) => format!("{} {}", prefix, key),
597            None => key,
598        };
599        req_builder = req_builder.header("x-api-key", value);
600    };
601    if let Some(ref token) = configuration.bearer_access_token {
602        req_builder = req_builder.bearer_auth(token.to_owned());
603    };
604    req_builder = req_builder.json(&p_alter_table_add_columns_request);
605
606    let req = req_builder.build()?;
607    let resp = configuration.client.execute(req).await?;
608
609    let status = resp.status();
610    let content_type = resp
611        .headers()
612        .get("content-type")
613        .and_then(|v| v.to_str().ok())
614        .unwrap_or("application/octet-stream");
615    let content_type = super::ContentType::from(content_type);
616
617    if !status.is_client_error() && !status.is_server_error() {
618        let content = resp.text().await?;
619        match content_type {
620            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
621            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableAddColumnsResponse`"))),
622            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`")))),
623        }
624    } else {
625        let content = resp.text().await?;
626        let entity: Option<AlterTableAddColumnsError> = serde_json::from_str(&content).ok();
627        Err(Error::ResponseError(ResponseContent { status, content, entity }))
628    }
629}
630
631/// Modify existing columns in table `id`, such as renaming or changing data types. 
632pub 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>> {
633    // add a prefix to parameters to efficiently prevent name collisions
634    let p_id = id;
635    let p_alter_table_alter_columns_request = alter_table_alter_columns_request;
636    let p_delimiter = delimiter;
637
638    let uri_str = format!("{}/v1/table/{id}/alter_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
639    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
640
641    if let Some(ref param_value) = p_delimiter {
642        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
643    }
644    if let Some(ref user_agent) = configuration.user_agent {
645        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
646    }
647    if let Some(ref token) = configuration.oauth_access_token {
648        req_builder = req_builder.bearer_auth(token.to_owned());
649    };
650    if let Some(ref apikey) = configuration.api_key {
651        let key = apikey.key.clone();
652        let value = match apikey.prefix {
653            Some(ref prefix) => format!("{} {}", prefix, key),
654            None => key,
655        };
656        req_builder = req_builder.header("x-api-key", value);
657    };
658    if let Some(ref token) = configuration.bearer_access_token {
659        req_builder = req_builder.bearer_auth(token.to_owned());
660    };
661    req_builder = req_builder.json(&p_alter_table_alter_columns_request);
662
663    let req = req_builder.build()?;
664    let resp = configuration.client.execute(req).await?;
665
666    let status = resp.status();
667    let content_type = resp
668        .headers()
669        .get("content-type")
670        .and_then(|v| v.to_str().ok())
671        .unwrap_or("application/octet-stream");
672    let content_type = super::ContentType::from(content_type);
673
674    if !status.is_client_error() && !status.is_server_error() {
675        let content = resp.text().await?;
676        match content_type {
677            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
678            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableAlterColumnsResponse`"))),
679            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`")))),
680        }
681    } else {
682        let content = resp.text().await?;
683        let entity: Option<AlterTableAlterColumnsError> = serde_json::from_str(&content).ok();
684        Err(Error::ResponseError(ResponseContent { status, content, entity }))
685    }
686}
687
688/// Trigger an asynchronous backfill job for a computed column on table `id`. The column must be a virtual (UDF-backed) column. Returns a job ID for tracking. 
689pub async fn alter_table_backfill_columns(configuration: &configuration::Configuration, id: &str, alter_table_backfill_columns_request: models::AlterTableBackfillColumnsRequest, delimiter: Option<&str>) -> Result<models::AlterTableBackfillColumnsResponse, Error<AlterTableBackfillColumnsError>> {
690    // add a prefix to parameters to efficiently prevent name collisions
691    let p_id = id;
692    let p_alter_table_backfill_columns_request = alter_table_backfill_columns_request;
693    let p_delimiter = delimiter;
694
695    let uri_str = format!("{}/v1/table/{id}/backfill_column", configuration.base_path, id=crate::apis::urlencode(p_id));
696    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
697
698    if let Some(ref param_value) = p_delimiter {
699        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
700    }
701    if let Some(ref user_agent) = configuration.user_agent {
702        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
703    }
704    if let Some(ref token) = configuration.oauth_access_token {
705        req_builder = req_builder.bearer_auth(token.to_owned());
706    };
707    if let Some(ref apikey) = configuration.api_key {
708        let key = apikey.key.clone();
709        let value = match apikey.prefix {
710            Some(ref prefix) => format!("{} {}", prefix, key),
711            None => key,
712        };
713        req_builder = req_builder.header("x-api-key", value);
714    };
715    if let Some(ref token) = configuration.bearer_access_token {
716        req_builder = req_builder.bearer_auth(token.to_owned());
717    };
718    req_builder = req_builder.json(&p_alter_table_backfill_columns_request);
719
720    let req = req_builder.build()?;
721    let resp = configuration.client.execute(req).await?;
722
723    let status = resp.status();
724    let content_type = resp
725        .headers()
726        .get("content-type")
727        .and_then(|v| v.to_str().ok())
728        .unwrap_or("application/octet-stream");
729    let content_type = super::ContentType::from(content_type);
730
731    if !status.is_client_error() && !status.is_server_error() {
732        let content = resp.text().await?;
733        match content_type {
734            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
735            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableBackfillColumnsResponse`"))),
736            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::AlterTableBackfillColumnsResponse`")))),
737        }
738    } else {
739        let content = resp.text().await?;
740        let entity: Option<AlterTableBackfillColumnsError> = serde_json::from_str(&content).ok();
741        Err(Error::ResponseError(ResponseContent { status, content, entity }))
742    }
743}
744
745/// Remove specified columns from table `id`. 
746pub 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>> {
747    // add a prefix to parameters to efficiently prevent name collisions
748    let p_id = id;
749    let p_alter_table_drop_columns_request = alter_table_drop_columns_request;
750    let p_delimiter = delimiter;
751
752    let uri_str = format!("{}/v1/table/{id}/drop_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
753    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
754
755    if let Some(ref param_value) = p_delimiter {
756        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
757    }
758    if let Some(ref user_agent) = configuration.user_agent {
759        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
760    }
761    if let Some(ref token) = configuration.oauth_access_token {
762        req_builder = req_builder.bearer_auth(token.to_owned());
763    };
764    if let Some(ref apikey) = configuration.api_key {
765        let key = apikey.key.clone();
766        let value = match apikey.prefix {
767            Some(ref prefix) => format!("{} {}", prefix, key),
768            None => key,
769        };
770        req_builder = req_builder.header("x-api-key", value);
771    };
772    if let Some(ref token) = configuration.bearer_access_token {
773        req_builder = req_builder.bearer_auth(token.to_owned());
774    };
775    req_builder = req_builder.json(&p_alter_table_drop_columns_request);
776
777    let req = req_builder.build()?;
778    let resp = configuration.client.execute(req).await?;
779
780    let status = resp.status();
781    let content_type = resp
782        .headers()
783        .get("content-type")
784        .and_then(|v| v.to_str().ok())
785        .unwrap_or("application/octet-stream");
786    let content_type = super::ContentType::from(content_type);
787
788    if !status.is_client_error() && !status.is_server_error() {
789        let content = resp.text().await?;
790        match content_type {
791            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
792            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableDropColumnsResponse`"))),
793            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`")))),
794        }
795    } else {
796        let content = resp.text().await?;
797        let entity: Option<AlterTableDropColumnsError> = serde_json::from_str(&content).ok();
798        Err(Error::ResponseError(ResponseContent { status, content, entity }))
799    }
800}
801
802/// 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. 
803pub 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>> {
804    // add a prefix to parameters to efficiently prevent name collisions
805    let p_id = id;
806    let p_analyze_table_query_plan_request = analyze_table_query_plan_request;
807    let p_delimiter = delimiter;
808
809    let uri_str = format!("{}/v1/table/{id}/analyze_plan", configuration.base_path, id=crate::apis::urlencode(p_id));
810    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
811
812    if let Some(ref param_value) = p_delimiter {
813        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
814    }
815    if let Some(ref user_agent) = configuration.user_agent {
816        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
817    }
818    if let Some(ref token) = configuration.oauth_access_token {
819        req_builder = req_builder.bearer_auth(token.to_owned());
820    };
821    if let Some(ref apikey) = configuration.api_key {
822        let key = apikey.key.clone();
823        let value = match apikey.prefix {
824            Some(ref prefix) => format!("{} {}", prefix, key),
825            None => key,
826        };
827        req_builder = req_builder.header("x-api-key", value);
828    };
829    if let Some(ref token) = configuration.bearer_access_token {
830        req_builder = req_builder.bearer_auth(token.to_owned());
831    };
832    req_builder = req_builder.json(&p_analyze_table_query_plan_request);
833
834    let req = req_builder.build()?;
835    let resp = configuration.client.execute(req).await?;
836
837    let status = resp.status();
838    let content_type = resp
839        .headers()
840        .get("content-type")
841        .and_then(|v| v.to_str().ok())
842        .unwrap_or("application/octet-stream");
843    let content_type = super::ContentType::from(content_type);
844
845    if !status.is_client_error() && !status.is_server_error() {
846        let content = resp.text().await?;
847        match content_type {
848            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
849            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `String`"))),
850            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`")))),
851        }
852    } else {
853        let content = resp.text().await?;
854        let entity: Option<AnalyzeTableQueryPlanError> = serde_json::from_str(&content).ok();
855        Err(Error::ResponseError(ResponseContent { status, content, entity }))
856    }
857}
858
859/// Atomically commit a batch of table operations. This is a generalized version of `BatchCreateTableVersions` that supports mixed operation types within a single atomic transaction at the metadata layer.  Supported operation types: - `DeclareTable`: Declare (reserve) a new table - `CreateTableVersion`: Create a new version entry for a table - `DeleteTableVersions`: Delete version ranges from a table - `DeregisterTable`: Deregister (soft-delete) a table  All operations are committed atomically: either all succeed or none are applied. 
860pub async fn batch_commit_tables(configuration: &configuration::Configuration, batch_commit_tables_request: models::BatchCommitTablesRequest, delimiter: Option<&str>) -> Result<models::BatchCommitTablesResponse, Error<BatchCommitTablesError>> {
861    // add a prefix to parameters to efficiently prevent name collisions
862    let p_batch_commit_tables_request = batch_commit_tables_request;
863    let p_delimiter = delimiter;
864
865    let uri_str = format!("{}/v1/table/batch-commit", configuration.base_path);
866    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
867
868    if let Some(ref param_value) = p_delimiter {
869        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
870    }
871    if let Some(ref user_agent) = configuration.user_agent {
872        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
873    }
874    if let Some(ref token) = configuration.oauth_access_token {
875        req_builder = req_builder.bearer_auth(token.to_owned());
876    };
877    if let Some(ref apikey) = configuration.api_key {
878        let key = apikey.key.clone();
879        let value = match apikey.prefix {
880            Some(ref prefix) => format!("{} {}", prefix, key),
881            None => key,
882        };
883        req_builder = req_builder.header("x-api-key", value);
884    };
885    if let Some(ref token) = configuration.bearer_access_token {
886        req_builder = req_builder.bearer_auth(token.to_owned());
887    };
888    req_builder = req_builder.json(&p_batch_commit_tables_request);
889
890    let req = req_builder.build()?;
891    let resp = configuration.client.execute(req).await?;
892
893    let status = resp.status();
894    let content_type = resp
895        .headers()
896        .get("content-type")
897        .and_then(|v| v.to_str().ok())
898        .unwrap_or("application/octet-stream");
899    let content_type = super::ContentType::from(content_type);
900
901    if !status.is_client_error() && !status.is_server_error() {
902        let content = resp.text().await?;
903        match content_type {
904            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
905            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::BatchCommitTablesResponse`"))),
906            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::BatchCommitTablesResponse`")))),
907        }
908    } else {
909        let content = resp.text().await?;
910        let entity: Option<BatchCommitTablesError> = serde_json::from_str(&content).ok();
911        Err(Error::ResponseError(ResponseContent { status, content, entity }))
912    }
913}
914
915/// Atomically create new version entries for multiple tables.  This operation is atomic: either all table versions are created successfully, or none are created. If any version creation fails (e.g., due to conflict), the entire batch operation fails.  Each entry in the request specifies the table identifier and version details. This supports `put_if_not_exists` semantics for each version entry. 
916pub async fn batch_create_table_versions(configuration: &configuration::Configuration, batch_create_table_versions_request: models::BatchCreateTableVersionsRequest, delimiter: Option<&str>) -> Result<models::BatchCreateTableVersionsResponse, Error<BatchCreateTableVersionsError>> {
917    // add a prefix to parameters to efficiently prevent name collisions
918    let p_batch_create_table_versions_request = batch_create_table_versions_request;
919    let p_delimiter = delimiter;
920
921    let uri_str = format!("{}/v1/table/version/batch-create", configuration.base_path);
922    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
923
924    if let Some(ref param_value) = p_delimiter {
925        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
926    }
927    if let Some(ref user_agent) = configuration.user_agent {
928        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
929    }
930    if let Some(ref token) = configuration.oauth_access_token {
931        req_builder = req_builder.bearer_auth(token.to_owned());
932    };
933    if let Some(ref apikey) = configuration.api_key {
934        let key = apikey.key.clone();
935        let value = match apikey.prefix {
936            Some(ref prefix) => format!("{} {}", prefix, key),
937            None => key,
938        };
939        req_builder = req_builder.header("x-api-key", value);
940    };
941    if let Some(ref token) = configuration.bearer_access_token {
942        req_builder = req_builder.bearer_auth(token.to_owned());
943    };
944    req_builder = req_builder.json(&p_batch_create_table_versions_request);
945
946    let req = req_builder.build()?;
947    let resp = configuration.client.execute(req).await?;
948
949    let status = resp.status();
950    let content_type = resp
951        .headers()
952        .get("content-type")
953        .and_then(|v| v.to_str().ok())
954        .unwrap_or("application/octet-stream");
955    let content_type = super::ContentType::from(content_type);
956
957    if !status.is_client_error() && !status.is_server_error() {
958        let content = resp.text().await?;
959        match content_type {
960            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
961            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::BatchCreateTableVersionsResponse`"))),
962            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::BatchCreateTableVersionsResponse`")))),
963        }
964    } else {
965        let content = resp.text().await?;
966        let entity: Option<BatchCreateTableVersionsError> = serde_json::from_str(&content).ok();
967        Err(Error::ResponseError(ResponseContent { status, content, entity }))
968    }
969}
970
971/// Delete version metadata records for table `id`.  This operation deletes version tracking records, NOT the actual table data. It supports deleting ranges of versions for efficient bulk cleanup.  Special range values: - `start_version: 0` with `end_version: -1` means delete ALL version records 
972pub async fn batch_delete_table_versions(configuration: &configuration::Configuration, id: &str, batch_delete_table_versions_request: models::BatchDeleteTableVersionsRequest, delimiter: Option<&str>) -> Result<models::BatchDeleteTableVersionsResponse, Error<BatchDeleteTableVersionsError>> {
973    // add a prefix to parameters to efficiently prevent name collisions
974    let p_id = id;
975    let p_batch_delete_table_versions_request = batch_delete_table_versions_request;
976    let p_delimiter = delimiter;
977
978    let uri_str = format!("{}/v1/table/{id}/version/delete", configuration.base_path, id=crate::apis::urlencode(p_id));
979    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
980
981    if let Some(ref param_value) = p_delimiter {
982        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
983    }
984    if let Some(ref user_agent) = configuration.user_agent {
985        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
986    }
987    if let Some(ref token) = configuration.oauth_access_token {
988        req_builder = req_builder.bearer_auth(token.to_owned());
989    };
990    if let Some(ref apikey) = configuration.api_key {
991        let key = apikey.key.clone();
992        let value = match apikey.prefix {
993            Some(ref prefix) => format!("{} {}", prefix, key),
994            None => key,
995        };
996        req_builder = req_builder.header("x-api-key", value);
997    };
998    if let Some(ref token) = configuration.bearer_access_token {
999        req_builder = req_builder.bearer_auth(token.to_owned());
1000    };
1001    req_builder = req_builder.json(&p_batch_delete_table_versions_request);
1002
1003    let req = req_builder.build()?;
1004    let resp = configuration.client.execute(req).await?;
1005
1006    let status = resp.status();
1007    let content_type = resp
1008        .headers()
1009        .get("content-type")
1010        .and_then(|v| v.to_str().ok())
1011        .unwrap_or("application/octet-stream");
1012    let content_type = super::ContentType::from(content_type);
1013
1014    if !status.is_client_error() && !status.is_server_error() {
1015        let content = resp.text().await?;
1016        match content_type {
1017            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1018            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::BatchDeleteTableVersionsResponse`"))),
1019            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::BatchDeleteTableVersionsResponse`")))),
1020        }
1021    } else {
1022        let content = resp.text().await?;
1023        let entity: Option<BatchDeleteTableVersionsError> = serde_json::from_str(&content).ok();
1024        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1025    }
1026}
1027
1028/// 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. 
1029pub async fn count_table_rows(configuration: &configuration::Configuration, id: &str, count_table_rows_request: models::CountTableRowsRequest, delimiter: Option<&str>) -> Result<i64, Error<CountTableRowsError>> {
1030    // add a prefix to parameters to efficiently prevent name collisions
1031    let p_id = id;
1032    let p_count_table_rows_request = count_table_rows_request;
1033    let p_delimiter = delimiter;
1034
1035    let uri_str = format!("{}/v1/table/{id}/count_rows", configuration.base_path, id=crate::apis::urlencode(p_id));
1036    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1037
1038    if let Some(ref param_value) = p_delimiter {
1039        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1040    }
1041    if let Some(ref user_agent) = configuration.user_agent {
1042        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1043    }
1044    if let Some(ref token) = configuration.oauth_access_token {
1045        req_builder = req_builder.bearer_auth(token.to_owned());
1046    };
1047    if let Some(ref apikey) = configuration.api_key {
1048        let key = apikey.key.clone();
1049        let value = match apikey.prefix {
1050            Some(ref prefix) => format!("{} {}", prefix, key),
1051            None => key,
1052        };
1053        req_builder = req_builder.header("x-api-key", value);
1054    };
1055    if let Some(ref token) = configuration.bearer_access_token {
1056        req_builder = req_builder.bearer_auth(token.to_owned());
1057    };
1058    req_builder = req_builder.json(&p_count_table_rows_request);
1059
1060    let req = req_builder.build()?;
1061    let resp = configuration.client.execute(req).await?;
1062
1063    let status = resp.status();
1064    let content_type = resp
1065        .headers()
1066        .get("content-type")
1067        .and_then(|v| v.to_str().ok())
1068        .unwrap_or("application/octet-stream");
1069    let content_type = super::ContentType::from(content_type);
1070
1071    if !status.is_client_error() && !status.is_server_error() {
1072        let content = resp.text().await?;
1073        match content_type {
1074            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1075            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `i64`"))),
1076            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`")))),
1077        }
1078    } else {
1079        let content = resp.text().await?;
1080        let entity: Option<CountTableRowsError> = serde_json::from_str(&content).ok();
1081        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1082    }
1083}
1084
1085/// 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 - `properties`: serialize as a single JSON-encoded query parameter such as   `properties={\"user\":\"alice\",\"team\":\"eng\"}`; these are business logic properties   managed by the namespace implementation outside Lance context - `storage_options`: serialize as a single JSON-encoded query parameter such as   `storage_options={\"aws_region\":\"us-east-1\",\"timeout\":\"30s\"}`; these configure   write-time overrides for data and metadata written during table creation 
1086pub async fn create_table(configuration: &configuration::Configuration, id: &str, body: Vec<u8>, delimiter: Option<&str>, mode: Option<&str>, properties: Option<&str>, storage_options: Option<&str>) -> Result<models::CreateTableResponse, Error<CreateTableError>> {
1087    // add a prefix to parameters to efficiently prevent name collisions
1088    let p_id = id;
1089    let p_body = body;
1090    let p_delimiter = delimiter;
1091    let p_mode = mode;
1092    let p_properties = properties;
1093    let p_storage_options = storage_options;
1094
1095    let uri_str = format!("{}/v1/table/{id}/create", configuration.base_path, id=crate::apis::urlencode(p_id));
1096    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1097
1098    if let Some(ref param_value) = p_delimiter {
1099        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1100    }
1101    if let Some(ref param_value) = p_mode {
1102        req_builder = req_builder.query(&[("mode", &param_value.to_string())]);
1103    }
1104    if let Some(ref param_value) = p_properties {
1105        req_builder = req_builder.query(&[("properties", &param_value.to_string())]);
1106    }
1107    if let Some(ref param_value) = p_storage_options {
1108        req_builder = req_builder.query(&[("storage_options", &param_value.to_string())]);
1109    }
1110    if let Some(ref user_agent) = configuration.user_agent {
1111        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1112    }
1113    if let Some(ref token) = configuration.oauth_access_token {
1114        req_builder = req_builder.bearer_auth(token.to_owned());
1115    };
1116    if let Some(ref apikey) = configuration.api_key {
1117        let key = apikey.key.clone();
1118        let value = match apikey.prefix {
1119            Some(ref prefix) => format!("{} {}", prefix, key),
1120            None => key,
1121        };
1122        req_builder = req_builder.header("x-api-key", value);
1123    };
1124    if let Some(ref token) = configuration.bearer_access_token {
1125        req_builder = req_builder.bearer_auth(token.to_owned());
1126    };
1127    req_builder = req_builder.body(p_body);
1128
1129    let req = req_builder.build()?;
1130    let resp = configuration.client.execute(req).await?;
1131
1132    let status = resp.status();
1133    let content_type = resp
1134        .headers()
1135        .get("content-type")
1136        .and_then(|v| v.to_str().ok())
1137        .unwrap_or("application/octet-stream");
1138    let content_type = super::ContentType::from(content_type);
1139
1140    if !status.is_client_error() && !status.is_server_error() {
1141        let content = resp.text().await?;
1142        match content_type {
1143            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1144            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableResponse`"))),
1145            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`")))),
1146        }
1147    } else {
1148        let content = resp.text().await?;
1149        let entity: Option<CreateTableError> = serde_json::from_str(&content).ok();
1150        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1151    }
1152}
1153
1154/// 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. 
1155pub async fn create_table_index(configuration: &configuration::Configuration, id: &str, create_table_index_request: models::CreateTableIndexRequest, delimiter: Option<&str>) -> Result<models::CreateTableIndexResponse, Error<CreateTableIndexError>> {
1156    // add a prefix to parameters to efficiently prevent name collisions
1157    let p_id = id;
1158    let p_create_table_index_request = create_table_index_request;
1159    let p_delimiter = delimiter;
1160
1161    let uri_str = format!("{}/v1/table/{id}/create_index", configuration.base_path, id=crate::apis::urlencode(p_id));
1162    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1163
1164    if let Some(ref param_value) = p_delimiter {
1165        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1166    }
1167    if let Some(ref user_agent) = configuration.user_agent {
1168        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1169    }
1170    if let Some(ref token) = configuration.oauth_access_token {
1171        req_builder = req_builder.bearer_auth(token.to_owned());
1172    };
1173    if let Some(ref apikey) = configuration.api_key {
1174        let key = apikey.key.clone();
1175        let value = match apikey.prefix {
1176            Some(ref prefix) => format!("{} {}", prefix, key),
1177            None => key,
1178        };
1179        req_builder = req_builder.header("x-api-key", value);
1180    };
1181    if let Some(ref token) = configuration.bearer_access_token {
1182        req_builder = req_builder.bearer_auth(token.to_owned());
1183    };
1184    req_builder = req_builder.json(&p_create_table_index_request);
1185
1186    let req = req_builder.build()?;
1187    let resp = configuration.client.execute(req).await?;
1188
1189    let status = resp.status();
1190    let content_type = resp
1191        .headers()
1192        .get("content-type")
1193        .and_then(|v| v.to_str().ok())
1194        .unwrap_or("application/octet-stream");
1195    let content_type = super::ContentType::from(content_type);
1196
1197    if !status.is_client_error() && !status.is_server_error() {
1198        let content = resp.text().await?;
1199        match content_type {
1200            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1201            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableIndexResponse`"))),
1202            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`")))),
1203        }
1204    } else {
1205        let content = resp.text().await?;
1206        let entity: Option<CreateTableIndexError> = serde_json::from_str(&content).ok();
1207        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1208    }
1209}
1210
1211/// 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. 
1212pub 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>> {
1213    // add a prefix to parameters to efficiently prevent name collisions
1214    let p_id = id;
1215    let p_create_table_index_request = create_table_index_request;
1216    let p_delimiter = delimiter;
1217
1218    let uri_str = format!("{}/v1/table/{id}/create_scalar_index", configuration.base_path, id=crate::apis::urlencode(p_id));
1219    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1220
1221    if let Some(ref param_value) = p_delimiter {
1222        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1223    }
1224    if let Some(ref user_agent) = configuration.user_agent {
1225        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1226    }
1227    if let Some(ref token) = configuration.oauth_access_token {
1228        req_builder = req_builder.bearer_auth(token.to_owned());
1229    };
1230    if let Some(ref apikey) = configuration.api_key {
1231        let key = apikey.key.clone();
1232        let value = match apikey.prefix {
1233            Some(ref prefix) => format!("{} {}", prefix, key),
1234            None => key,
1235        };
1236        req_builder = req_builder.header("x-api-key", value);
1237    };
1238    if let Some(ref token) = configuration.bearer_access_token {
1239        req_builder = req_builder.bearer_auth(token.to_owned());
1240    };
1241    req_builder = req_builder.json(&p_create_table_index_request);
1242
1243    let req = req_builder.build()?;
1244    let resp = configuration.client.execute(req).await?;
1245
1246    let status = resp.status();
1247    let content_type = resp
1248        .headers()
1249        .get("content-type")
1250        .and_then(|v| v.to_str().ok())
1251        .unwrap_or("application/octet-stream");
1252    let content_type = super::ContentType::from(content_type);
1253
1254    if !status.is_client_error() && !status.is_server_error() {
1255        let content = resp.text().await?;
1256        match content_type {
1257            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1258            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableScalarIndexResponse`"))),
1259            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`")))),
1260        }
1261    } else {
1262        let content = resp.text().await?;
1263        let entity: Option<CreateTableScalarIndexError> = serde_json::from_str(&content).ok();
1264        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1265    }
1266}
1267
1268/// Create a new tag for table `id` that points to a specific version. 
1269pub async fn create_table_tag(configuration: &configuration::Configuration, id: &str, create_table_tag_request: models::CreateTableTagRequest, delimiter: Option<&str>) -> Result<models::CreateTableTagResponse, Error<CreateTableTagError>> {
1270    // add a prefix to parameters to efficiently prevent name collisions
1271    let p_id = id;
1272    let p_create_table_tag_request = create_table_tag_request;
1273    let p_delimiter = delimiter;
1274
1275    let uri_str = format!("{}/v1/table/{id}/tags/create", configuration.base_path, id=crate::apis::urlencode(p_id));
1276    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1277
1278    if let Some(ref param_value) = p_delimiter {
1279        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1280    }
1281    if let Some(ref user_agent) = configuration.user_agent {
1282        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1283    }
1284    if let Some(ref token) = configuration.oauth_access_token {
1285        req_builder = req_builder.bearer_auth(token.to_owned());
1286    };
1287    if let Some(ref apikey) = configuration.api_key {
1288        let key = apikey.key.clone();
1289        let value = match apikey.prefix {
1290            Some(ref prefix) => format!("{} {}", prefix, key),
1291            None => key,
1292        };
1293        req_builder = req_builder.header("x-api-key", value);
1294    };
1295    if let Some(ref token) = configuration.bearer_access_token {
1296        req_builder = req_builder.bearer_auth(token.to_owned());
1297    };
1298    req_builder = req_builder.json(&p_create_table_tag_request);
1299
1300    let req = req_builder.build()?;
1301    let resp = configuration.client.execute(req).await?;
1302
1303    let status = resp.status();
1304    let content_type = resp
1305        .headers()
1306        .get("content-type")
1307        .and_then(|v| v.to_str().ok())
1308        .unwrap_or("application/octet-stream");
1309    let content_type = super::ContentType::from(content_type);
1310
1311    if !status.is_client_error() && !status.is_server_error() {
1312        let content = resp.text().await?;
1313        match content_type {
1314            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1315            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableTagResponse`"))),
1316            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`")))),
1317        }
1318    } else {
1319        let content = resp.text().await?;
1320        let entity: Option<CreateTableTagError> = serde_json::from_str(&content).ok();
1321        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1322    }
1323}
1324
1325/// Create a new version entry for table `id`.  This operation supports `put_if_not_exists` semantics. The operation will fail with 409 Conflict if the version already exists. 
1326pub async fn create_table_version(configuration: &configuration::Configuration, id: &str, create_table_version_request: models::CreateTableVersionRequest, delimiter: Option<&str>) -> Result<models::CreateTableVersionResponse, Error<CreateTableVersionError>> {
1327    // add a prefix to parameters to efficiently prevent name collisions
1328    let p_id = id;
1329    let p_create_table_version_request = create_table_version_request;
1330    let p_delimiter = delimiter;
1331
1332    let uri_str = format!("{}/v1/table/{id}/version/create", configuration.base_path, id=crate::apis::urlencode(p_id));
1333    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1334
1335    if let Some(ref param_value) = p_delimiter {
1336        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1337    }
1338    if let Some(ref user_agent) = configuration.user_agent {
1339        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1340    }
1341    if let Some(ref token) = configuration.oauth_access_token {
1342        req_builder = req_builder.bearer_auth(token.to_owned());
1343    };
1344    if let Some(ref apikey) = configuration.api_key {
1345        let key = apikey.key.clone();
1346        let value = match apikey.prefix {
1347            Some(ref prefix) => format!("{} {}", prefix, key),
1348            None => key,
1349        };
1350        req_builder = req_builder.header("x-api-key", value);
1351    };
1352    if let Some(ref token) = configuration.bearer_access_token {
1353        req_builder = req_builder.bearer_auth(token.to_owned());
1354    };
1355    req_builder = req_builder.json(&p_create_table_version_request);
1356
1357    let req = req_builder.build()?;
1358    let resp = configuration.client.execute(req).await?;
1359
1360    let status = resp.status();
1361    let content_type = resp
1362        .headers()
1363        .get("content-type")
1364        .and_then(|v| v.to_str().ok())
1365        .unwrap_or("application/octet-stream");
1366    let content_type = super::ContentType::from(content_type);
1367
1368    if !status.is_client_error() && !status.is_server_error() {
1369        let content = resp.text().await?;
1370        match content_type {
1371            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1372            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableVersionResponse`"))),
1373            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::CreateTableVersionResponse`")))),
1374        }
1375    } else {
1376        let content = resp.text().await?;
1377        let entity: Option<CreateTableVersionError> = serde_json::from_str(&content).ok();
1378        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1379    }
1380}
1381
1382/// 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. 
1383pub async fn declare_table(configuration: &configuration::Configuration, id: &str, declare_table_request: models::DeclareTableRequest, delimiter: Option<&str>) -> Result<models::DeclareTableResponse, Error<DeclareTableError>> {
1384    // add a prefix to parameters to efficiently prevent name collisions
1385    let p_id = id;
1386    let p_declare_table_request = declare_table_request;
1387    let p_delimiter = delimiter;
1388
1389    let uri_str = format!("{}/v1/table/{id}/declare", configuration.base_path, id=crate::apis::urlencode(p_id));
1390    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1391
1392    if let Some(ref param_value) = p_delimiter {
1393        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1394    }
1395    if let Some(ref user_agent) = configuration.user_agent {
1396        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1397    }
1398    if let Some(ref token) = configuration.oauth_access_token {
1399        req_builder = req_builder.bearer_auth(token.to_owned());
1400    };
1401    if let Some(ref apikey) = configuration.api_key {
1402        let key = apikey.key.clone();
1403        let value = match apikey.prefix {
1404            Some(ref prefix) => format!("{} {}", prefix, key),
1405            None => key,
1406        };
1407        req_builder = req_builder.header("x-api-key", value);
1408    };
1409    if let Some(ref token) = configuration.bearer_access_token {
1410        req_builder = req_builder.bearer_auth(token.to_owned());
1411    };
1412    req_builder = req_builder.json(&p_declare_table_request);
1413
1414    let req = req_builder.build()?;
1415    let resp = configuration.client.execute(req).await?;
1416
1417    let status = resp.status();
1418    let content_type = resp
1419        .headers()
1420        .get("content-type")
1421        .and_then(|v| v.to_str().ok())
1422        .unwrap_or("application/octet-stream");
1423    let content_type = super::ContentType::from(content_type);
1424
1425    if !status.is_client_error() && !status.is_server_error() {
1426        let content = resp.text().await?;
1427        match content_type {
1428            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1429            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DeclareTableResponse`"))),
1430            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`")))),
1431        }
1432    } else {
1433        let content = resp.text().await?;
1434        let entity: Option<DeclareTableError> = serde_json::from_str(&content).ok();
1435        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1436    }
1437}
1438
1439/// Delete rows from table `id`. 
1440pub async fn delete_from_table(configuration: &configuration::Configuration, id: &str, delete_from_table_request: models::DeleteFromTableRequest, delimiter: Option<&str>) -> Result<models::DeleteFromTableResponse, Error<DeleteFromTableError>> {
1441    // add a prefix to parameters to efficiently prevent name collisions
1442    let p_id = id;
1443    let p_delete_from_table_request = delete_from_table_request;
1444    let p_delimiter = delimiter;
1445
1446    let uri_str = format!("{}/v1/table/{id}/delete", configuration.base_path, id=crate::apis::urlencode(p_id));
1447    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1448
1449    if let Some(ref param_value) = p_delimiter {
1450        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1451    }
1452    if let Some(ref user_agent) = configuration.user_agent {
1453        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1454    }
1455    if let Some(ref token) = configuration.oauth_access_token {
1456        req_builder = req_builder.bearer_auth(token.to_owned());
1457    };
1458    if let Some(ref apikey) = configuration.api_key {
1459        let key = apikey.key.clone();
1460        let value = match apikey.prefix {
1461            Some(ref prefix) => format!("{} {}", prefix, key),
1462            None => key,
1463        };
1464        req_builder = req_builder.header("x-api-key", value);
1465    };
1466    if let Some(ref token) = configuration.bearer_access_token {
1467        req_builder = req_builder.bearer_auth(token.to_owned());
1468    };
1469    req_builder = req_builder.json(&p_delete_from_table_request);
1470
1471    let req = req_builder.build()?;
1472    let resp = configuration.client.execute(req).await?;
1473
1474    let status = resp.status();
1475    let content_type = resp
1476        .headers()
1477        .get("content-type")
1478        .and_then(|v| v.to_str().ok())
1479        .unwrap_or("application/octet-stream");
1480    let content_type = super::ContentType::from(content_type);
1481
1482    if !status.is_client_error() && !status.is_server_error() {
1483        let content = resp.text().await?;
1484        match content_type {
1485            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1486            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DeleteFromTableResponse`"))),
1487            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`")))),
1488        }
1489    } else {
1490        let content = resp.text().await?;
1491        let entity: Option<DeleteFromTableError> = serde_json::from_str(&content).ok();
1492        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1493    }
1494}
1495
1496/// Delete an existing tag from table `id`. 
1497pub async fn delete_table_tag(configuration: &configuration::Configuration, id: &str, delete_table_tag_request: models::DeleteTableTagRequest, delimiter: Option<&str>) -> Result<models::DeleteTableTagResponse, Error<DeleteTableTagError>> {
1498    // add a prefix to parameters to efficiently prevent name collisions
1499    let p_id = id;
1500    let p_delete_table_tag_request = delete_table_tag_request;
1501    let p_delimiter = delimiter;
1502
1503    let uri_str = format!("{}/v1/table/{id}/tags/delete", configuration.base_path, id=crate::apis::urlencode(p_id));
1504    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1505
1506    if let Some(ref param_value) = p_delimiter {
1507        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1508    }
1509    if let Some(ref user_agent) = configuration.user_agent {
1510        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1511    }
1512    if let Some(ref token) = configuration.oauth_access_token {
1513        req_builder = req_builder.bearer_auth(token.to_owned());
1514    };
1515    if let Some(ref apikey) = configuration.api_key {
1516        let key = apikey.key.clone();
1517        let value = match apikey.prefix {
1518            Some(ref prefix) => format!("{} {}", prefix, key),
1519            None => key,
1520        };
1521        req_builder = req_builder.header("x-api-key", value);
1522    };
1523    if let Some(ref token) = configuration.bearer_access_token {
1524        req_builder = req_builder.bearer_auth(token.to_owned());
1525    };
1526    req_builder = req_builder.json(&p_delete_table_tag_request);
1527
1528    let req = req_builder.build()?;
1529    let resp = configuration.client.execute(req).await?;
1530
1531    let status = resp.status();
1532    let content_type = resp
1533        .headers()
1534        .get("content-type")
1535        .and_then(|v| v.to_str().ok())
1536        .unwrap_or("application/octet-stream");
1537    let content_type = super::ContentType::from(content_type);
1538
1539    if !status.is_client_error() && !status.is_server_error() {
1540        let content = resp.text().await?;
1541        match content_type {
1542            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1543            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DeleteTableTagResponse`"))),
1544            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`")))),
1545        }
1546    } else {
1547        let content = resp.text().await?;
1548        let entity: Option<DeleteTableTagError> = serde_json::from_str(&content).ok();
1549        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1550    }
1551}
1552
1553/// Deregister table `id` from its namespace. 
1554pub async fn deregister_table(configuration: &configuration::Configuration, id: &str, deregister_table_request: models::DeregisterTableRequest, delimiter: Option<&str>) -> Result<models::DeregisterTableResponse, Error<DeregisterTableError>> {
1555    // add a prefix to parameters to efficiently prevent name collisions
1556    let p_id = id;
1557    let p_deregister_table_request = deregister_table_request;
1558    let p_delimiter = delimiter;
1559
1560    let uri_str = format!("{}/v1/table/{id}/deregister", configuration.base_path, id=crate::apis::urlencode(p_id));
1561    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1562
1563    if let Some(ref param_value) = p_delimiter {
1564        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1565    }
1566    if let Some(ref user_agent) = configuration.user_agent {
1567        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1568    }
1569    if let Some(ref token) = configuration.oauth_access_token {
1570        req_builder = req_builder.bearer_auth(token.to_owned());
1571    };
1572    if let Some(ref apikey) = configuration.api_key {
1573        let key = apikey.key.clone();
1574        let value = match apikey.prefix {
1575            Some(ref prefix) => format!("{} {}", prefix, key),
1576            None => key,
1577        };
1578        req_builder = req_builder.header("x-api-key", value);
1579    };
1580    if let Some(ref token) = configuration.bearer_access_token {
1581        req_builder = req_builder.bearer_auth(token.to_owned());
1582    };
1583    req_builder = req_builder.json(&p_deregister_table_request);
1584
1585    let req = req_builder.build()?;
1586    let resp = configuration.client.execute(req).await?;
1587
1588    let status = resp.status();
1589    let content_type = resp
1590        .headers()
1591        .get("content-type")
1592        .and_then(|v| v.to_str().ok())
1593        .unwrap_or("application/octet-stream");
1594    let content_type = super::ContentType::from(content_type);
1595
1596    if !status.is_client_error() && !status.is_server_error() {
1597        let content = resp.text().await?;
1598        match content_type {
1599            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1600            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DeregisterTableResponse`"))),
1601            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`")))),
1602        }
1603    } else {
1604        let content = resp.text().await?;
1605        let entity: Option<DeregisterTableError> = serde_json::from_str(&content).ok();
1606        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1607    }
1608}
1609
1610/// Describe the detailed information for table `id`.  REST NAMESPACE ONLY REST namespace passes `with_table_uri`, `load_detailed_metadata`, and `check_declared` as query parameters instead of in the request body. 
1611pub 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>, check_declared: Option<bool>) -> Result<models::DescribeTableResponse, Error<DescribeTableError>> {
1612    // add a prefix to parameters to efficiently prevent name collisions
1613    let p_id = id;
1614    let p_describe_table_request = describe_table_request;
1615    let p_delimiter = delimiter;
1616    let p_with_table_uri = with_table_uri;
1617    let p_load_detailed_metadata = load_detailed_metadata;
1618    let p_check_declared = check_declared;
1619
1620    let uri_str = format!("{}/v1/table/{id}/describe", configuration.base_path, id=crate::apis::urlencode(p_id));
1621    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1622
1623    if let Some(ref param_value) = p_delimiter {
1624        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1625    }
1626    if let Some(ref param_value) = p_with_table_uri {
1627        req_builder = req_builder.query(&[("with_table_uri", &param_value.to_string())]);
1628    }
1629    if let Some(ref param_value) = p_load_detailed_metadata {
1630        req_builder = req_builder.query(&[("load_detailed_metadata", &param_value.to_string())]);
1631    }
1632    if let Some(ref param_value) = p_check_declared {
1633        req_builder = req_builder.query(&[("check_declared", &param_value.to_string())]);
1634    }
1635    if let Some(ref user_agent) = configuration.user_agent {
1636        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1637    }
1638    if let Some(ref token) = configuration.oauth_access_token {
1639        req_builder = req_builder.bearer_auth(token.to_owned());
1640    };
1641    if let Some(ref apikey) = configuration.api_key {
1642        let key = apikey.key.clone();
1643        let value = match apikey.prefix {
1644            Some(ref prefix) => format!("{} {}", prefix, key),
1645            None => key,
1646        };
1647        req_builder = req_builder.header("x-api-key", value);
1648    };
1649    if let Some(ref token) = configuration.bearer_access_token {
1650        req_builder = req_builder.bearer_auth(token.to_owned());
1651    };
1652    req_builder = req_builder.json(&p_describe_table_request);
1653
1654    let req = req_builder.build()?;
1655    let resp = configuration.client.execute(req).await?;
1656
1657    let status = resp.status();
1658    let content_type = resp
1659        .headers()
1660        .get("content-type")
1661        .and_then(|v| v.to_str().ok())
1662        .unwrap_or("application/octet-stream");
1663    let content_type = super::ContentType::from(content_type);
1664
1665    if !status.is_client_error() && !status.is_server_error() {
1666        let content = resp.text().await?;
1667        match content_type {
1668            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1669            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTableResponse`"))),
1670            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`")))),
1671        }
1672    } else {
1673        let content = resp.text().await?;
1674        let entity: Option<DescribeTableError> = serde_json::from_str(&content).ok();
1675        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1676    }
1677}
1678
1679/// Get statistics for a specific index on a table. Returns information about the index type, distance type (for vector indices), and row counts. 
1680pub 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>> {
1681    // add a prefix to parameters to efficiently prevent name collisions
1682    let p_id = id;
1683    let p_index_name = index_name;
1684    let p_describe_table_index_stats_request = describe_table_index_stats_request;
1685    let p_delimiter = delimiter;
1686
1687    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));
1688    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1689
1690    if let Some(ref param_value) = p_delimiter {
1691        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1692    }
1693    if let Some(ref user_agent) = configuration.user_agent {
1694        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1695    }
1696    if let Some(ref token) = configuration.oauth_access_token {
1697        req_builder = req_builder.bearer_auth(token.to_owned());
1698    };
1699    if let Some(ref apikey) = configuration.api_key {
1700        let key = apikey.key.clone();
1701        let value = match apikey.prefix {
1702            Some(ref prefix) => format!("{} {}", prefix, key),
1703            None => key,
1704        };
1705        req_builder = req_builder.header("x-api-key", value);
1706    };
1707    if let Some(ref token) = configuration.bearer_access_token {
1708        req_builder = req_builder.bearer_auth(token.to_owned());
1709    };
1710    req_builder = req_builder.json(&p_describe_table_index_stats_request);
1711
1712    let req = req_builder.build()?;
1713    let resp = configuration.client.execute(req).await?;
1714
1715    let status = resp.status();
1716    let content_type = resp
1717        .headers()
1718        .get("content-type")
1719        .and_then(|v| v.to_str().ok())
1720        .unwrap_or("application/octet-stream");
1721    let content_type = super::ContentType::from(content_type);
1722
1723    if !status.is_client_error() && !status.is_server_error() {
1724        let content = resp.text().await?;
1725        match content_type {
1726            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1727            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTableIndexStatsResponse`"))),
1728            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`")))),
1729        }
1730    } else {
1731        let content = resp.text().await?;
1732        let entity: Option<DescribeTableIndexStatsError> = serde_json::from_str(&content).ok();
1733        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1734    }
1735}
1736
1737/// Describe the detailed information for a specific version of table `id`.  Returns the manifest path and metadata for the specified version. 
1738pub async fn describe_table_version(configuration: &configuration::Configuration, id: &str, describe_table_version_request: models::DescribeTableVersionRequest, delimiter: Option<&str>) -> Result<models::DescribeTableVersionResponse, Error<DescribeTableVersionError>> {
1739    // add a prefix to parameters to efficiently prevent name collisions
1740    let p_id = id;
1741    let p_describe_table_version_request = describe_table_version_request;
1742    let p_delimiter = delimiter;
1743
1744    let uri_str = format!("{}/v1/table/{id}/version/describe", configuration.base_path, id=crate::apis::urlencode(p_id));
1745    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1746
1747    if let Some(ref param_value) = p_delimiter {
1748        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1749    }
1750    if let Some(ref user_agent) = configuration.user_agent {
1751        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1752    }
1753    if let Some(ref token) = configuration.oauth_access_token {
1754        req_builder = req_builder.bearer_auth(token.to_owned());
1755    };
1756    if let Some(ref apikey) = configuration.api_key {
1757        let key = apikey.key.clone();
1758        let value = match apikey.prefix {
1759            Some(ref prefix) => format!("{} {}", prefix, key),
1760            None => key,
1761        };
1762        req_builder = req_builder.header("x-api-key", value);
1763    };
1764    if let Some(ref token) = configuration.bearer_access_token {
1765        req_builder = req_builder.bearer_auth(token.to_owned());
1766    };
1767    req_builder = req_builder.json(&p_describe_table_version_request);
1768
1769    let req = req_builder.build()?;
1770    let resp = configuration.client.execute(req).await?;
1771
1772    let status = resp.status();
1773    let content_type = resp
1774        .headers()
1775        .get("content-type")
1776        .and_then(|v| v.to_str().ok())
1777        .unwrap_or("application/octet-stream");
1778    let content_type = super::ContentType::from(content_type);
1779
1780    if !status.is_client_error() && !status.is_server_error() {
1781        let content = resp.text().await?;
1782        match content_type {
1783            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1784            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTableVersionResponse`"))),
1785            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DescribeTableVersionResponse`")))),
1786        }
1787    } else {
1788        let content = resp.text().await?;
1789        let entity: Option<DescribeTableVersionError> = serde_json::from_str(&content).ok();
1790        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1791    }
1792}
1793
1794/// 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 
1795pub async fn drop_table(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>) -> Result<models::DropTableResponse, Error<DropTableError>> {
1796    // add a prefix to parameters to efficiently prevent name collisions
1797    let p_id = id;
1798    let p_delimiter = delimiter;
1799
1800    let uri_str = format!("{}/v1/table/{id}/drop", configuration.base_path, id=crate::apis::urlencode(p_id));
1801    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1802
1803    if let Some(ref param_value) = p_delimiter {
1804        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1805    }
1806    if let Some(ref user_agent) = configuration.user_agent {
1807        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1808    }
1809    if let Some(ref token) = configuration.oauth_access_token {
1810        req_builder = req_builder.bearer_auth(token.to_owned());
1811    };
1812    if let Some(ref apikey) = configuration.api_key {
1813        let key = apikey.key.clone();
1814        let value = match apikey.prefix {
1815            Some(ref prefix) => format!("{} {}", prefix, key),
1816            None => key,
1817        };
1818        req_builder = req_builder.header("x-api-key", value);
1819    };
1820    if let Some(ref token) = configuration.bearer_access_token {
1821        req_builder = req_builder.bearer_auth(token.to_owned());
1822    };
1823
1824    let req = req_builder.build()?;
1825    let resp = configuration.client.execute(req).await?;
1826
1827    let status = resp.status();
1828    let content_type = resp
1829        .headers()
1830        .get("content-type")
1831        .and_then(|v| v.to_str().ok())
1832        .unwrap_or("application/octet-stream");
1833    let content_type = super::ContentType::from(content_type);
1834
1835    if !status.is_client_error() && !status.is_server_error() {
1836        let content = resp.text().await?;
1837        match content_type {
1838            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1839            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropTableResponse`"))),
1840            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`")))),
1841        }
1842    } else {
1843        let content = resp.text().await?;
1844        let entity: Option<DropTableError> = serde_json::from_str(&content).ok();
1845        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1846    }
1847}
1848
1849/// 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 
1850pub async fn drop_table_index(configuration: &configuration::Configuration, id: &str, index_name: &str, delimiter: Option<&str>) -> Result<models::DropTableIndexResponse, Error<DropTableIndexError>> {
1851    // add a prefix to parameters to efficiently prevent name collisions
1852    let p_id = id;
1853    let p_index_name = index_name;
1854    let p_delimiter = delimiter;
1855
1856    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));
1857    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1858
1859    if let Some(ref param_value) = p_delimiter {
1860        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1861    }
1862    if let Some(ref user_agent) = configuration.user_agent {
1863        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1864    }
1865    if let Some(ref token) = configuration.oauth_access_token {
1866        req_builder = req_builder.bearer_auth(token.to_owned());
1867    };
1868    if let Some(ref apikey) = configuration.api_key {
1869        let key = apikey.key.clone();
1870        let value = match apikey.prefix {
1871            Some(ref prefix) => format!("{} {}", prefix, key),
1872            None => key,
1873        };
1874        req_builder = req_builder.header("x-api-key", value);
1875    };
1876    if let Some(ref token) = configuration.bearer_access_token {
1877        req_builder = req_builder.bearer_auth(token.to_owned());
1878    };
1879
1880    let req = req_builder.build()?;
1881    let resp = configuration.client.execute(req).await?;
1882
1883    let status = resp.status();
1884    let content_type = resp
1885        .headers()
1886        .get("content-type")
1887        .and_then(|v| v.to_str().ok())
1888        .unwrap_or("application/octet-stream");
1889    let content_type = super::ContentType::from(content_type);
1890
1891    if !status.is_client_error() && !status.is_server_error() {
1892        let content = resp.text().await?;
1893        match content_type {
1894            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1895            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropTableIndexResponse`"))),
1896            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`")))),
1897        }
1898    } else {
1899        let content = resp.text().await?;
1900        let entity: Option<DropTableIndexError> = serde_json::from_str(&content).ok();
1901        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1902    }
1903}
1904
1905/// 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. 
1906pub 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>> {
1907    // add a prefix to parameters to efficiently prevent name collisions
1908    let p_id = id;
1909    let p_explain_table_query_plan_request = explain_table_query_plan_request;
1910    let p_delimiter = delimiter;
1911
1912    let uri_str = format!("{}/v1/table/{id}/explain_plan", configuration.base_path, id=crate::apis::urlencode(p_id));
1913    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1914
1915    if let Some(ref param_value) = p_delimiter {
1916        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1917    }
1918    if let Some(ref user_agent) = configuration.user_agent {
1919        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1920    }
1921    if let Some(ref token) = configuration.oauth_access_token {
1922        req_builder = req_builder.bearer_auth(token.to_owned());
1923    };
1924    if let Some(ref apikey) = configuration.api_key {
1925        let key = apikey.key.clone();
1926        let value = match apikey.prefix {
1927            Some(ref prefix) => format!("{} {}", prefix, key),
1928            None => key,
1929        };
1930        req_builder = req_builder.header("x-api-key", value);
1931    };
1932    if let Some(ref token) = configuration.bearer_access_token {
1933        req_builder = req_builder.bearer_auth(token.to_owned());
1934    };
1935    req_builder = req_builder.json(&p_explain_table_query_plan_request);
1936
1937    let req = req_builder.build()?;
1938    let resp = configuration.client.execute(req).await?;
1939
1940    let status = resp.status();
1941    let content_type = resp
1942        .headers()
1943        .get("content-type")
1944        .and_then(|v| v.to_str().ok())
1945        .unwrap_or("application/octet-stream");
1946    let content_type = super::ContentType::from(content_type);
1947
1948    if !status.is_client_error() && !status.is_server_error() {
1949        let content = resp.text().await?;
1950        match content_type {
1951            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1952            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `String`"))),
1953            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`")))),
1954        }
1955    } else {
1956        let content = resp.text().await?;
1957        let entity: Option<ExplainTableQueryPlanError> = serde_json::from_str(&content).ok();
1958        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1959    }
1960}
1961
1962/// Get statistics for table `id`, including row counts, data sizes, and column statistics. 
1963pub async fn get_table_stats(configuration: &configuration::Configuration, id: &str, get_table_stats_request: models::GetTableStatsRequest, delimiter: Option<&str>) -> Result<models::GetTableStatsResponse, Error<GetTableStatsError>> {
1964    // add a prefix to parameters to efficiently prevent name collisions
1965    let p_id = id;
1966    let p_get_table_stats_request = get_table_stats_request;
1967    let p_delimiter = delimiter;
1968
1969    let uri_str = format!("{}/v1/table/{id}/stats", configuration.base_path, id=crate::apis::urlencode(p_id));
1970    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1971
1972    if let Some(ref param_value) = p_delimiter {
1973        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1974    }
1975    if let Some(ref user_agent) = configuration.user_agent {
1976        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1977    }
1978    if let Some(ref token) = configuration.oauth_access_token {
1979        req_builder = req_builder.bearer_auth(token.to_owned());
1980    };
1981    if let Some(ref apikey) = configuration.api_key {
1982        let key = apikey.key.clone();
1983        let value = match apikey.prefix {
1984            Some(ref prefix) => format!("{} {}", prefix, key),
1985            None => key,
1986        };
1987        req_builder = req_builder.header("x-api-key", value);
1988    };
1989    if let Some(ref token) = configuration.bearer_access_token {
1990        req_builder = req_builder.bearer_auth(token.to_owned());
1991    };
1992    req_builder = req_builder.json(&p_get_table_stats_request);
1993
1994    let req = req_builder.build()?;
1995    let resp = configuration.client.execute(req).await?;
1996
1997    let status = resp.status();
1998    let content_type = resp
1999        .headers()
2000        .get("content-type")
2001        .and_then(|v| v.to_str().ok())
2002        .unwrap_or("application/octet-stream");
2003    let content_type = super::ContentType::from(content_type);
2004
2005    if !status.is_client_error() && !status.is_server_error() {
2006        let content = resp.text().await?;
2007        match content_type {
2008            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2009            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::GetTableStatsResponse`"))),
2010            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`")))),
2011        }
2012    } else {
2013        let content = resp.text().await?;
2014        let entity: Option<GetTableStatsError> = serde_json::from_str(&content).ok();
2015        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2016    }
2017}
2018
2019/// Get the version number that a specific tag points to for table `id`. 
2020pub 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>> {
2021    // add a prefix to parameters to efficiently prevent name collisions
2022    let p_id = id;
2023    let p_get_table_tag_version_request = get_table_tag_version_request;
2024    let p_delimiter = delimiter;
2025
2026    let uri_str = format!("{}/v1/table/{id}/tags/version", configuration.base_path, id=crate::apis::urlencode(p_id));
2027    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2028
2029    if let Some(ref param_value) = p_delimiter {
2030        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2031    }
2032    if let Some(ref user_agent) = configuration.user_agent {
2033        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2034    }
2035    if let Some(ref token) = configuration.oauth_access_token {
2036        req_builder = req_builder.bearer_auth(token.to_owned());
2037    };
2038    if let Some(ref apikey) = configuration.api_key {
2039        let key = apikey.key.clone();
2040        let value = match apikey.prefix {
2041            Some(ref prefix) => format!("{} {}", prefix, key),
2042            None => key,
2043        };
2044        req_builder = req_builder.header("x-api-key", value);
2045    };
2046    if let Some(ref token) = configuration.bearer_access_token {
2047        req_builder = req_builder.bearer_auth(token.to_owned());
2048    };
2049    req_builder = req_builder.json(&p_get_table_tag_version_request);
2050
2051    let req = req_builder.build()?;
2052    let resp = configuration.client.execute(req).await?;
2053
2054    let status = resp.status();
2055    let content_type = resp
2056        .headers()
2057        .get("content-type")
2058        .and_then(|v| v.to_str().ok())
2059        .unwrap_or("application/octet-stream");
2060    let content_type = super::ContentType::from(content_type);
2061
2062    if !status.is_client_error() && !status.is_server_error() {
2063        let content = resp.text().await?;
2064        match content_type {
2065            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2066            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::GetTableTagVersionResponse`"))),
2067            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`")))),
2068        }
2069    } else {
2070        let content = resp.text().await?;
2071        let entity: Option<GetTableTagVersionError> = serde_json::from_str(&content).ok();
2072        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2073    }
2074}
2075
2076/// Insert new records into table `id`.  For tables that have been declared but not yet created on storage (is_only_declared=true), this operation will create the table with the provided data.  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 
2077pub async fn insert_into_table(configuration: &configuration::Configuration, id: &str, body: Vec<u8>, delimiter: Option<&str>, mode: Option<&str>) -> Result<models::InsertIntoTableResponse, Error<InsertIntoTableError>> {
2078    // add a prefix to parameters to efficiently prevent name collisions
2079    let p_id = id;
2080    let p_body = body;
2081    let p_delimiter = delimiter;
2082    let p_mode = mode;
2083
2084    let uri_str = format!("{}/v1/table/{id}/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    if let Some(ref param_value) = p_mode {
2091        req_builder = req_builder.query(&[("mode", &param_value.to_string())]);
2092    }
2093    if let Some(ref user_agent) = configuration.user_agent {
2094        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2095    }
2096    if let Some(ref token) = configuration.oauth_access_token {
2097        req_builder = req_builder.bearer_auth(token.to_owned());
2098    };
2099    if let Some(ref apikey) = configuration.api_key {
2100        let key = apikey.key.clone();
2101        let value = match apikey.prefix {
2102            Some(ref prefix) => format!("{} {}", prefix, key),
2103            None => key,
2104        };
2105        req_builder = req_builder.header("x-api-key", value);
2106    };
2107    if let Some(ref token) = configuration.bearer_access_token {
2108        req_builder = req_builder.bearer_auth(token.to_owned());
2109    };
2110    req_builder = req_builder.body(p_body);
2111
2112    let req = req_builder.build()?;
2113    let resp = configuration.client.execute(req).await?;
2114
2115    let status = resp.status();
2116    let content_type = resp
2117        .headers()
2118        .get("content-type")
2119        .and_then(|v| v.to_str().ok())
2120        .unwrap_or("application/octet-stream");
2121    let content_type = super::ContentType::from(content_type);
2122
2123    if !status.is_client_error() && !status.is_server_error() {
2124        let content = resp.text().await?;
2125        match content_type {
2126            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2127            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::InsertIntoTableResponse`"))),
2128            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`")))),
2129        }
2130    } else {
2131        let content = resp.text().await?;
2132        let entity: Option<InsertIntoTableError> = serde_json::from_str(&content).ok();
2133        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2134    }
2135}
2136
2137/// 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 - `include_declared`: pass through query parameter of the same name 
2138pub async fn list_all_tables(configuration: &configuration::Configuration, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>, include_declared: Option<bool>) -> Result<models::ListTablesResponse, Error<ListAllTablesError>> {
2139    // add a prefix to parameters to efficiently prevent name collisions
2140    let p_delimiter = delimiter;
2141    let p_page_token = page_token;
2142    let p_limit = limit;
2143    let p_include_declared = include_declared;
2144
2145    let uri_str = format!("{}/v1/table", configuration.base_path);
2146    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
2147
2148    if let Some(ref param_value) = p_delimiter {
2149        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2150    }
2151    if let Some(ref param_value) = p_page_token {
2152        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
2153    }
2154    if let Some(ref param_value) = p_limit {
2155        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
2156    }
2157    if let Some(ref param_value) = p_include_declared {
2158        req_builder = req_builder.query(&[("include_declared", &param_value.to_string())]);
2159    }
2160    if let Some(ref user_agent) = configuration.user_agent {
2161        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2162    }
2163    if let Some(ref token) = configuration.oauth_access_token {
2164        req_builder = req_builder.bearer_auth(token.to_owned());
2165    };
2166    if let Some(ref apikey) = configuration.api_key {
2167        let key = apikey.key.clone();
2168        let value = match apikey.prefix {
2169            Some(ref prefix) => format!("{} {}", prefix, key),
2170            None => key,
2171        };
2172        req_builder = req_builder.header("x-api-key", value);
2173    };
2174    if let Some(ref token) = configuration.bearer_access_token {
2175        req_builder = req_builder.bearer_auth(token.to_owned());
2176    };
2177
2178    let req = req_builder.build()?;
2179    let resp = configuration.client.execute(req).await?;
2180
2181    let status = resp.status();
2182    let content_type = resp
2183        .headers()
2184        .get("content-type")
2185        .and_then(|v| v.to_str().ok())
2186        .unwrap_or("application/octet-stream");
2187    let content_type = super::ContentType::from(content_type);
2188
2189    if !status.is_client_error() && !status.is_server_error() {
2190        let content = resp.text().await?;
2191        match content_type {
2192            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2193            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTablesResponse`"))),
2194            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`")))),
2195        }
2196    } else {
2197        let content = resp.text().await?;
2198        let entity: Option<ListAllTablesError> = serde_json::from_str(&content).ok();
2199        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2200    }
2201}
2202
2203/// List all indices created on a table. Returns information about each index including name, columns, status, and UUID. 
2204pub async fn list_table_indices(configuration: &configuration::Configuration, id: &str, list_table_indices_request: models::ListTableIndicesRequest, delimiter: Option<&str>) -> Result<models::ListTableIndicesResponse, Error<ListTableIndicesError>> {
2205    // add a prefix to parameters to efficiently prevent name collisions
2206    let p_id = id;
2207    let p_list_table_indices_request = list_table_indices_request;
2208    let p_delimiter = delimiter;
2209
2210    let uri_str = format!("{}/v1/table/{id}/index/list", configuration.base_path, id=crate::apis::urlencode(p_id));
2211    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2212
2213    if let Some(ref param_value) = p_delimiter {
2214        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2215    }
2216    if let Some(ref user_agent) = configuration.user_agent {
2217        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2218    }
2219    if let Some(ref token) = configuration.oauth_access_token {
2220        req_builder = req_builder.bearer_auth(token.to_owned());
2221    };
2222    if let Some(ref apikey) = configuration.api_key {
2223        let key = apikey.key.clone();
2224        let value = match apikey.prefix {
2225            Some(ref prefix) => format!("{} {}", prefix, key),
2226            None => key,
2227        };
2228        req_builder = req_builder.header("x-api-key", value);
2229    };
2230    if let Some(ref token) = configuration.bearer_access_token {
2231        req_builder = req_builder.bearer_auth(token.to_owned());
2232    };
2233    req_builder = req_builder.json(&p_list_table_indices_request);
2234
2235    let req = req_builder.build()?;
2236    let resp = configuration.client.execute(req).await?;
2237
2238    let status = resp.status();
2239    let content_type = resp
2240        .headers()
2241        .get("content-type")
2242        .and_then(|v| v.to_str().ok())
2243        .unwrap_or("application/octet-stream");
2244    let content_type = super::ContentType::from(content_type);
2245
2246    if !status.is_client_error() && !status.is_server_error() {
2247        let content = resp.text().await?;
2248        match content_type {
2249            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2250            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableIndicesResponse`"))),
2251            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`")))),
2252        }
2253    } else {
2254        let content = resp.text().await?;
2255        let entity: Option<ListTableIndicesError> = serde_json::from_str(&content).ok();
2256        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2257    }
2258}
2259
2260/// 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 
2261pub 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>> {
2262    // add a prefix to parameters to efficiently prevent name collisions
2263    let p_id = id;
2264    let p_delimiter = delimiter;
2265    let p_page_token = page_token;
2266    let p_limit = limit;
2267
2268    let uri_str = format!("{}/v1/table/{id}/tags/list", configuration.base_path, id=crate::apis::urlencode(p_id));
2269    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2270
2271    if let Some(ref param_value) = p_delimiter {
2272        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2273    }
2274    if let Some(ref param_value) = p_page_token {
2275        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
2276    }
2277    if let Some(ref param_value) = p_limit {
2278        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
2279    }
2280    if let Some(ref user_agent) = configuration.user_agent {
2281        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2282    }
2283    if let Some(ref token) = configuration.oauth_access_token {
2284        req_builder = req_builder.bearer_auth(token.to_owned());
2285    };
2286    if let Some(ref apikey) = configuration.api_key {
2287        let key = apikey.key.clone();
2288        let value = match apikey.prefix {
2289            Some(ref prefix) => format!("{} {}", prefix, key),
2290            None => key,
2291        };
2292        req_builder = req_builder.header("x-api-key", value);
2293    };
2294    if let Some(ref token) = configuration.bearer_access_token {
2295        req_builder = req_builder.bearer_auth(token.to_owned());
2296    };
2297
2298    let req = req_builder.build()?;
2299    let resp = configuration.client.execute(req).await?;
2300
2301    let status = resp.status();
2302    let content_type = resp
2303        .headers()
2304        .get("content-type")
2305        .and_then(|v| v.to_str().ok())
2306        .unwrap_or("application/octet-stream");
2307    let content_type = super::ContentType::from(content_type);
2308
2309    if !status.is_client_error() && !status.is_server_error() {
2310        let content = resp.text().await?;
2311        match content_type {
2312            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2313            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableTagsResponse`"))),
2314            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`")))),
2315        }
2316    } else {
2317        let content = resp.text().await?;
2318        let entity: Option<ListTableTagsError> = serde_json::from_str(&content).ok();
2319        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2320    }
2321}
2322
2323/// List all versions (commits) of table `id` with their metadata.  Use `descending=true` to guarantee versions are returned in descending order (latest to oldest). Otherwise, the ordering is implementation-defined.  REST NAMESPACE ONLY REST namespace does not use a request body for this operation. The `ListTableVersionsRequest` information is passed in the following way: - `id`: pass through path parameter of the same name - `page_token`: pass through query parameter of the same name - `limit`: pass through query parameter of the same name - `descending`: pass through query parameter of the same name 
2324pub async fn list_table_versions(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>, descending: Option<bool>) -> Result<models::ListTableVersionsResponse, Error<ListTableVersionsError>> {
2325    // add a prefix to parameters to efficiently prevent name collisions
2326    let p_id = id;
2327    let p_delimiter = delimiter;
2328    let p_page_token = page_token;
2329    let p_limit = limit;
2330    let p_descending = descending;
2331
2332    let uri_str = format!("{}/v1/table/{id}/version/list", configuration.base_path, id=crate::apis::urlencode(p_id));
2333    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2334
2335    if let Some(ref param_value) = p_delimiter {
2336        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2337    }
2338    if let Some(ref param_value) = p_page_token {
2339        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
2340    }
2341    if let Some(ref param_value) = p_limit {
2342        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
2343    }
2344    if let Some(ref param_value) = p_descending {
2345        req_builder = req_builder.query(&[("descending", &param_value.to_string())]);
2346    }
2347    if let Some(ref user_agent) = configuration.user_agent {
2348        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2349    }
2350    if let Some(ref token) = configuration.oauth_access_token {
2351        req_builder = req_builder.bearer_auth(token.to_owned());
2352    };
2353    if let Some(ref apikey) = configuration.api_key {
2354        let key = apikey.key.clone();
2355        let value = match apikey.prefix {
2356            Some(ref prefix) => format!("{} {}", prefix, key),
2357            None => key,
2358        };
2359        req_builder = req_builder.header("x-api-key", value);
2360    };
2361    if let Some(ref token) = configuration.bearer_access_token {
2362        req_builder = req_builder.bearer_auth(token.to_owned());
2363    };
2364
2365    let req = req_builder.build()?;
2366    let resp = configuration.client.execute(req).await?;
2367
2368    let status = resp.status();
2369    let content_type = resp
2370        .headers()
2371        .get("content-type")
2372        .and_then(|v| v.to_str().ok())
2373        .unwrap_or("application/octet-stream");
2374    let content_type = super::ContentType::from(content_type);
2375
2376    if !status.is_client_error() && !status.is_server_error() {
2377        let content = resp.text().await?;
2378        match content_type {
2379            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2380            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableVersionsResponse`"))),
2381            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`")))),
2382        }
2383    } else {
2384        let content = resp.text().await?;
2385        let entity: Option<ListTableVersionsError> = serde_json::from_str(&content).ok();
2386        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2387    }
2388}
2389
2390/// 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 - `include_declared`: pass through query parameter of the same name 
2391pub async fn list_tables(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>, include_declared: Option<bool>) -> Result<models::ListTablesResponse, Error<ListTablesError>> {
2392    // add a prefix to parameters to efficiently prevent name collisions
2393    let p_id = id;
2394    let p_delimiter = delimiter;
2395    let p_page_token = page_token;
2396    let p_limit = limit;
2397    let p_include_declared = include_declared;
2398
2399    let uri_str = format!("{}/v1/namespace/{id}/table/list", configuration.base_path, id=crate::apis::urlencode(p_id));
2400    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
2401
2402    if let Some(ref param_value) = p_delimiter {
2403        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2404    }
2405    if let Some(ref param_value) = p_page_token {
2406        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
2407    }
2408    if let Some(ref param_value) = p_limit {
2409        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
2410    }
2411    if let Some(ref param_value) = p_include_declared {
2412        req_builder = req_builder.query(&[("include_declared", &param_value.to_string())]);
2413    }
2414    if let Some(ref user_agent) = configuration.user_agent {
2415        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2416    }
2417    if let Some(ref token) = configuration.oauth_access_token {
2418        req_builder = req_builder.bearer_auth(token.to_owned());
2419    };
2420    if let Some(ref apikey) = configuration.api_key {
2421        let key = apikey.key.clone();
2422        let value = match apikey.prefix {
2423            Some(ref prefix) => format!("{} {}", prefix, key),
2424            None => key,
2425        };
2426        req_builder = req_builder.header("x-api-key", value);
2427    };
2428    if let Some(ref token) = configuration.bearer_access_token {
2429        req_builder = req_builder.bearer_auth(token.to_owned());
2430    };
2431
2432    let req = req_builder.build()?;
2433    let resp = configuration.client.execute(req).await?;
2434
2435    let status = resp.status();
2436    let content_type = resp
2437        .headers()
2438        .get("content-type")
2439        .and_then(|v| v.to_str().ok())
2440        .unwrap_or("application/octet-stream");
2441    let content_type = super::ContentType::from(content_type);
2442
2443    if !status.is_client_error() && !status.is_server_error() {
2444        let content = resp.text().await?;
2445        match content_type {
2446            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2447            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTablesResponse`"))),
2448            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`")))),
2449        }
2450    } else {
2451        let content = resp.text().await?;
2452        let entity: Option<ListTablesError> = serde_json::from_str(&content).ok();
2453        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2454    }
2455}
2456
2457/// 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.  For tables that have been declared but not yet created on storage (is_only_declared=true), this operation will create the table with the provided data (since there are no existing rows to merge with).  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 
2458pub 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>> {
2459    // add a prefix to parameters to efficiently prevent name collisions
2460    let p_id = id;
2461    let p_on = on;
2462    let p_body = body;
2463    let p_delimiter = delimiter;
2464    let p_when_matched_update_all = when_matched_update_all;
2465    let p_when_matched_update_all_filt = when_matched_update_all_filt;
2466    let p_when_not_matched_insert_all = when_not_matched_insert_all;
2467    let p_when_not_matched_by_source_delete = when_not_matched_by_source_delete;
2468    let p_when_not_matched_by_source_delete_filt = when_not_matched_by_source_delete_filt;
2469    let p_timeout = timeout;
2470    let p_use_index = use_index;
2471
2472    let uri_str = format!("{}/v1/table/{id}/merge_insert", configuration.base_path, id=crate::apis::urlencode(p_id));
2473    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2474
2475    if let Some(ref param_value) = p_delimiter {
2476        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2477    }
2478    req_builder = req_builder.query(&[("on", &p_on.to_string())]);
2479    if let Some(ref param_value) = p_when_matched_update_all {
2480        req_builder = req_builder.query(&[("when_matched_update_all", &param_value.to_string())]);
2481    }
2482    if let Some(ref param_value) = p_when_matched_update_all_filt {
2483        req_builder = req_builder.query(&[("when_matched_update_all_filt", &param_value.to_string())]);
2484    }
2485    if let Some(ref param_value) = p_when_not_matched_insert_all {
2486        req_builder = req_builder.query(&[("when_not_matched_insert_all", &param_value.to_string())]);
2487    }
2488    if let Some(ref param_value) = p_when_not_matched_by_source_delete {
2489        req_builder = req_builder.query(&[("when_not_matched_by_source_delete", &param_value.to_string())]);
2490    }
2491    if let Some(ref param_value) = p_when_not_matched_by_source_delete_filt {
2492        req_builder = req_builder.query(&[("when_not_matched_by_source_delete_filt", &param_value.to_string())]);
2493    }
2494    if let Some(ref param_value) = p_timeout {
2495        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
2496    }
2497    if let Some(ref param_value) = p_use_index {
2498        req_builder = req_builder.query(&[("use_index", &param_value.to_string())]);
2499    }
2500    if let Some(ref user_agent) = configuration.user_agent {
2501        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2502    }
2503    if let Some(ref token) = configuration.oauth_access_token {
2504        req_builder = req_builder.bearer_auth(token.to_owned());
2505    };
2506    if let Some(ref apikey) = configuration.api_key {
2507        let key = apikey.key.clone();
2508        let value = match apikey.prefix {
2509            Some(ref prefix) => format!("{} {}", prefix, key),
2510            None => key,
2511        };
2512        req_builder = req_builder.header("x-api-key", value);
2513    };
2514    if let Some(ref token) = configuration.bearer_access_token {
2515        req_builder = req_builder.bearer_auth(token.to_owned());
2516    };
2517    req_builder = req_builder.body(p_body);
2518
2519    let req = req_builder.build()?;
2520    let resp = configuration.client.execute(req).await?;
2521
2522    let status = resp.status();
2523    let content_type = resp
2524        .headers()
2525        .get("content-type")
2526        .and_then(|v| v.to_str().ok())
2527        .unwrap_or("application/octet-stream");
2528    let content_type = super::ContentType::from(content_type);
2529
2530    if !status.is_client_error() && !status.is_server_error() {
2531        let content = resp.text().await?;
2532        match content_type {
2533            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2534            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::MergeInsertIntoTableResponse`"))),
2535            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`")))),
2536        }
2537    } else {
2538        let content = resp.text().await?;
2539        let entity: Option<MergeInsertIntoTableError> = serde_json::from_str(&content).ok();
2540        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2541    }
2542}
2543
2544/// 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. 
2545pub async fn query_table(configuration: &configuration::Configuration, id: &str, query_table_request: models::QueryTableRequest, delimiter: Option<&str>) -> Result<reqwest::Response, Error<QueryTableError>> {
2546    // add a prefix to parameters to efficiently prevent name collisions
2547    let p_id = id;
2548    let p_query_table_request = query_table_request;
2549    let p_delimiter = delimiter;
2550
2551    let uri_str = format!("{}/v1/table/{id}/query", configuration.base_path, id=crate::apis::urlencode(p_id));
2552    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2553
2554    if let Some(ref param_value) = p_delimiter {
2555        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2556    }
2557    if let Some(ref user_agent) = configuration.user_agent {
2558        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2559    }
2560    if let Some(ref token) = configuration.oauth_access_token {
2561        req_builder = req_builder.bearer_auth(token.to_owned());
2562    };
2563    if let Some(ref apikey) = configuration.api_key {
2564        let key = apikey.key.clone();
2565        let value = match apikey.prefix {
2566            Some(ref prefix) => format!("{} {}", prefix, key),
2567            None => key,
2568        };
2569        req_builder = req_builder.header("x-api-key", value);
2570    };
2571    if let Some(ref token) = configuration.bearer_access_token {
2572        req_builder = req_builder.bearer_auth(token.to_owned());
2573    };
2574    req_builder = req_builder.json(&p_query_table_request);
2575
2576    let req = req_builder.build()?;
2577    let resp = configuration.client.execute(req).await?;
2578
2579    let status = resp.status();
2580
2581    if !status.is_client_error() && !status.is_server_error() {
2582        Ok(resp)
2583    } else {
2584        let content = resp.text().await?;
2585        let entity: Option<QueryTableError> = serde_json::from_str(&content).ok();
2586        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2587    }
2588}
2589
2590/// Trigger an asynchronous refresh job for a materialized view backed by table `id`. Returns a job ID for tracking. 
2591pub async fn refresh_materialized_view(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, refresh_materialized_view_request: Option<models::RefreshMaterializedViewRequest>) -> Result<models::RefreshMaterializedViewResponse, Error<RefreshMaterializedViewError>> {
2592    // add a prefix to parameters to efficiently prevent name collisions
2593    let p_id = id;
2594    let p_delimiter = delimiter;
2595    let p_refresh_materialized_view_request = refresh_materialized_view_request;
2596
2597    let uri_str = format!("{}/v1/table/{id}/refresh", configuration.base_path, id=crate::apis::urlencode(p_id));
2598    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2599
2600    if let Some(ref param_value) = p_delimiter {
2601        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2602    }
2603    if let Some(ref user_agent) = configuration.user_agent {
2604        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2605    }
2606    if let Some(ref token) = configuration.oauth_access_token {
2607        req_builder = req_builder.bearer_auth(token.to_owned());
2608    };
2609    if let Some(ref apikey) = configuration.api_key {
2610        let key = apikey.key.clone();
2611        let value = match apikey.prefix {
2612            Some(ref prefix) => format!("{} {}", prefix, key),
2613            None => key,
2614        };
2615        req_builder = req_builder.header("x-api-key", value);
2616    };
2617    if let Some(ref token) = configuration.bearer_access_token {
2618        req_builder = req_builder.bearer_auth(token.to_owned());
2619    };
2620    req_builder = req_builder.json(&p_refresh_materialized_view_request);
2621
2622    let req = req_builder.build()?;
2623    let resp = configuration.client.execute(req).await?;
2624
2625    let status = resp.status();
2626    let content_type = resp
2627        .headers()
2628        .get("content-type")
2629        .and_then(|v| v.to_str().ok())
2630        .unwrap_or("application/octet-stream");
2631    let content_type = super::ContentType::from(content_type);
2632
2633    if !status.is_client_error() && !status.is_server_error() {
2634        let content = resp.text().await?;
2635        match content_type {
2636            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2637            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RefreshMaterializedViewResponse`"))),
2638            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::RefreshMaterializedViewResponse`")))),
2639        }
2640    } else {
2641        let content = resp.text().await?;
2642        let entity: Option<RefreshMaterializedViewError> = serde_json::from_str(&content).ok();
2643        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2644    }
2645}
2646
2647/// Register an existing table at a given storage location as `id`. 
2648pub async fn register_table(configuration: &configuration::Configuration, id: &str, register_table_request: models::RegisterTableRequest, delimiter: Option<&str>) -> Result<models::RegisterTableResponse, Error<RegisterTableError>> {
2649    // add a prefix to parameters to efficiently prevent name collisions
2650    let p_id = id;
2651    let p_register_table_request = register_table_request;
2652    let p_delimiter = delimiter;
2653
2654    let uri_str = format!("{}/v1/table/{id}/register", configuration.base_path, id=crate::apis::urlencode(p_id));
2655    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2656
2657    if let Some(ref param_value) = p_delimiter {
2658        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2659    }
2660    if let Some(ref user_agent) = configuration.user_agent {
2661        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2662    }
2663    if let Some(ref token) = configuration.oauth_access_token {
2664        req_builder = req_builder.bearer_auth(token.to_owned());
2665    };
2666    if let Some(ref apikey) = configuration.api_key {
2667        let key = apikey.key.clone();
2668        let value = match apikey.prefix {
2669            Some(ref prefix) => format!("{} {}", prefix, key),
2670            None => key,
2671        };
2672        req_builder = req_builder.header("x-api-key", value);
2673    };
2674    if let Some(ref token) = configuration.bearer_access_token {
2675        req_builder = req_builder.bearer_auth(token.to_owned());
2676    };
2677    req_builder = req_builder.json(&p_register_table_request);
2678
2679    let req = req_builder.build()?;
2680    let resp = configuration.client.execute(req).await?;
2681
2682    let status = resp.status();
2683    let content_type = resp
2684        .headers()
2685        .get("content-type")
2686        .and_then(|v| v.to_str().ok())
2687        .unwrap_or("application/octet-stream");
2688    let content_type = super::ContentType::from(content_type);
2689
2690    if !status.is_client_error() && !status.is_server_error() {
2691        let content = resp.text().await?;
2692        match content_type {
2693            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2694            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RegisterTableResponse`"))),
2695            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`")))),
2696        }
2697    } else {
2698        let content = resp.text().await?;
2699        let entity: Option<RegisterTableError> = serde_json::from_str(&content).ok();
2700        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2701    }
2702}
2703
2704/// Rename table `id` to a new name. 
2705pub async fn rename_table(configuration: &configuration::Configuration, id: &str, rename_table_request: models::RenameTableRequest, delimiter: Option<&str>) -> Result<models::RenameTableResponse, Error<RenameTableError>> {
2706    // add a prefix to parameters to efficiently prevent name collisions
2707    let p_id = id;
2708    let p_rename_table_request = rename_table_request;
2709    let p_delimiter = delimiter;
2710
2711    let uri_str = format!("{}/v1/table/{id}/rename", configuration.base_path, id=crate::apis::urlencode(p_id));
2712    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2713
2714    if let Some(ref param_value) = p_delimiter {
2715        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2716    }
2717    if let Some(ref user_agent) = configuration.user_agent {
2718        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2719    }
2720    if let Some(ref token) = configuration.oauth_access_token {
2721        req_builder = req_builder.bearer_auth(token.to_owned());
2722    };
2723    if let Some(ref apikey) = configuration.api_key {
2724        let key = apikey.key.clone();
2725        let value = match apikey.prefix {
2726            Some(ref prefix) => format!("{} {}", prefix, key),
2727            None => key,
2728        };
2729        req_builder = req_builder.header("x-api-key", value);
2730    };
2731    if let Some(ref token) = configuration.bearer_access_token {
2732        req_builder = req_builder.bearer_auth(token.to_owned());
2733    };
2734    req_builder = req_builder.json(&p_rename_table_request);
2735
2736    let req = req_builder.build()?;
2737    let resp = configuration.client.execute(req).await?;
2738
2739    let status = resp.status();
2740    let content_type = resp
2741        .headers()
2742        .get("content-type")
2743        .and_then(|v| v.to_str().ok())
2744        .unwrap_or("application/octet-stream");
2745    let content_type = super::ContentType::from(content_type);
2746
2747    if !status.is_client_error() && !status.is_server_error() {
2748        let content = resp.text().await?;
2749        match content_type {
2750            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2751            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RenameTableResponse`"))),
2752            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`")))),
2753        }
2754    } else {
2755        let content = resp.text().await?;
2756        let entity: Option<RenameTableError> = serde_json::from_str(&content).ok();
2757        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2758    }
2759}
2760
2761/// Restore table `id` to a specific version. 
2762pub async fn restore_table(configuration: &configuration::Configuration, id: &str, restore_table_request: models::RestoreTableRequest, delimiter: Option<&str>) -> Result<models::RestoreTableResponse, Error<RestoreTableError>> {
2763    // add a prefix to parameters to efficiently prevent name collisions
2764    let p_id = id;
2765    let p_restore_table_request = restore_table_request;
2766    let p_delimiter = delimiter;
2767
2768    let uri_str = format!("{}/v1/table/{id}/restore", configuration.base_path, id=crate::apis::urlencode(p_id));
2769    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2770
2771    if let Some(ref param_value) = p_delimiter {
2772        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2773    }
2774    if let Some(ref user_agent) = configuration.user_agent {
2775        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2776    }
2777    if let Some(ref token) = configuration.oauth_access_token {
2778        req_builder = req_builder.bearer_auth(token.to_owned());
2779    };
2780    if let Some(ref apikey) = configuration.api_key {
2781        let key = apikey.key.clone();
2782        let value = match apikey.prefix {
2783            Some(ref prefix) => format!("{} {}", prefix, key),
2784            None => key,
2785        };
2786        req_builder = req_builder.header("x-api-key", value);
2787    };
2788    if let Some(ref token) = configuration.bearer_access_token {
2789        req_builder = req_builder.bearer_auth(token.to_owned());
2790    };
2791    req_builder = req_builder.json(&p_restore_table_request);
2792
2793    let req = req_builder.build()?;
2794    let resp = configuration.client.execute(req).await?;
2795
2796    let status = resp.status();
2797    let content_type = resp
2798        .headers()
2799        .get("content-type")
2800        .and_then(|v| v.to_str().ok())
2801        .unwrap_or("application/octet-stream");
2802    let content_type = super::ContentType::from(content_type);
2803
2804    if !status.is_client_error() && !status.is_server_error() {
2805        let content = resp.text().await?;
2806        match content_type {
2807            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2808            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RestoreTableResponse`"))),
2809            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`")))),
2810        }
2811    } else {
2812        let content = resp.text().await?;
2813        let entity: Option<RestoreTableError> = serde_json::from_str(&content).ok();
2814        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2815    }
2816}
2817
2818/// 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) 
2819pub async fn table_exists(configuration: &configuration::Configuration, id: &str, table_exists_request: models::TableExistsRequest, delimiter: Option<&str>) -> Result<(), Error<TableExistsError>> {
2820    // add a prefix to parameters to efficiently prevent name collisions
2821    let p_id = id;
2822    let p_table_exists_request = table_exists_request;
2823    let p_delimiter = delimiter;
2824
2825    let uri_str = format!("{}/v1/table/{id}/exists", configuration.base_path, id=crate::apis::urlencode(p_id));
2826    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2827
2828    if let Some(ref param_value) = p_delimiter {
2829        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2830    }
2831    if let Some(ref user_agent) = configuration.user_agent {
2832        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2833    }
2834    if let Some(ref token) = configuration.oauth_access_token {
2835        req_builder = req_builder.bearer_auth(token.to_owned());
2836    };
2837    if let Some(ref apikey) = configuration.api_key {
2838        let key = apikey.key.clone();
2839        let value = match apikey.prefix {
2840            Some(ref prefix) => format!("{} {}", prefix, key),
2841            None => key,
2842        };
2843        req_builder = req_builder.header("x-api-key", value);
2844    };
2845    if let Some(ref token) = configuration.bearer_access_token {
2846        req_builder = req_builder.bearer_auth(token.to_owned());
2847    };
2848    req_builder = req_builder.json(&p_table_exists_request);
2849
2850    let req = req_builder.build()?;
2851    let resp = configuration.client.execute(req).await?;
2852
2853    let status = resp.status();
2854
2855    if !status.is_client_error() && !status.is_server_error() {
2856        Ok(())
2857    } else {
2858        let content = resp.text().await?;
2859        let entity: Option<TableExistsError> = serde_json::from_str(&content).ok();
2860        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2861    }
2862}
2863
2864/// Update existing rows in table `id`. 
2865pub async fn update_table(configuration: &configuration::Configuration, id: &str, update_table_request: models::UpdateTableRequest, delimiter: Option<&str>) -> Result<models::UpdateTableResponse, Error<UpdateTableError>> {
2866    // add a prefix to parameters to efficiently prevent name collisions
2867    let p_id = id;
2868    let p_update_table_request = update_table_request;
2869    let p_delimiter = delimiter;
2870
2871    let uri_str = format!("{}/v1/table/{id}/update", configuration.base_path, id=crate::apis::urlencode(p_id));
2872    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2873
2874    if let Some(ref param_value) = p_delimiter {
2875        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2876    }
2877    if let Some(ref user_agent) = configuration.user_agent {
2878        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2879    }
2880    if let Some(ref token) = configuration.oauth_access_token {
2881        req_builder = req_builder.bearer_auth(token.to_owned());
2882    };
2883    if let Some(ref apikey) = configuration.api_key {
2884        let key = apikey.key.clone();
2885        let value = match apikey.prefix {
2886            Some(ref prefix) => format!("{} {}", prefix, key),
2887            None => key,
2888        };
2889        req_builder = req_builder.header("x-api-key", value);
2890    };
2891    if let Some(ref token) = configuration.bearer_access_token {
2892        req_builder = req_builder.bearer_auth(token.to_owned());
2893    };
2894    req_builder = req_builder.json(&p_update_table_request);
2895
2896    let req = req_builder.build()?;
2897    let resp = configuration.client.execute(req).await?;
2898
2899    let status = resp.status();
2900    let content_type = resp
2901        .headers()
2902        .get("content-type")
2903        .and_then(|v| v.to_str().ok())
2904        .unwrap_or("application/octet-stream");
2905    let content_type = super::ContentType::from(content_type);
2906
2907    if !status.is_client_error() && !status.is_server_error() {
2908        let content = resp.text().await?;
2909        match content_type {
2910            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2911            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::UpdateTableResponse`"))),
2912            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`")))),
2913        }
2914    } else {
2915        let content = resp.text().await?;
2916        let entity: Option<UpdateTableError> = serde_json::from_str(&content).ok();
2917        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2918    }
2919}
2920
2921/// 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`. 
2922pub 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>> {
2923    // add a prefix to parameters to efficiently prevent name collisions
2924    let p_id = id;
2925    let p_request_body = request_body;
2926    let p_delimiter = delimiter;
2927
2928    let uri_str = format!("{}/v1/table/{id}/schema_metadata/update", configuration.base_path, id=crate::apis::urlencode(p_id));
2929    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2930
2931    if let Some(ref param_value) = p_delimiter {
2932        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2933    }
2934    if let Some(ref user_agent) = configuration.user_agent {
2935        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2936    }
2937    if let Some(ref token) = configuration.oauth_access_token {
2938        req_builder = req_builder.bearer_auth(token.to_owned());
2939    };
2940    if let Some(ref apikey) = configuration.api_key {
2941        let key = apikey.key.clone();
2942        let value = match apikey.prefix {
2943            Some(ref prefix) => format!("{} {}", prefix, key),
2944            None => key,
2945        };
2946        req_builder = req_builder.header("x-api-key", value);
2947    };
2948    if let Some(ref token) = configuration.bearer_access_token {
2949        req_builder = req_builder.bearer_auth(token.to_owned());
2950    };
2951    req_builder = req_builder.json(&p_request_body);
2952
2953    let req = req_builder.build()?;
2954    let resp = configuration.client.execute(req).await?;
2955
2956    let status = resp.status();
2957    let content_type = resp
2958        .headers()
2959        .get("content-type")
2960        .and_then(|v| v.to_str().ok())
2961        .unwrap_or("application/octet-stream");
2962    let content_type = super::ContentType::from(content_type);
2963
2964    if !status.is_client_error() && !status.is_server_error() {
2965        let content = resp.text().await?;
2966        match content_type {
2967            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
2968            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;`"))),
2969            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;`")))),
2970        }
2971    } else {
2972        let content = resp.text().await?;
2973        let entity: Option<UpdateTableSchemaMetadataError> = serde_json::from_str(&content).ok();
2974        Err(Error::ResponseError(ResponseContent { status, content, entity }))
2975    }
2976}
2977
2978/// Update an existing tag for table `id` to point to a different version. 
2979pub async fn update_table_tag(configuration: &configuration::Configuration, id: &str, update_table_tag_request: models::UpdateTableTagRequest, delimiter: Option<&str>) -> Result<models::UpdateTableTagResponse, Error<UpdateTableTagError>> {
2980    // add a prefix to parameters to efficiently prevent name collisions
2981    let p_id = id;
2982    let p_update_table_tag_request = update_table_tag_request;
2983    let p_delimiter = delimiter;
2984
2985    let uri_str = format!("{}/v1/table/{id}/tags/update", configuration.base_path, id=crate::apis::urlencode(p_id));
2986    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
2987
2988    if let Some(ref param_value) = p_delimiter {
2989        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
2990    }
2991    if let Some(ref user_agent) = configuration.user_agent {
2992        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
2993    }
2994    if let Some(ref token) = configuration.oauth_access_token {
2995        req_builder = req_builder.bearer_auth(token.to_owned());
2996    };
2997    if let Some(ref apikey) = configuration.api_key {
2998        let key = apikey.key.clone();
2999        let value = match apikey.prefix {
3000            Some(ref prefix) => format!("{} {}", prefix, key),
3001            None => key,
3002        };
3003        req_builder = req_builder.header("x-api-key", value);
3004    };
3005    if let Some(ref token) = configuration.bearer_access_token {
3006        req_builder = req_builder.bearer_auth(token.to_owned());
3007    };
3008    req_builder = req_builder.json(&p_update_table_tag_request);
3009
3010    let req = req_builder.build()?;
3011    let resp = configuration.client.execute(req).await?;
3012
3013    let status = resp.status();
3014    let content_type = resp
3015        .headers()
3016        .get("content-type")
3017        .and_then(|v| v.to_str().ok())
3018        .unwrap_or("application/octet-stream");
3019    let content_type = super::ContentType::from(content_type);
3020
3021    if !status.is_client_error() && !status.is_server_error() {
3022        let content = resp.text().await?;
3023        match content_type {
3024            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
3025            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::UpdateTableTagResponse`"))),
3026            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`")))),
3027        }
3028    } else {
3029        let content = resp.text().await?;
3030        let entity: Option<UpdateTableTagError> = serde_json::from_str(&content).ok();
3031        Err(Error::ResponseError(ResponseContent { status, content, entity }))
3032    }
3033}
3034