Skip to main content

lance_namespace_reqwest_client/apis/
metadata_api.rs

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