Skip to main content

outfox_openai/spec/responses/
api.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::error::OpenAIError;
5use crate::spec::responses::{IncludeParam, ListOrder};
6
7/// Query parameters for listing conversation items.
8#[derive(Clone, Serialize, Default, Debug, Deserialize, Builder, PartialEq)]
9#[builder(name = "ListConversationItemsQueryArgs")]
10#[builder(pattern = "mutable")]
11#[builder(setter(into, strip_option), default)]
12#[builder(derive(Debug))]
13#[builder(build_fn(error = "OpenAIError"))]
14pub struct ListConversationItemsQuery {
15    /// A limit on the number of objects to be returned. Limit can range between 1 and 100, and the
16    /// default is 20.
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub limit: Option<u32>,
19    /// The order to return the input items in. Default is `desc`.
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub order: Option<ListOrder>,
22    /// An item ID to list items after, used in pagination.
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub after: Option<String>,
25    /// Specify additional output data to include in the model response.
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub include: Option<Vec<IncludeParam>>,
28}
29
30/// Sort order for listing input items.
31#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
32#[serde(rename_all = "lowercase")]
33pub enum ListInputItemsOrder {
34    /// Ascending order
35    Asc,
36    /// Descending order
37    Desc,
38}
39
40/// Query parameters for getting a response.
41#[derive(Debug, Serialize, Default, Clone, Builder, PartialEq)]
42#[builder(name = "GetResponseQueryArgs")]
43#[builder(pattern = "mutable")]
44#[builder(setter(into, strip_option), default)]
45#[builder(derive(Debug))]
46#[builder(build_fn(error = "OpenAIError"))]
47pub struct GetResponseQuery {
48    /// Additional fields to include in the response.
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub include: Option<Vec<String>>,
51    /// If set to true, the model response data will be streamed to the client as it is generated
52    /// using server-sent events.
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub stream: Option<bool>,
55    /// The sequence number of the event after which to start streaming.
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub starting_after: Option<u32>,
58    /// When true, stream obfuscation will be enabled.
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub include_obfuscation: Option<bool>,
61}
62
63/// Query parameters for listing input items.
64#[derive(Debug, Serialize, Default, Clone, Builder, PartialEq)]
65#[builder(name = "ListInputItemsQueryArgs")]
66#[builder(pattern = "mutable")]
67#[builder(setter(into, strip_option), default)]
68#[builder(derive(Debug))]
69#[builder(build_fn(error = "OpenAIError"))]
70pub struct ListInputItemsQuery {
71    /// A limit on the number of objects to be returned. Limit can range between 1 and 100, and the
72    /// default is 20.
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub limit: Option<u32>,
75    /// The order to return the input items in. Default is `desc`.
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub order: Option<ListInputItemsOrder>,
78    /// An item ID to list items after, used in pagination.
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub after: Option<String>,
81    /// Additional fields to include in the response.
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub include: Option<Vec<String>>,
84}
85
86/// Query parameters for getting a conversation item.
87#[derive(Debug, Serialize, Default, Clone, Builder, PartialEq)]
88#[builder(name = "GetConversationItemQueryArgs")]
89#[builder(pattern = "mutable")]
90#[builder(setter(into, strip_option), default)]
91#[builder(derive(Debug))]
92#[builder(build_fn(error = "OpenAIError"))]
93pub struct GetConversationItemQuery {
94    /// Additional fields to include in the response.
95    #[serde(skip_serializing_if = "Option::is_none")]
96    pub include: Option<Vec<IncludeParam>>,
97}
98
99/// Query parameters for creating conversation items.
100#[derive(Debug, Serialize, Default, Clone, Builder, PartialEq)]
101#[builder(name = "CreateConversationItemsQueryArgs")]
102#[builder(pattern = "mutable")]
103#[builder(setter(into, strip_option), default)]
104#[builder(derive(Debug))]
105#[builder(build_fn(error = "OpenAIError"))]
106pub struct CreateConversationItemsQuery {
107    /// Additional fields to include in the response.
108    #[serde(skip_serializing_if = "Option::is_none")]
109    pub include: Option<Vec<IncludeParam>>,
110}