uptrakit_web_api_types/
surfaces.rs1use serde::{Deserialize, Serialize};
2use uptrakit_wire::surfaces::{self, SurfaceDescriptor};
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Deserialize)]
7pub struct ListSurfacesQuery {
8 #[serde(default)]
9 pub slot: Option<String>,
10 #[serde(default)]
11 pub page: Option<String>,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct SurfaceResponse {
17 #[serde(flatten)]
18 pub descriptor: SurfaceDescriptor,
19 pub provider_count: usize,
20}
21
22#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
24#[serde(rename_all = "snake_case")]
25pub enum SurfaceProviderAvailability {
26 Available,
27 Disconnected,
28 IncompatibleTenant,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct SurfaceProviderInfo {
34 pub provider_id: String,
35 pub display_label: String,
36 #[serde(default, skip_serializing_if = "Option::is_none")]
37 pub service_id: Option<Uuid>,
38 pub availability: SurfaceProviderAvailability,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub encryption_metadata: Option<surfaces::ProviderEncryptionMetadata>,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
45pub struct SurfaceRuntimeStatusResponse {
46 pub active: bool,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct SurfaceReadResponse {
52 pub descriptor: SurfaceDescriptor,
53 #[serde(default)]
54 pub interactions: Vec<surfaces::InteractionDescriptor>,
55 #[serde(default)]
56 pub data_sources: Vec<surfaces::DataSourceDescriptor>,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct InvokeSurfaceInteractionRequest {
62 #[serde(default)]
63 pub params: serde_json::Map<String, serde_json::Value>,
64 #[serde(default, skip_serializing_if = "Option::is_none")]
65 pub encrypted_sensitive_params: Option<surfaces::EncryptedSensitiveParams>,
66 #[serde(default, skip_serializing_if = "Option::is_none")]
67 pub target_provider_id: Option<String>,
68 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub idempotency_key: Option<String>,
71 #[serde(default, skip_serializing_if = "Option::is_none")]
73 pub timeout_seconds: Option<u16>,
74}