1use serde::Deserialize;
2use serde::Serialize;
3
4#[derive(Debug, Clone, Serialize, PartialEq)]
5pub struct ImageGenerationRequest {
6 pub prompt: String,
7 #[serde(skip_serializing_if = "Option::is_none")]
8 pub background: Option<ImageBackground>,
9 pub model: String,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub n: Option<u64>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub quality: Option<ImageQuality>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub size: Option<String>,
16}
17
18#[derive(Debug, Clone, Serialize, PartialEq)]
19pub struct ImageEditRequest {
20 pub images: Vec<ImageUrl>,
21 pub prompt: String,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub background: Option<ImageBackground>,
24 pub model: String,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub n: Option<u64>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub quality: Option<ImageQuality>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub size: Option<String>,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
34pub struct ImageUrl {
35 pub image_url: String,
36}
37
38#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
39#[serde(rename_all = "lowercase")]
40pub enum ImageBackground {
41 Transparent,
42 Opaque,
43 Auto,
44}
45
46#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
47#[serde(rename_all = "lowercase")]
48pub enum ImageQuality {
49 Low,
50 Medium,
51 High,
52 Auto,
53}
54
55#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
56pub struct ImageResponse {
57 pub created: u64,
58 pub data: Vec<ImageData>,
59 #[serde(default)]
60 pub background: Option<ImageBackground>,
61 #[serde(default)]
62 pub quality: Option<ImageQuality>,
63 #[serde(default)]
64 pub size: Option<String>,
65}
66
67#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
68pub struct ImageData {
69 pub b64_json: String,
70}