tembo_api_client/apis/
instance_api.rs

1/*
2 * Tembo Cloud
3 *
4 * Platform API for Tembo Cloud             </br>             </br>             To find a Tembo Data API, please find it here:             </br>             </br>             [AWS US East 1](https://api.data-1.use1.tembo.io/swagger-ui/)
5 *
6 * The version of the OpenAPI document: v1.0.0
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use super::{configuration, Error};
12use crate::{apis::ResponseContent, models};
13use reqwest;
14use serde::{Deserialize, Serialize};
15
16/// struct for typed errors of method [`create_instance`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum CreateInstanceError {
20    Status400(models::ErrorResponseSchema),
21    Status401(String),
22    Status403(models::ErrorResponseSchema),
23    Status409(models::ErrorResponseSchema),
24    UnknownValue(serde_json::Value),
25}
26
27/// struct for typed errors of method [`delete_instance`]
28#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(untagged)]
30pub enum DeleteInstanceError {
31    Status400(models::ErrorResponseSchema),
32    Status401(models::ErrorResponseSchema),
33    Status403(models::ErrorResponseSchema),
34    Status409(models::ErrorResponseSchema),
35    UnknownValue(serde_json::Value),
36}
37
38/// struct for typed errors of method [`get_all`]
39#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(untagged)]
41pub enum GetAllError {
42    Status400(models::ErrorResponseSchema),
43    Status401(models::ErrorResponseSchema),
44    Status403(models::ErrorResponseSchema),
45    UnknownValue(serde_json::Value),
46}
47
48/// struct for typed errors of method [`get_instance`]
49#[derive(Debug, Clone, Serialize, Deserialize)]
50#[serde(untagged)]
51pub enum GetInstanceError {
52    Status400(models::ErrorResponseSchema),
53    Status401(models::ErrorResponseSchema),
54    Status403(models::ErrorResponseSchema),
55    Status404(models::ErrorResponseSchema),
56    UnknownValue(serde_json::Value),
57}
58
59/// struct for typed errors of method [`get_instance_history`]
60#[derive(Debug, Clone, Serialize, Deserialize)]
61#[serde(untagged)]
62pub enum GetInstanceHistoryError {
63    Status401(models::ErrorResponseSchema),
64    Status403(models::ErrorResponseSchema),
65    Status404(models::ErrorResponseSchema),
66    UnknownValue(serde_json::Value),
67}
68
69/// struct for typed errors of method [`get_instance_toml`]
70#[derive(Debug, Clone, Serialize, Deserialize)]
71#[serde(untagged)]
72pub enum GetInstanceTomlError {
73    Status401(models::ErrorResponseSchema),
74    Status403(serde_json::Value),
75    UnknownValue(serde_json::Value),
76}
77
78/// struct for typed errors of method [`get_schema`]
79#[derive(Debug, Clone, Serialize, Deserialize)]
80#[serde(untagged)]
81pub enum GetSchemaError {
82    Status401(models::ErrorResponseSchema),
83    UnknownValue(serde_json::Value),
84}
85
86/// struct for typed errors of method [`instance_event`]
87#[derive(Debug, Clone, Serialize, Deserialize)]
88#[serde(untagged)]
89pub enum InstanceEventError {
90    Status401(models::ErrorResponseSchema),
91    Status403(models::ErrorResponseSchema),
92    Status409(models::ErrorResponseSchema),
93    UnknownValue(serde_json::Value),
94}
95
96/// struct for typed errors of method [`patch_instance`]
97#[derive(Debug, Clone, Serialize, Deserialize)]
98#[serde(untagged)]
99pub enum PatchInstanceError {
100    Status400(models::ErrorResponseSchema),
101    Status401(String),
102    Status403(models::ErrorResponseSchema),
103    Status409(models::ErrorResponseSchema),
104    UnknownValue(serde_json::Value),
105}
106
107/// struct for typed errors of method [`restore_instance`]
108#[derive(Debug, Clone, Serialize, Deserialize)]
109#[serde(untagged)]
110pub enum RestoreInstanceError {
111    Status400(models::ErrorResponseSchema),
112    Status401(String),
113    Status403(models::ErrorResponseSchema),
114    Status409(models::ErrorResponseSchema),
115    UnknownValue(serde_json::Value),
116}
117
118/// Create a new Tembo instance
119pub async fn create_instance(
120    configuration: &configuration::Configuration,
121    org_id: &str,
122    create_instance: models::CreateInstance,
123) -> Result<models::Instance, Error<CreateInstanceError>> {
124    // add a prefix to parameters to efficiently prevent name collisions
125    let p_org_id = org_id;
126    let p_create_instance = create_instance;
127
128    let uri_str = format!(
129        "{}/api/v1/orgs/{org_id}/instances",
130        configuration.base_path,
131        org_id = crate::apis::urlencode(p_org_id)
132    );
133    let mut req_builder = configuration
134        .client
135        .request(reqwest::Method::POST, &uri_str);
136
137    if let Some(ref user_agent) = configuration.user_agent {
138        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
139    }
140    if let Some(ref token) = configuration.bearer_access_token {
141        req_builder = req_builder.bearer_auth(token.to_owned());
142    };
143    req_builder = req_builder.json(&p_create_instance);
144
145    let req = req_builder.build()?;
146    let resp = configuration.client.execute(req).await?;
147
148    let status = resp.status();
149
150    if !status.is_client_error() && !status.is_server_error() {
151        let content = resp.text().await?;
152        serde_json::from_str(&content).map_err(Error::from)
153    } else {
154        let content = resp.text().await?;
155        let entity: Option<CreateInstanceError> = serde_json::from_str(&content).ok();
156        Err(Error::ResponseError(ResponseContent {
157            status,
158            content,
159            entity,
160        }))
161    }
162}
163
164/// Delete an existing Tembo instance
165pub async fn delete_instance(
166    configuration: &configuration::Configuration,
167    org_id: &str,
168    instance_id: &str,
169) -> Result<models::Instance, Error<DeleteInstanceError>> {
170    // add a prefix to parameters to efficiently prevent name collisions
171    let p_org_id = org_id;
172    let p_instance_id = instance_id;
173
174    let uri_str = format!(
175        "{}/api/v1/orgs/{org_id}/instances/{instance_id}",
176        configuration.base_path,
177        org_id = crate::apis::urlencode(p_org_id),
178        instance_id = crate::apis::urlencode(p_instance_id)
179    );
180    let mut req_builder = configuration
181        .client
182        .request(reqwest::Method::DELETE, &uri_str);
183
184    if let Some(ref user_agent) = configuration.user_agent {
185        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
186    }
187    if let Some(ref token) = configuration.bearer_access_token {
188        req_builder = req_builder.bearer_auth(token.to_owned());
189    };
190
191    let req = req_builder.build()?;
192    let resp = configuration.client.execute(req).await?;
193
194    let status = resp.status();
195
196    if !status.is_client_error() && !status.is_server_error() {
197        let content = resp.text().await?;
198        serde_json::from_str(&content).map_err(Error::from)
199    } else {
200        let content = resp.text().await?;
201        let entity: Option<DeleteInstanceError> = serde_json::from_str(&content).ok();
202        Err(Error::ResponseError(ResponseContent {
203            status,
204            content,
205            entity,
206        }))
207    }
208}
209
210/// Get all Tembo instances in an organization
211pub async fn get_all(
212    configuration: &configuration::Configuration,
213    org_id: &str,
214) -> Result<Vec<models::Instance>, Error<GetAllError>> {
215    // add a prefix to parameters to efficiently prevent name collisions
216    let p_org_id = org_id;
217
218    let uri_str = format!(
219        "{}/api/v1/orgs/{org_id}/instances",
220        configuration.base_path,
221        org_id = crate::apis::urlencode(p_org_id)
222    );
223    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
224
225    if let Some(ref user_agent) = configuration.user_agent {
226        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
227    }
228    if let Some(ref token) = configuration.bearer_access_token {
229        req_builder = req_builder.bearer_auth(token.to_owned());
230    };
231
232    let req = req_builder.build()?;
233    let resp = configuration.client.execute(req).await?;
234
235    let status = resp.status();
236
237    if !status.is_client_error() && !status.is_server_error() {
238        let content = resp.text().await?;
239        serde_json::from_str(&content).map_err(Error::from)
240    } else {
241        let content = resp.text().await?;
242        let entity: Option<GetAllError> = serde_json::from_str(&content).ok();
243        Err(Error::ResponseError(ResponseContent {
244            status,
245            content,
246            entity,
247        }))
248    }
249}
250
251/// Get an existing Tembo instance
252pub async fn get_instance(
253    configuration: &configuration::Configuration,
254    org_id: &str,
255    instance_id: &str,
256) -> Result<models::Instance, Error<GetInstanceError>> {
257    // add a prefix to parameters to efficiently prevent name collisions
258    let p_org_id = org_id;
259    let p_instance_id = instance_id;
260
261    let uri_str = format!(
262        "{}/api/v1/orgs/{org_id}/instances/{instance_id}",
263        configuration.base_path,
264        org_id = crate::apis::urlencode(p_org_id),
265        instance_id = crate::apis::urlencode(p_instance_id)
266    );
267    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
268
269    if let Some(ref user_agent) = configuration.user_agent {
270        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
271    }
272    if let Some(ref token) = configuration.bearer_access_token {
273        req_builder = req_builder.bearer_auth(token.to_owned());
274    };
275
276    let req = req_builder.build()?;
277    let resp = configuration.client.execute(req).await?;
278
279    let status = resp.status();
280
281    if !status.is_client_error() && !status.is_server_error() {
282        let content = resp.text().await?;
283        serde_json::from_str(&content).map_err(Error::from)
284    } else {
285        let content = resp.text().await?;
286        let entity: Option<GetInstanceError> = serde_json::from_str(&content).ok();
287        Err(Error::ResponseError(ResponseContent {
288            status,
289            content,
290            entity,
291        }))
292    }
293}
294
295/// Get historical information for a given instance
296pub async fn get_instance_history(
297    configuration: &configuration::Configuration,
298    org_id: &str,
299    instance_id: &str,
300    field: &str,
301    start: Option<String>,
302    end: Option<String>,
303    page: Option<i32>,
304    limit: Option<i32>,
305) -> Result<models::HistoryPage, Error<GetInstanceHistoryError>> {
306    // add a prefix to parameters to efficiently prevent name collisions
307    let p_org_id = org_id;
308    let p_instance_id = instance_id;
309    let p_field = field;
310    let p_start = start;
311    let p_end = end;
312    let p_page = page;
313    let p_limit = limit;
314
315    let uri_str = format!(
316        "{}/api/v1/orgs/{org_id}/instances/{instance_id}/history/{field}",
317        configuration.base_path,
318        org_id = crate::apis::urlencode(p_org_id),
319        instance_id = crate::apis::urlencode(p_instance_id),
320        field = crate::apis::urlencode(p_field)
321    );
322    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
323
324    if let Some(ref param_value) = p_start {
325        req_builder = req_builder.query(&[("start", &param_value.to_string())]);
326    }
327    if let Some(ref param_value) = p_end {
328        req_builder = req_builder.query(&[("end", &param_value.to_string())]);
329    }
330    if let Some(ref param_value) = p_page {
331        req_builder = req_builder.query(&[("page", &param_value.to_string())]);
332    }
333    if let Some(ref param_value) = p_limit {
334        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
335    }
336    if let Some(ref user_agent) = configuration.user_agent {
337        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
338    }
339    if let Some(ref token) = configuration.bearer_access_token {
340        req_builder = req_builder.bearer_auth(token.to_owned());
341    };
342
343    let req = req_builder.build()?;
344    let resp = configuration.client.execute(req).await?;
345
346    let status = resp.status();
347
348    if !status.is_client_error() && !status.is_server_error() {
349        let content = resp.text().await?;
350        serde_json::from_str(&content).map_err(Error::from)
351    } else {
352        let content = resp.text().await?;
353        let entity: Option<GetInstanceHistoryError> = serde_json::from_str(&content).ok();
354        Err(Error::ResponseError(ResponseContent {
355            status,
356            content,
357            entity,
358        }))
359    }
360}
361
362/// Generate text for Tembo.toml
363pub async fn get_instance_toml(
364    configuration: &configuration::Configuration,
365    org_id: &str,
366    instance_id: &str,
367) -> Result<serde_json::Value, Error<GetInstanceTomlError>> {
368    // add a prefix to parameters to efficiently prevent name collisions
369    let p_org_id = org_id;
370    let p_instance_id = instance_id;
371
372    let uri_str = format!(
373        "{}/api/v1/orgs/{org_id}/instances/{instance_id}/toml",
374        configuration.base_path,
375        org_id = crate::apis::urlencode(p_org_id),
376        instance_id = crate::apis::urlencode(p_instance_id)
377    );
378    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
379
380    if let Some(ref user_agent) = configuration.user_agent {
381        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
382    }
383    if let Some(ref token) = configuration.bearer_access_token {
384        req_builder = req_builder.bearer_auth(token.to_owned());
385    };
386
387    let req = req_builder.build()?;
388    let resp = configuration.client.execute(req).await?;
389
390    let status = resp.status();
391
392    if !status.is_client_error() && !status.is_server_error() {
393        let content = resp.text().await?;
394        serde_json::from_str(&content).map_err(Error::from)
395    } else {
396        let content = resp.text().await?;
397        let entity: Option<GetInstanceTomlError> = serde_json::from_str(&content).ok();
398        Err(Error::ResponseError(ResponseContent {
399            status,
400            content,
401            entity,
402        }))
403    }
404}
405
406/// Get the json-schema for an instance
407pub async fn get_schema(
408    configuration: &configuration::Configuration,
409) -> Result<models::ErrorResponseSchema, Error<GetSchemaError>> {
410    let uri_str = format!("{}/api/v1/orgs/instances/schema", configuration.base_path);
411    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
412
413    if let Some(ref user_agent) = configuration.user_agent {
414        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
415    }
416    if let Some(ref token) = configuration.bearer_access_token {
417        req_builder = req_builder.bearer_auth(token.to_owned());
418    };
419
420    let req = req_builder.build()?;
421    let resp = configuration.client.execute(req).await?;
422
423    let status = resp.status();
424
425    if !status.is_client_error() && !status.is_server_error() {
426        let content = resp.text().await?;
427        serde_json::from_str(&content).map_err(Error::from)
428    } else {
429        let content = resp.text().await?;
430        let entity: Option<GetSchemaError> = serde_json::from_str(&content).ok();
431        Err(Error::ResponseError(ResponseContent {
432            status,
433            content,
434            entity,
435        }))
436    }
437}
438
439/// Lifecycle events for a Tembo instance  Currently only supports restart
440pub async fn instance_event(
441    configuration: &configuration::Configuration,
442    org_id: &str,
443    event_type: models::InstanceEvent,
444    instance_id: &str,
445) -> Result<models::Instance, Error<InstanceEventError>> {
446    // add a prefix to parameters to efficiently prevent name collisions
447    let p_org_id = org_id;
448    let p_event_type = event_type;
449    let p_instance_id = instance_id;
450
451    let uri_str = format!(
452        "{}/api/v1/orgs/{org_id}/instances/{instance_id}",
453        configuration.base_path,
454        org_id = crate::apis::urlencode(p_org_id),
455        instance_id = crate::apis::urlencode(p_instance_id)
456    );
457    let mut req_builder = configuration
458        .client
459        .request(reqwest::Method::POST, &uri_str);
460
461    req_builder = req_builder.query(&[("event_type", &p_event_type.to_string())]);
462    if let Some(ref user_agent) = configuration.user_agent {
463        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
464    }
465    if let Some(ref token) = configuration.bearer_access_token {
466        req_builder = req_builder.bearer_auth(token.to_owned());
467    };
468
469    let req = req_builder.build()?;
470    let resp = configuration.client.execute(req).await?;
471
472    let status = resp.status();
473
474    if !status.is_client_error() && !status.is_server_error() {
475        let content = resp.text().await?;
476        serde_json::from_str(&content).map_err(Error::from)
477    } else {
478        let content = resp.text().await?;
479        let entity: Option<InstanceEventError> = serde_json::from_str(&content).ok();
480        Err(Error::ResponseError(ResponseContent {
481            status,
482            content,
483            entity,
484        }))
485    }
486}
487
488/// Update attributes on an existing Tembo instance
489pub async fn patch_instance(
490    configuration: &configuration::Configuration,
491    org_id: &str,
492    instance_id: &str,
493    patch_instance: models::PatchInstance,
494) -> Result<models::Instance, Error<PatchInstanceError>> {
495    // add a prefix to parameters to efficiently prevent name collisions
496    let p_org_id = org_id;
497    let p_instance_id = instance_id;
498    let p_patch_instance = patch_instance;
499
500    let uri_str = format!(
501        "{}/api/v1/orgs/{org_id}/instances/{instance_id}",
502        configuration.base_path,
503        org_id = crate::apis::urlencode(p_org_id),
504        instance_id = crate::apis::urlencode(p_instance_id)
505    );
506    let mut req_builder = configuration
507        .client
508        .request(reqwest::Method::PATCH, &uri_str);
509
510    if let Some(ref user_agent) = configuration.user_agent {
511        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
512    }
513    if let Some(ref token) = configuration.bearer_access_token {
514        req_builder = req_builder.bearer_auth(token.to_owned());
515    };
516    req_builder = req_builder.json(&p_patch_instance);
517
518    let req = req_builder.build()?;
519    let resp = configuration.client.execute(req).await?;
520
521    let status = resp.status();
522
523    if !status.is_client_error() && !status.is_server_error() {
524        let content = resp.text().await?;
525        serde_json::from_str(&content).map_err(Error::from)
526    } else {
527        let content = resp.text().await?;
528        let entity: Option<PatchInstanceError> = serde_json::from_str(&content).ok();
529        Err(Error::ResponseError(ResponseContent {
530            status,
531            content,
532            entity,
533        }))
534    }
535}
536
537/// Restore a Tembo instance
538pub async fn restore_instance(
539    configuration: &configuration::Configuration,
540    org_id: &str,
541    restore_instance: models::RestoreInstance,
542) -> Result<models::Instance, Error<RestoreInstanceError>> {
543    // add a prefix to parameters to efficiently prevent name collisions
544    let p_org_id = org_id;
545    let p_restore_instance = restore_instance;
546
547    let uri_str = format!(
548        "{}/api/v1/orgs/{org_id}/restore",
549        configuration.base_path,
550        org_id = crate::apis::urlencode(p_org_id)
551    );
552    let mut req_builder = configuration
553        .client
554        .request(reqwest::Method::POST, &uri_str);
555
556    if let Some(ref user_agent) = configuration.user_agent {
557        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
558    }
559    if let Some(ref token) = configuration.bearer_access_token {
560        req_builder = req_builder.bearer_auth(token.to_owned());
561    };
562    req_builder = req_builder.json(&p_restore_instance);
563
564    let req = req_builder.build()?;
565    let resp = configuration.client.execute(req).await?;
566
567    let status = resp.status();
568
569    if !status.is_client_error() && !status.is_server_error() {
570        let content = resp.text().await?;
571        serde_json::from_str(&content).map_err(Error::from)
572    } else {
573        let content = resp.text().await?;
574        let entity: Option<RestoreInstanceError> = serde_json::from_str(&content).ok();
575        Err(Error::ResponseError(ResponseContent {
576            status,
577            content,
578            entity,
579        }))
580    }
581}