1#![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 pub image: serde_json::Value,
36 #[serde(skip_serializing_if = "Option::is_none", default)]
38 pub model: Option<String>,
39 #[serde(skip_serializing_if = "Option::is_none", default)]
41 pub n: Option<i64>,
42 #[serde(skip_serializing_if = "Option::is_none", default)]
44 pub response_format: Option<ImageCreateVariationParamsResponseFormat>,
45 #[serde(skip_serializing_if = "Option::is_none", default)]
47 pub size: Option<ImageCreateVariationParamsSize>,
48 #[serde(skip_serializing_if = "Option::is_none", default)]
50 pub user: Option<String>,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
55#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
56pub struct UsageInputTokensDetails {
57 pub image_tokens: i64,
59 pub text_tokens: i64,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
65#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
66pub struct Usage {
67 pub input_tokens: i64,
69 pub input_tokens_details: UsageInputTokensDetails,
71 pub output_tokens: i64,
73 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#[derive(Debug, Clone, Serialize, Deserialize)]
131#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
132pub struct ImageEditCompletedEvent {
133 pub b64_json: String,
135 pub background: ImageEditCompletedEventBackground,
137 pub created_at: i64,
139 pub output_format: ImageEditCompletedEventOutputFormat,
141 pub quality: ImageEditCompletedEventQuality,
143 pub size: ImageEditCompletedEventSize,
145 #[serde(rename = "type")]
147 pub type_: String,
148 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 pub image: serde_json::Value,
235 pub prompt: String,
237 #[serde(skip_serializing_if = "Option::is_none", default)]
239 pub background: Option<ImageEditParamsBaseBackground>,
240 #[serde(skip_serializing_if = "Option::is_none", default)]
242 pub input_fidelity: Option<ImageEditParamsBaseInputFidelity>,
243 #[serde(skip_serializing_if = "Option::is_none", default)]
245 pub mask: Option<serde_json::Value>,
246 #[serde(skip_serializing_if = "Option::is_none", default)]
248 pub model: Option<String>,
249 #[serde(skip_serializing_if = "Option::is_none", default)]
251 pub n: Option<i64>,
252 #[serde(skip_serializing_if = "Option::is_none", default)]
254 pub output_compression: Option<i64>,
255 #[serde(skip_serializing_if = "Option::is_none", default)]
257 pub output_format: Option<ImageEditParamsBaseOutputFormat>,
258 #[serde(skip_serializing_if = "Option::is_none", default)]
260 pub partial_images: Option<i64>,
261 #[serde(skip_serializing_if = "Option::is_none", default)]
263 pub quality: Option<ImageEditParamsBaseQuality>,
264 #[serde(skip_serializing_if = "Option::is_none", default)]
266 pub response_format: Option<ImageEditParamsBaseResponseFormat>,
267 #[serde(skip_serializing_if = "Option::is_none", default)]
269 pub size: Option<ImageEditParamsBaseSize>,
270 #[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#[derive(Debug, Clone, Serialize, Deserialize)]
329#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
330pub struct ImageEditPartialImageEvent {
331 pub b64_json: String,
333 pub background: ImageEditPartialImageEventBackground,
335 pub created_at: i64,
337 pub output_format: ImageEditPartialImageEventOutputFormat,
339 pub partial_image_index: i64,
341 pub quality: ImageEditPartialImageEventQuality,
343 pub size: ImageEditPartialImageEventSize,
345 #[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#[derive(Debug, Clone, Serialize, Deserialize)]
406#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
407pub struct ImageGenCompletedEvent {
408 pub b64_json: String,
410 pub background: ImageGenCompletedEventBackground,
412 pub created_at: i64,
414 pub output_format: ImageGenCompletedEventOutputFormat,
416 pub quality: ImageGenCompletedEventQuality,
418 pub size: ImageGenCompletedEventSize,
420 #[serde(rename = "type")]
422 pub type_: String,
423 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#[derive(Debug, Clone, Serialize, Deserialize)]
481#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
482pub struct ImageGenPartialImageEvent {
483 pub b64_json: String,
485 pub background: ImageGenPartialImageEventBackground,
487 pub created_at: i64,
489 pub output_format: ImageGenPartialImageEventOutputFormat,
491 pub partial_image_index: i64,
493 pub quality: ImageGenPartialImageEventQuality,
495 pub size: ImageGenPartialImageEventSize,
497 #[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 pub prompt: String,
603 #[serde(skip_serializing_if = "Option::is_none", default)]
605 pub background: Option<ImageGenerateParamsBaseBackground>,
606 #[serde(skip_serializing_if = "Option::is_none", default)]
608 pub model: Option<String>,
609 #[serde(skip_serializing_if = "Option::is_none", default)]
611 pub moderation: Option<ImageGenerateParamsBaseModeration>,
612 #[serde(skip_serializing_if = "Option::is_none", default)]
614 pub n: Option<i64>,
615 #[serde(skip_serializing_if = "Option::is_none", default)]
617 pub output_compression: Option<i64>,
618 #[serde(skip_serializing_if = "Option::is_none", default)]
620 pub output_format: Option<ImageGenerateParamsBaseOutputFormat>,
621 #[serde(skip_serializing_if = "Option::is_none", default)]
623 pub partial_images: Option<i64>,
624 #[serde(skip_serializing_if = "Option::is_none", default)]
626 pub quality: Option<ImageGenerateParamsBaseQuality>,
627 #[serde(skip_serializing_if = "Option::is_none", default)]
629 pub response_format: Option<ImageGenerateParamsBaseResponseFormat>,
630 #[serde(skip_serializing_if = "Option::is_none", default)]
632 pub size: Option<ImageGenerateParamsBaseSize>,
633 #[serde(skip_serializing_if = "Option::is_none", default)]
635 pub style: Option<ImageGenerateParamsBaseStyle>,
636 #[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#[derive(Debug, Clone, Serialize, Deserialize)]
661#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
662pub struct UsageOutputTokensDetails {
663 pub image_tokens: i64,
665 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}