uptrakit_openapi_client/
surfaces.rs1use crate::Result;
2use crate::UptrakitClient;
3use crate::types_impl::surfaces::{
4 InvokeSurfaceInteractionRequest, SurfaceProviderInfo, SurfaceReadResponse, SurfaceResponse,
5};
6
7impl UptrakitClient {
8 pub async fn list_surfaces(
10 &self,
11 slot: Option<&str>,
12 page: Option<&str>,
13 ) -> Result<Vec<SurfaceResponse>> {
14 let url = format!("{}{}", self.base_url, crate::paths::surfaces::BASE);
15 let mut req = self.http.get(&url).bearer_auth(self.token_or_err()?);
16 let mut query_params: Vec<(&str, &str)> = Vec::new();
17 if let Some(slot) = slot {
18 query_params.push(("slot", slot));
19 }
20 if let Some(page) = page {
21 query_params.push(("page", page));
22 }
23 if !query_params.is_empty() {
24 req = req.query(&query_params);
25 }
26 let resp = self.send_with_retry(req).await?;
27 self.handle_response(resp).await
28 }
29
30 pub async fn list_surface_providers(
32 &self,
33 surface_id: &str,
34 ) -> Result<Vec<SurfaceProviderInfo>> {
35 self.get(&crate::paths::surfaces::providers(surface_id))
36 .await
37 }
38
39 pub async fn read_surface(&self, surface_id: &str) -> Result<SurfaceReadResponse> {
41 self.get(&crate::paths::surfaces::read(surface_id)).await
42 }
43
44 pub async fn invoke_surface_interaction(
46 &self,
47 surface_id: &str,
48 interaction_id: &str,
49 request: &InvokeSurfaceInteractionRequest,
50 ) -> Result<serde_json::Value> {
51 self.post_json(
52 &crate::paths::surfaces::interaction(surface_id, interaction_id),
53 request,
54 )
55 .await
56 }
57}