portkey_sdk/model/feedback.rs
1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5/// Request to create feedback for a trace.
6///
7/// # Example
8///
9/// ```rust
10/// use portkey_sdk::model::CreateFeedbackRequest;
11/// use std::collections::HashMap;
12///
13/// let mut metadata = HashMap::new();
14/// metadata.insert("user_id".to_string(), serde_json::json!("user123"));
15///
16/// let request = CreateFeedbackRequest {
17/// trace_id: "trace-abc-123".to_string(),
18/// value: 5,
19/// weight: Some(1.0),
20/// metadata: Some(metadata),
21/// };
22/// ```
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct CreateFeedbackRequest {
25 /// Unique identifier for the request trace
26 pub trace_id: String,
27
28 /// Feedback value (integer between -10 and 10)
29 pub value: i32,
30
31 /// Weight of the feedback (float between 0 and 1, default: 1.0)
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub weight: Option<f32>,
34
35 /// Additional metadata for the feedback
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub metadata: Option<HashMap<String, serde_json::Value>>,
38}
39
40/// Request to update existing feedback.
41///
42/// # Example
43///
44/// ```rust
45/// use portkey_sdk::model::UpdateFeedbackRequest;
46///
47/// let request = UpdateFeedbackRequest {
48/// value: 8,
49/// weight: Some(0.9),
50/// metadata: None,
51/// };
52/// ```
53#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct UpdateFeedbackRequest {
55 /// Updated feedback value (integer between -10 and 10)
56 pub value: i32,
57
58 /// Updated weight of the feedback (float between 0 and 1)
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub weight: Option<f32>,
61
62 /// Updated metadata for the feedback
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub metadata: Option<HashMap<String, serde_json::Value>>,
65}
66
67/// Response from creating or updating feedback.
68#[derive(Debug, Clone, Serialize, Deserialize)]
69pub struct FeedbackResponse {
70 /// Status of the operation (success or failure)
71 pub status: String,
72
73 /// Confirmation message
74 pub message: String,
75
76 /// IDs of feedbacks created/updated
77 pub feedback_ids: Vec<String>,
78}