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}