Skip to main content

awp_types/
response.rs

1use serde::{Deserialize, Serialize};
2use uuid::Uuid;
3
4use crate::AwpVersion;
5
6/// AWP protocol response envelope.
7///
8/// Wraps an outbound response with AWP metadata including protocol version
9/// and status.
10#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub struct AwpResponse {
13    pub id: Uuid,
14    pub version: AwpVersion,
15    pub status: String,
16    pub payload: serde_json::Value,
17}
18
19#[cfg(test)]
20mod tests {
21    use super::*;
22    use crate::CURRENT_VERSION;
23
24    #[test]
25    fn test_serde_round_trip() {
26        let resp = AwpResponse {
27            id: Uuid::now_v7(),
28            version: CURRENT_VERSION,
29            status: "ok".to_string(),
30            payload: serde_json::json!({"result": 42}),
31        };
32        let json = serde_json::to_string(&resp).unwrap();
33        let deserialized: AwpResponse = serde_json::from_str(&json).unwrap();
34        assert_eq!(resp, deserialized);
35    }
36}