gproxy_protocol/claude/common/
container.rs1use serde::{Deserialize, Serialize};
2
3use super::SkillType;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6#[serde(untagged)]
7#[non_exhaustive]
8pub enum ContainerParam {
9 Params(ContainerParams),
10 Id(String),
11 Raw(serde_json::Value),
12}
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
15#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
16pub struct ContainerParams {
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub id: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub skills: Option<Vec<SkillParam>>,
21 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
22 pub rest: serde_json::Map<String, serde_json::Value>,
23}
24
25#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
26#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
27pub struct SkillParam {
28 pub skill_id: String,
29 #[serde(rename = "type")]
30 pub type_: SkillType,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub version: Option<String>,
33 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
34 pub rest: serde_json::Map<String, serde_json::Value>,
35}
36
37#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
38#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
39pub struct Container {
40 pub id: String,
41 pub expires_at: String,
42 pub skills: Vec<Skill>,
43 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
44 pub rest: serde_json::Map<String, serde_json::Value>,
45}
46
47#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
48#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
49pub struct Skill {
50 pub skill_id: String,
51 #[serde(rename = "type")]
52 pub type_: SkillType,
53 pub version: String,
54 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
55 pub rest: serde_json::Map<String, serde_json::Value>,
56}