clia_async_openai/types/realtime/
response_resource.rs

1use 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}
44
45#[derive(Debug, Serialize, Deserialize, Clone)]
46pub struct ResponseResource {
47    /// The unique ID of the response.
48    pub id: String,
49    /// The object type, must be "realtime.response".
50    pub object: String,
51    /// The status of the response
52    pub status: ResponseStatus,
53    /// Additional details about the status.
54    pub status_details: Option<ResponseStatusDetail>,
55    /// The list of output items generated by the response.
56    pub output: Vec<Item>,
57    /// Usage statistics for the response.
58    pub usage: Option<Usage>,
59}