Skip to main content

conversation_api/
response.rs

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 TurnSubmitResponse {
54    pub request_id: String,
55    pub thread_id: String,
56    pub disposition: TurnSubmitDisposition,
57    pub session_disposition: TurnSessionDisposition,
58    pub queue_version: u64,
59}
60
61#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
62#[serde(rename_all = "snake_case")]
63pub enum TurnSubmitDisposition {
64    Queued,
65    Duplicate,
66    BlockedPendingInteraction,
67}
68
69#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
70#[serde(rename_all = "snake_case")]
71pub enum TurnSessionDisposition {
72    Existing,
73    Created,
74    RotatedIdleTimeout,
75}
76
77#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
78#[serde(rename_all = "camelCase")]
79pub struct SessionStartResponse {
80    pub operation_id: String,
81    pub thread_id: String,
82    pub disposition: SessionStartDisposition,
83    pub catalog: crate::ThreadCatalog,
84}
85
86#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
87#[serde(rename_all = "snake_case")]
88pub enum SessionStartDisposition {
89    Rotated,
90    AlreadyApplied,
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
94#[serde(rename_all = "camelCase")]
95pub struct InteractionAnswerResponse {
96    pub request_id: String,
97    pub thread_id: String,
98    pub disposition: InteractionAnswerDisposition,
99}
100
101#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
102#[serde(rename_all = "snake_case")]
103pub enum InteractionAnswerDisposition {
104    Accepted,
105    Duplicate,
106    Unavailable,
107    ExpiredSession,
108}
109
110#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
111#[serde(rename_all = "camelCase")]
112pub struct InteractionSubmitResponse {
113    pub request_id: String,
114    pub disposition: InteractionSubmitDisposition,
115}
116
117#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
118#[serde(rename_all = "snake_case")]
119pub enum InteractionSubmitDisposition {
120    Accepted,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
124#[serde(rename_all = "camelCase")]
125pub struct RequestCancelResponse {
126    pub request_id: String,
127    pub phase: RequestCancelPhase,
128    pub outcome: RequestCancelOutcome,
129    pub queue_version: u64,
130}
131
132#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
133#[serde(rename_all = "snake_case")]
134pub enum RequestCancelPhase {
135    Waiting,
136    Running,
137}
138
139#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
140#[serde(rename_all = "snake_case")]
141pub enum RequestCancelOutcome {
142    Cancelled,
143    Cancelling,
144}