outfox_openai/spec/realtime/
response_resource.rs1use serde::{Deserialize, Serialize};
2
3use super::item::Item;
4
5#[derive(Debug, Serialize, Deserialize, Clone)]
6pub struct Usage {
7 pub total_tokens: u32,
8 pub input_tokens: u32,
9 pub output_tokens: u32,
10}
11
12#[derive(Debug, Serialize, Deserialize, Clone)]
13#[serde(rename_all = "snake_case")]
14pub enum ResponseStatus {
15 InProgress,
16 Completed,
17 Cancelled,
18 Failed,
19 Incomplete,
20}
21
22#[derive(Debug, Serialize, Deserialize, Clone)]
23pub struct FailedError {
24 pub code: String,
25 pub message: String,
26}
27
28#[derive(Debug, Serialize, Deserialize, Clone)]
29#[serde(rename_all = "snake_case")]
30pub enum IncompleteReason {
31 Interruption,
32 MaxOutputTokens,
33 ContentFilter,
34}
35
36#[derive(Debug, Serialize, Deserialize, Clone)]
37#[serde(tag = "type")]
38pub enum ResponseStatusDetail {
39 #[serde(rename = "incomplete")]
40 Incomplete { reason: IncompleteReason },
41 #[serde(rename = "failed")]
42 Failed { error: Option<FailedError> },
43 #[serde(rename = "cancelled")]
44 Cancelled { reason: String },
45}
46
47#[derive(Debug, Serialize, Deserialize, Clone)]
48pub struct ResponseResource {
49 pub id: String,
51 pub object: String,
53 pub status: ResponseStatus,
55 pub status_details: Option<ResponseStatusDetail>,
57 pub output: Vec<Item>,
59 pub usage: Option<Usage>,
61}