roder_api/
thread_events.rs1use serde::{Deserialize, Serialize};
3use time::OffsetDateTime;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase", deny_unknown_fields)]
7pub struct ThreadEventSubscribeRequest {
8 pub topic: String,
9 pub prompt: String,
10 pub delay_seconds: Option<u64>,
12 pub interval_seconds: Option<u64>,
13 #[serde(default = "default_max_deliveries")]
14 pub max_deliveries: u32,
15 #[serde(default = "default_ttl_seconds")]
16 pub ttl_seconds: u64,
17}
18
19fn default_max_deliveries() -> u32 {
20 100
21}
22fn default_ttl_seconds() -> u64 {
23 86_400
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(rename_all = "camelCase")]
28pub struct ThreadEventSubscription {
29 pub id: String,
30 pub thread_id: String,
31 pub topic: String,
32 pub prompt: String,
33 pub interval_seconds: Option<u64>,
34 pub remaining_deliveries: u32,
35 #[serde(with = "time::serde::rfc3339::option")]
37 pub next_tick_at: Option<OffsetDateTime>,
38 #[serde(with = "time::serde::rfc3339::option")]
40 pub last_delivered_at: Option<OffsetDateTime>,
41 #[serde(with = "time::serde::rfc3339")]
42 pub expires_at: OffsetDateTime,
43 pub pending: bool,
44 pub last_error: Option<String>,
45}