Skip to main content

openai_types/image/
_gen.rs

1// AUTO-GENERATED by py2rust — do not edit.
2// Re-generate: python3 scripts/py2rust.py sync <python_dir> <rust_dir>
3// Domain: image
4#![allow(unused_imports)]
5
6use serde::{Deserialize, Serialize};
7use super::*;
8
9#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
10#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
11#[non_exhaustive]
12pub enum ImageCreateVariationParamsResponseFormat {
13    #[serde(rename = "url")]
14    Url,
15    #[serde(rename = "b64_json")]
16    B64Json,
17}
18
19#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
20#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
21#[non_exhaustive]
22pub enum ImageCreateVariationParamsSize {
23    #[serde(rename = "256x256")]
24    V256x256,
25    #[serde(rename = "512x512")]
26    V512x512,
27    #[serde(rename = "1024x1024")]
28    V1024x1024,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
33pub struct ImageCreateVariationParams {
34    /// The image to use as the basis for the variation(s).
35    pub image: serde_json::Value,
36    /// The model to use for image generation.
37    #[serde(skip_serializing_if = "Option::is_none", default)]
38    pub model: Option<String>,
39    /// The number of images to generate. Must be between 1 and 10.
40    #[serde(skip_serializing_if = "Option::is_none", default)]
41    pub n: Option<i64>,
42    /// The format in which the generated images are returned.
43    #[serde(skip_serializing_if = "Option::is_none", default)]
44    pub response_format: Option<ImageCreateVariationParamsResponseFormat>,
45    /// The size of the generated images.
46    #[serde(skip_serializing_if = "Option::is_none", default)]
47    pub size: Option<ImageCreateVariationParamsSize>,
48    /// A unique identifier representing your end-user, which can help OpenAI to monitor
49    #[serde(skip_serializing_if = "Option::is_none", default)]
50    pub user: Option<String>,
51}
52
53/// The input tokens detailed information for the image generation.
54#[derive(Debug, Clone, Serialize, Deserialize)]
55#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
56pub struct UsageInputTokensDetails {
57    /// The number of image tokens in the input prompt.
58    pub image_tokens: i64,
59    /// The number of text tokens in the input prompt.
60    pub text_tokens: i64,
61}
62
63/// For the GPT image models only, the token usage information for the image generation.
64#[derive(Debug, Clone, Serialize, Deserialize)]
65#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
66pub struct Usage {
67    /// The number of tokens (images and text) in the input prompt.
68    pub input_tokens: i64,
69    /// The input tokens detailed information for the image generation.
70    pub input_tokens_details: UsageInputTokensDetails,
71    /// The number of image tokens in the output image.
72    pub output_tokens: i64,
73    /// The total number of tokens (images and text) used for the image generation.
74    pub total_tokens: i64,
75}
76
77#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
78#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
79#[non_exhaustive]
80pub enum ImageEditCompletedEventBackground {
81    #[serde(rename = "transparent")]
82    Transparent,
83    #[serde(rename = "opaque")]
84    Opaque,
85    #[serde(rename = "auto")]
86    Auto,
87}
88
89#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
90#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
91#[non_exhaustive]
92pub enum ImageEditCompletedEventOutputFormat {
93    #[serde(rename = "png")]
94    Png,
95    #[serde(rename = "webp")]
96    Webp,
97    #[serde(rename = "jpeg")]
98    Jpeg,
99}
100
101#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
102#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
103#[non_exhaustive]
104pub enum ImageEditCompletedEventQuality {
105    #[serde(rename = "low")]
106    Low,
107    #[serde(rename = "medium")]
108    Medium,
109    #[serde(rename = "high")]
110    High,
111    #[serde(rename = "auto")]
112    Auto,
113}
114
115#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
116#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
117#[non_exhaustive]
118pub enum ImageEditCompletedEventSize {
119    #[serde(rename = "1024x1024")]
120    V1024x1024,
121    #[serde(rename = "1024x1536")]
122    V1024x1536,
123    #[serde(rename = "1536x1024")]
124    V1536x1024,
125    #[serde(rename = "auto")]
126    Auto,
127}
128
129/// Emitted when image editing has completed and the final image is available.
130#[derive(Debug, Clone, Serialize, Deserialize)]
131#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
132pub struct ImageEditCompletedEvent {
133    /// Base64-encoded final edited image data, suitable for rendering as an image.
134    pub b64_json: String,
135    /// The background setting for the edited image.
136    pub background: ImageEditCompletedEventBackground,
137    /// The Unix timestamp when the event was created.
138    pub created_at: i64,
139    /// The output format for the edited image.
140    pub output_format: ImageEditCompletedEventOutputFormat,
141    /// The quality setting for the edited image.
142    pub quality: ImageEditCompletedEventQuality,
143    /// The size of the edited image.
144    pub size: ImageEditCompletedEventSize,
145    /// The type of the event. Always `image_edit.completed`.
146    #[serde(rename = "type")]
147    pub type_: String,
148    /// For the GPT image models only, the token usage information for the image
149    pub usage: Usage,
150}
151
152#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
153#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
154#[non_exhaustive]
155pub enum ImageEditParamsBaseBackground {
156    #[serde(rename = "transparent")]
157    Transparent,
158    #[serde(rename = "opaque")]
159    Opaque,
160    #[serde(rename = "auto")]
161    Auto,
162}
163
164#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
165#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
166#[non_exhaustive]
167pub enum ImageEditParamsBaseInputFidelity {
168    #[serde(rename = "high")]
169    High,
170    #[serde(rename = "low")]
171    Low,
172}
173
174#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
175#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
176#[non_exhaustive]
177pub enum ImageEditParamsBaseOutputFormat {
178    #[serde(rename = "png")]
179    Png,
180    #[serde(rename = "jpeg")]
181    Jpeg,
182    #[serde(rename = "webp")]
183    Webp,
184}
185
186#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
187#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
188#[non_exhaustive]
189pub enum ImageEditParamsBaseQuality {
190    #[serde(rename = "standard")]
191    Standard,
192    #[serde(rename = "low")]
193    Low,
194    #[serde(rename = "medium")]
195    Medium,
196    #[serde(rename = "high")]
197    High,
198    #[serde(rename = "auto")]
199    Auto,
200}
201
202#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
203#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
204#[non_exhaustive]
205pub enum ImageEditParamsBaseResponseFormat {
206    #[serde(rename = "url")]
207    Url,
208    #[serde(rename = "b64_json")]
209    B64Json,
210}
211
212#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
213#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
214#[non_exhaustive]
215pub enum ImageEditParamsBaseSize {
216    #[serde(rename = "256x256")]
217    V256x256,
218    #[serde(rename = "512x512")]
219    V512x512,
220    #[serde(rename = "1024x1024")]
221    V1024x1024,
222    #[serde(rename = "1536x1024")]
223    V1536x1024,
224    #[serde(rename = "1024x1536")]
225    V1024x1536,
226    #[serde(rename = "auto")]
227    Auto,
228}
229
230#[derive(Debug, Clone, Serialize, Deserialize)]
231#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
232pub struct ImageEditParamsBase {
233    /// The image(s) to edit. Must be a supported image file or an array of images.
234    pub image: serde_json::Value,
235    /// A text description of the desired image(s).
236    pub prompt: String,
237    /// Allows to set transparency for the background of the generated image(s). This
238    #[serde(skip_serializing_if = "Option::is_none", default)]
239    pub background: Option<ImageEditParamsBaseBackground>,
240    /// Control how much effort the model will exert to match the style and features,
241    #[serde(skip_serializing_if = "Option::is_none", default)]
242    pub input_fidelity: Option<ImageEditParamsBaseInputFidelity>,
243    /// An additional image whose fully transparent areas (e.g.
244    #[serde(skip_serializing_if = "Option::is_none", default)]
245    pub mask: Option<serde_json::Value>,
246    /// The model to use for image generation. Defaults to `gpt-image-1.5`.
247    #[serde(skip_serializing_if = "Option::is_none", default)]
248    pub model: Option<String>,
249    /// The number of images to generate. Must be between 1 and 10.
250    #[serde(skip_serializing_if = "Option::is_none", default)]
251    pub n: Option<i64>,
252    /// The compression level (0-100%) for the generated images.
253    #[serde(skip_serializing_if = "Option::is_none", default)]
254    pub output_compression: Option<i64>,
255    /// The format in which the generated images are returned.
256    #[serde(skip_serializing_if = "Option::is_none", default)]
257    pub output_format: Option<ImageEditParamsBaseOutputFormat>,
258    /// The number of partial images to generate.
259    #[serde(skip_serializing_if = "Option::is_none", default)]
260    pub partial_images: Option<i64>,
261    /// The quality of the image that will be generated for GPT image models.
262    #[serde(skip_serializing_if = "Option::is_none", default)]
263    pub quality: Option<ImageEditParamsBaseQuality>,
264    /// The format in which the generated images are returned.
265    #[serde(skip_serializing_if = "Option::is_none", default)]
266    pub response_format: Option<ImageEditParamsBaseResponseFormat>,
267    /// The size of the generated images.
268    #[serde(skip_serializing_if = "Option::is_none", default)]
269    pub size: Option<ImageEditParamsBaseSize>,
270    /// A unique identifier representing your end-user, which can help OpenAI to monitor
271    #[serde(skip_serializing_if = "Option::is_none", default)]
272    pub user: Option<String>,
273}
274
275#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
276#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
277#[non_exhaustive]
278pub enum ImageEditPartialImageEventBackground {
279    #[serde(rename = "transparent")]
280    Transparent,
281    #[serde(rename = "opaque")]
282    Opaque,
283    #[serde(rename = "auto")]
284    Auto,
285}
286
287#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
288#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
289#[non_exhaustive]
290pub enum ImageEditPartialImageEventOutputFormat {
291    #[serde(rename = "png")]
292    Png,
293    #[serde(rename = "webp")]
294    Webp,
295    #[serde(rename = "jpeg")]
296    Jpeg,
297}
298
299#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
300#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
301#[non_exhaustive]
302pub enum ImageEditPartialImageEventQuality {
303    #[serde(rename = "low")]
304    Low,
305    #[serde(rename = "medium")]
306    Medium,
307    #[serde(rename = "high")]
308    High,
309    #[serde(rename = "auto")]
310    Auto,
311}
312
313#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
314#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
315#[non_exhaustive]
316pub enum ImageEditPartialImageEventSize {
317    #[serde(rename = "1024x1024")]
318    V1024x1024,
319    #[serde(rename = "1024x1536")]
320    V1024x1536,
321    #[serde(rename = "1536x1024")]
322    V1536x1024,
323    #[serde(rename = "auto")]
324    Auto,
325}
326
327/// Emitted when a partial image is available during image editing streaming.
328#[derive(Debug, Clone, Serialize, Deserialize)]
329#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
330pub struct ImageEditPartialImageEvent {
331    /// Base64-encoded partial image data, suitable for rendering as an image.
332    pub b64_json: String,
333    /// The background setting for the requested edited image.
334    pub background: ImageEditPartialImageEventBackground,
335    /// The Unix timestamp when the event was created.
336    pub created_at: i64,
337    /// The output format for the requested edited image.
338    pub output_format: ImageEditPartialImageEventOutputFormat,
339    /// 0-based index for the partial image (streaming).
340    pub partial_image_index: i64,
341    /// The quality setting for the requested edited image.
342    pub quality: ImageEditPartialImageEventQuality,
343    /// The size of the requested edited image.
344    pub size: ImageEditPartialImageEventSize,
345    /// The type of the event. Always `image_edit.partial_image`.
346    #[serde(rename = "type")]
347    pub type_: String,
348}
349
350pub type ImageEditStreamEvent = serde_json::Value;
351
352#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
353#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
354#[non_exhaustive]
355pub enum ImageGenCompletedEventBackground {
356    #[serde(rename = "transparent")]
357    Transparent,
358    #[serde(rename = "opaque")]
359    Opaque,
360    #[serde(rename = "auto")]
361    Auto,
362}
363
364#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
365#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
366#[non_exhaustive]
367pub enum ImageGenCompletedEventOutputFormat {
368    #[serde(rename = "png")]
369    Png,
370    #[serde(rename = "webp")]
371    Webp,
372    #[serde(rename = "jpeg")]
373    Jpeg,
374}
375
376#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
377#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
378#[non_exhaustive]
379pub enum ImageGenCompletedEventQuality {
380    #[serde(rename = "low")]
381    Low,
382    #[serde(rename = "medium")]
383    Medium,
384    #[serde(rename = "high")]
385    High,
386    #[serde(rename = "auto")]
387    Auto,
388}
389
390#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
391#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
392#[non_exhaustive]
393pub enum ImageGenCompletedEventSize {
394    #[serde(rename = "1024x1024")]
395    V1024x1024,
396    #[serde(rename = "1024x1536")]
397    V1024x1536,
398    #[serde(rename = "1536x1024")]
399    V1536x1024,
400    #[serde(rename = "auto")]
401    Auto,
402}
403
404/// Emitted when image generation has completed and the final image is available.
405#[derive(Debug, Clone, Serialize, Deserialize)]
406#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
407pub struct ImageGenCompletedEvent {
408    /// Base64-encoded image data, suitable for rendering as an image.
409    pub b64_json: String,
410    /// The background setting for the generated image.
411    pub background: ImageGenCompletedEventBackground,
412    /// The Unix timestamp when the event was created.
413    pub created_at: i64,
414    /// The output format for the generated image.
415    pub output_format: ImageGenCompletedEventOutputFormat,
416    /// The quality setting for the generated image.
417    pub quality: ImageGenCompletedEventQuality,
418    /// The size of the generated image.
419    pub size: ImageGenCompletedEventSize,
420    /// The type of the event. Always `image_generation.completed`.
421    #[serde(rename = "type")]
422    pub type_: String,
423    /// For the GPT image models only, the token usage information for the image
424    pub usage: Usage,
425}
426
427#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
428#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
429#[non_exhaustive]
430pub enum ImageGenPartialImageEventBackground {
431    #[serde(rename = "transparent")]
432    Transparent,
433    #[serde(rename = "opaque")]
434    Opaque,
435    #[serde(rename = "auto")]
436    Auto,
437}
438
439#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
440#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
441#[non_exhaustive]
442pub enum ImageGenPartialImageEventOutputFormat {
443    #[serde(rename = "png")]
444    Png,
445    #[serde(rename = "webp")]
446    Webp,
447    #[serde(rename = "jpeg")]
448    Jpeg,
449}
450
451#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
452#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
453#[non_exhaustive]
454pub enum ImageGenPartialImageEventQuality {
455    #[serde(rename = "low")]
456    Low,
457    #[serde(rename = "medium")]
458    Medium,
459    #[serde(rename = "high")]
460    High,
461    #[serde(rename = "auto")]
462    Auto,
463}
464
465#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
466#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
467#[non_exhaustive]
468pub enum ImageGenPartialImageEventSize {
469    #[serde(rename = "1024x1024")]
470    V1024x1024,
471    #[serde(rename = "1024x1536")]
472    V1024x1536,
473    #[serde(rename = "1536x1024")]
474    V1536x1024,
475    #[serde(rename = "auto")]
476    Auto,
477}
478
479/// Emitted when a partial image is available during image generation streaming.
480#[derive(Debug, Clone, Serialize, Deserialize)]
481#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
482pub struct ImageGenPartialImageEvent {
483    /// Base64-encoded partial image data, suitable for rendering as an image.
484    pub b64_json: String,
485    /// The background setting for the requested image.
486    pub background: ImageGenPartialImageEventBackground,
487    /// The Unix timestamp when the event was created.
488    pub created_at: i64,
489    /// The output format for the requested image.
490    pub output_format: ImageGenPartialImageEventOutputFormat,
491    /// 0-based index for the partial image (streaming).
492    pub partial_image_index: i64,
493    /// The quality setting for the requested image.
494    pub quality: ImageGenPartialImageEventQuality,
495    /// The size of the requested image.
496    pub size: ImageGenPartialImageEventSize,
497    /// The type of the event. Always `image_generation.partial_image`.
498    #[serde(rename = "type")]
499    pub type_: String,
500}
501
502pub type ImageGenStreamEvent = serde_json::Value;
503
504#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
505#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
506#[non_exhaustive]
507pub enum ImageGenerateParamsBaseBackground {
508    #[serde(rename = "transparent")]
509    Transparent,
510    #[serde(rename = "opaque")]
511    Opaque,
512    #[serde(rename = "auto")]
513    Auto,
514}
515
516#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
517#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
518#[non_exhaustive]
519pub enum ImageGenerateParamsBaseModeration {
520    #[serde(rename = "low")]
521    Low,
522    #[serde(rename = "auto")]
523    Auto,
524}
525
526#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
527#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
528#[non_exhaustive]
529pub enum ImageGenerateParamsBaseOutputFormat {
530    #[serde(rename = "png")]
531    Png,
532    #[serde(rename = "jpeg")]
533    Jpeg,
534    #[serde(rename = "webp")]
535    Webp,
536}
537
538#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
539#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
540#[non_exhaustive]
541pub enum ImageGenerateParamsBaseQuality {
542    #[serde(rename = "standard")]
543    Standard,
544    #[serde(rename = "hd")]
545    Hd,
546    #[serde(rename = "low")]
547    Low,
548    #[serde(rename = "medium")]
549    Medium,
550    #[serde(rename = "high")]
551    High,
552    #[serde(rename = "auto")]
553    Auto,
554}
555
556#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
557#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
558#[non_exhaustive]
559pub enum ImageGenerateParamsBaseResponseFormat {
560    #[serde(rename = "url")]
561    Url,
562    #[serde(rename = "b64_json")]
563    B64Json,
564}
565
566#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
567#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
568#[non_exhaustive]
569pub enum ImageGenerateParamsBaseSize {
570    #[serde(rename = "auto")]
571    Auto,
572    #[serde(rename = "1024x1024")]
573    V1024x1024,
574    #[serde(rename = "1536x1024")]
575    V1536x1024,
576    #[serde(rename = "1024x1536")]
577    V1024x1536,
578    #[serde(rename = "256x256")]
579    V256x256,
580    #[serde(rename = "512x512")]
581    V512x512,
582    #[serde(rename = "1792x1024")]
583    V1792x1024,
584    #[serde(rename = "1024x1792")]
585    V1024x1792,
586}
587
588#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
589#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
590#[non_exhaustive]
591pub enum ImageGenerateParamsBaseStyle {
592    #[serde(rename = "vivid")]
593    Vivid,
594    #[serde(rename = "natural")]
595    Natural,
596}
597
598#[derive(Debug, Clone, Serialize, Deserialize)]
599#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
600pub struct ImageGenerateParamsBase {
601    /// A text description of the desired image(s).
602    pub prompt: String,
603    /// Allows to set transparency for the background of the generated image(s). This
604    #[serde(skip_serializing_if = "Option::is_none", default)]
605    pub background: Option<ImageGenerateParamsBaseBackground>,
606    /// The model to use for image generation.
607    #[serde(skip_serializing_if = "Option::is_none", default)]
608    pub model: Option<String>,
609    /// Control the content-moderation level for images generated by the GPT image
610    #[serde(skip_serializing_if = "Option::is_none", default)]
611    pub moderation: Option<ImageGenerateParamsBaseModeration>,
612    /// The number of images to generate.
613    #[serde(skip_serializing_if = "Option::is_none", default)]
614    pub n: Option<i64>,
615    /// The compression level (0-100%) for the generated images.
616    #[serde(skip_serializing_if = "Option::is_none", default)]
617    pub output_compression: Option<i64>,
618    /// The format in which the generated images are returned.
619    #[serde(skip_serializing_if = "Option::is_none", default)]
620    pub output_format: Option<ImageGenerateParamsBaseOutputFormat>,
621    /// The number of partial images to generate.
622    #[serde(skip_serializing_if = "Option::is_none", default)]
623    pub partial_images: Option<i64>,
624    /// The quality of the image that will be generated.
625    #[serde(skip_serializing_if = "Option::is_none", default)]
626    pub quality: Option<ImageGenerateParamsBaseQuality>,
627    /// The format in which generated images with `dall-e-2` and `dall-e-3` are
628    #[serde(skip_serializing_if = "Option::is_none", default)]
629    pub response_format: Option<ImageGenerateParamsBaseResponseFormat>,
630    /// The size of the generated images.
631    #[serde(skip_serializing_if = "Option::is_none", default)]
632    pub size: Option<ImageGenerateParamsBaseSize>,
633    /// The style of the generated images.
634    #[serde(skip_serializing_if = "Option::is_none", default)]
635    pub style: Option<ImageGenerateParamsBaseStyle>,
636    /// A unique identifier representing your end-user, which can help OpenAI to monitor
637    #[serde(skip_serializing_if = "Option::is_none", default)]
638    pub user: Option<String>,
639}
640
641pub type ImageGenerateParams = serde_json::Value;
642
643#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
644#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
645#[non_exhaustive]
646pub enum ImageModel {
647    #[serde(rename = "gpt-image-1.5")]
648    GptImage15,
649    #[serde(rename = "dall-e-2")]
650    DallE2,
651    #[serde(rename = "dall-e-3")]
652    DallE3,
653    #[serde(rename = "gpt-image-1")]
654    GptImage1,
655    #[serde(rename = "gpt-image-1-mini")]
656    GptImage1Mini,
657}
658
659/// The output token details for the image generation.
660#[derive(Debug, Clone, Serialize, Deserialize)]
661#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
662pub struct UsageOutputTokensDetails {
663    /// The number of image output tokens generated by the model.
664    pub image_tokens: i64,
665    /// The number of text output tokens generated by the model.
666    pub text_tokens: i64,
667}
668
669#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
670#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
671#[non_exhaustive]
672pub enum ImagesResponseBackground {
673    #[serde(rename = "transparent")]
674    Transparent,
675    #[serde(rename = "opaque")]
676    Opaque,
677}
678
679#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
680#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
681#[non_exhaustive]
682pub enum ImagesResponseOutputFormat {
683    #[serde(rename = "png")]
684    Png,
685    #[serde(rename = "webp")]
686    Webp,
687    #[serde(rename = "jpeg")]
688    Jpeg,
689}
690
691#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
692#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
693#[non_exhaustive]
694pub enum ImagesResponseQuality {
695    #[serde(rename = "low")]
696    Low,
697    #[serde(rename = "medium")]
698    Medium,
699    #[serde(rename = "high")]
700    High,
701}
702
703#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
704#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
705#[non_exhaustive]
706pub enum ImagesResponseSize {
707    #[serde(rename = "1024x1024")]
708    V1024x1024,
709    #[serde(rename = "1024x1536")]
710    V1024x1536,
711    #[serde(rename = "1536x1024")]
712    V1536x1024,
713}