1use crate::{ConversationQueue, LiveSnapshot, ThreadSnapshot, ThreadSummary};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5#[serde(rename_all = "camelCase")]
6pub struct ThreadSession {
7 pub activity_at_unix_ms: i64,
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
11#[serde(tag = "mode", rename_all = "snake_case")]
12pub enum ThreadSync {
13 Unchanged {
14 snapshot_version: u64,
15 },
16 Delta {
17 base_snapshot_version: u64,
18 snapshot_version: u64,
19 events: Vec<crate::SnapshotUpdatedEvent>,
20 },
21 Snapshot {
22 snapshot: ThreadSnapshot,
23 },
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
27#[serde(rename_all = "camelCase")]
28pub struct ThreadLoadResponse {
29 pub thread: ThreadSummary,
30 pub session: ThreadSession,
31 pub sync: ThreadSync,
32 pub live: LiveSnapshot,
33 pub queue: ConversationQueue,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
37#[serde(rename_all = "camelCase")]
38pub struct MessageEnqueueResponse {
39 pub request_id: String,
40 pub disposition: MessageEnqueueDisposition,
41 pub queue_version: u64,
42}
43
44#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
45#[serde(rename_all = "snake_case")]
46pub enum MessageEnqueueDisposition {
47 Queued,
48 Duplicate,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
52#[serde(rename_all = "camelCase")]
53pub struct InteractionSubmitResponse {
54 pub request_id: String,
55 pub disposition: InteractionSubmitDisposition,
56}
57
58#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
59#[serde(rename_all = "snake_case")]
60pub enum InteractionSubmitDisposition {
61 Accepted,
62}
63
64#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
65#[serde(rename_all = "camelCase")]
66pub struct RequestCancelResponse {
67 pub request_id: String,
68 pub phase: RequestCancelPhase,
69 pub outcome: RequestCancelOutcome,
70 pub queue_version: u64,
71}
72
73#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
74#[serde(rename_all = "snake_case")]
75pub enum RequestCancelPhase {
76 Waiting,
77 Running,
78}
79
80#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
81#[serde(rename_all = "snake_case")]
82pub enum RequestCancelOutcome {
83 Cancelled,
84 Cancelling,
85}