Skip to main content

novel_openai/
spec.rs

1//! Types used in OpenAI API requests and responses.
2//! These types are created from component schemas in the [OpenAPI spec](https://github.com/openai/openai-openapi)
3
4// Allow ambiguous glob re-exports since multiple modules legitimately define types with the same
5// names (e.g., MessageRole in assistants and responses, Role in chat and responses)
6// Users should use explicit module paths for these conflicting types.
7#![allow(ambiguous_glob_reexports)]
8
9#[cfg(feature = "administration-types")]
10pub mod admin;
11#[cfg(feature = "assistant-types")]
12pub mod assistants;
13#[cfg(feature = "audio-types")]
14pub mod audio;
15#[cfg(feature = "batch-types")]
16pub mod batches;
17#[cfg(feature = "chat-completion-types")]
18pub mod chat;
19#[cfg(feature = "chatkit-types")]
20pub mod chatkit;
21#[cfg(feature = "completion-types")]
22pub mod completions;
23#[cfg(feature = "container-types")]
24pub mod containers;
25#[cfg(feature = "embedding-types")]
26pub mod embeddings;
27#[cfg(feature = "eval-types")]
28pub mod evals;
29#[cfg(feature = "file-types")]
30pub mod files;
31#[cfg(feature = "finetuning-types")]
32pub mod finetuning;
33#[cfg(feature = "grader-types")]
34pub mod graders;
35#[cfg(feature = "image-types")]
36pub mod images;
37#[cfg(any(
38    feature = "audio-types",
39    feature = "file-types",
40    feature = "upload-types",
41    feature = "image-types",
42    feature = "video-types",
43    feature = "container-types",
44    feature = "chat-completion-types",
45    feature = "realtime-types"
46))]
47mod input_source;
48#[cfg(any(feature = "response-types", feature = "realtime-types"))]
49pub mod mcp;
50#[cfg(any(
51    feature = "response-types",
52    feature = "audio-types",
53    feature = "video-types",
54    feature = "image-types",
55    feature = "batch-types",
56    feature = "file-types",
57    feature = "upload-types",
58    feature = "vectorstore-types",
59    feature = "container-types",
60    feature = "chat-completion-types",
61    feature = "realtime-types"
62))]
63mod metadata;
64#[cfg(feature = "model-types")]
65pub mod models;
66#[cfg(feature = "moderation-types")]
67pub mod moderations;
68#[cfg_attr(docsrs, doc(cfg(feature = "realtime-types")))]
69#[cfg(feature = "realtime-types")]
70pub mod realtime;
71#[cfg(feature = "response-types")]
72pub mod responses;
73#[cfg(any(
74    feature = "response-types",
75    feature = "video-types",
76    feature = "vectorstore-types",
77    feature = "chat-completion-types",
78    feature = "assistant-types",
79    feature = "batch-types",
80    feature = "audio-types",
81    feature = "realtime-types",
82    feature = "image-types"
83))]
84mod shared;
85#[cfg(feature = "chat-completion-types")]
86mod text;
87#[cfg(feature = "upload-types")]
88pub mod uploads;
89#[cfg(feature = "vectorstore-types")]
90pub mod vectorstores;
91#[cfg(feature = "video-types")]
92pub mod videos;
93#[cfg_attr(docsrs, doc(cfg(feature = "webhook-types")))]
94#[cfg(feature = "webhook-types")]
95pub mod webhooks;
96
97#[cfg(any(
98    feature = "audio-types",
99    feature = "file-types",
100    feature = "upload-types",
101    feature = "image-types",
102    feature = "video-types",
103    feature = "container-types",
104    feature = "chat-completion-types",
105    feature = "realtime-types"
106))]
107pub use input_source::*;
108#[cfg(any(
109    feature = "audio-types",
110    feature = "batch-types",
111    feature = "file-types",
112    feature = "upload-types",
113    feature = "image-types",
114    feature = "video-types",
115    feature = "vectorstore-types",
116    feature = "container-types",
117    feature = "response-types",
118    feature = "chat-completion-types",
119    feature = "realtime-types"
120))]
121pub use metadata::*;
122
123#[cfg(any(
124    feature = "audio-types",
125    feature = "file-types",
126    feature = "image-types",
127    feature = "chat-completion-types",
128    feature = "completion-types",
129    feature = "embedding-types",
130    feature = "moderation-types",
131    feature = "video-types"
132))]
133mod impls;
134
135#[cfg(any(
136    feature = "response-types",
137    feature = "audio-types",
138    feature = "file-types",
139    feature = "image-types",
140    feature = "chat-completion-types",
141    feature = "completion-types",
142    feature = "embedding-types",
143    feature = "moderation-types",
144    feature = "administration-types",
145))]
146impl From<derive_builder::UninitializedFieldError> for crate::error::OpenAIError {
147    fn from(value: derive_builder::UninitializedFieldError) -> Self {
148        crate::error::OpenAIError::InvalidArgument(value.to_string())
149    }
150}
151
152// Re-export types from submodules for backward compatibility
153#[cfg(feature = "assistant-types")]
154pub use assistants::*;
155#[cfg(feature = "audio-types")]
156pub use audio::*;
157#[cfg(feature = "batch-types")]
158pub use batches::*;
159#[cfg(feature = "chat-completion-types")]
160pub use chat::*;
161#[cfg(feature = "chatkit-types")]
162pub use chatkit::*;
163#[cfg(feature = "completion-types")]
164pub use completions::*;
165#[cfg(feature = "container-types")]
166pub use containers::*;
167#[cfg(feature = "embedding-types")]
168pub use embeddings::*;
169#[cfg(feature = "eval-types")]
170pub use evals::*;
171#[cfg(feature = "file-types")]
172pub use files::*;
173#[cfg(feature = "finetuning-types")]
174pub use finetuning::*;
175#[cfg(feature = "grader-types")]
176pub use graders::*;
177#[cfg(feature = "image-types")]
178pub use images::*;
179#[cfg(feature = "model-types")]
180pub use models::*;
181#[cfg(feature = "moderation-types")]
182pub use moderations::*;
183#[cfg(feature = "response-types")]
184pub use responses::*;
185#[cfg(any(
186    feature = "response-types",
187    feature = "video-types",
188    feature = "vectorstore-types",
189    feature = "chat-completion-types",
190    feature = "assistant-types",
191    feature = "batch-types",
192    feature = "audio-types",
193    feature = "realtime-types",
194    feature = "image-types"
195))]
196pub use shared::*;
197#[cfg(feature = "chat-completion-types")]
198pub use text::*;
199#[cfg(feature = "upload-types")]
200pub use uploads::*;
201#[cfg(feature = "vectorstore-types")]
202pub use vectorstores::*;
203#[cfg(feature = "video-types")]
204pub use videos::*;
205#[cfg(feature = "webhook-types")]
206pub use webhooks::*;