1use serde::{Deserialize, Serialize};
4
5use crate::prelude::*;
6
7use crate::common::ImageUrl;
8
9#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
11#[serde(rename_all = "lowercase")]
12pub enum ImageQuality {
13 Low,
15 #[default]
17 Medium,
18 High,
20}
21
22#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
24pub struct GenerateImageRequest {
25 #[serde(skip_serializing_if = "Option::is_none")]
27 pub prompt: Option<String>,
28
29 #[serde(skip_serializing_if = "Option::is_none")]
31 pub model: Option<String>,
32
33 #[serde(skip_serializing_if = "Option::is_none")]
35 pub n: Option<i32>,
36
37 #[serde(skip_serializing_if = "Option::is_none")]
39 pub quality: Option<ImageQuality>,
40
41 #[serde(skip_serializing_if = "Option::is_none")]
43 pub response_format: Option<String>,
44
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub size: Option<String>,
48
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub style: Option<String>,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub user: Option<String>,
56}
57
58#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
60pub struct EditImageRequest {
61 pub prompt: String,
63
64 pub image: ImageUrl,
66
67 #[serde(skip_serializing_if = "Option::is_none")]
69 pub mask: Option<ImageUrl>,
70
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub model: Option<String>,
74
75 #[serde(skip_serializing_if = "Option::is_none")]
77 pub n: Option<i32>,
78
79 #[serde(skip_serializing_if = "Option::is_none")]
81 pub quality: Option<ImageQuality>,
82
83 #[serde(skip_serializing_if = "Option::is_none")]
85 pub response_format: Option<String>,
86
87 #[serde(skip_serializing_if = "Option::is_none")]
89 pub size: Option<String>,
90
91 #[serde(skip_serializing_if = "Option::is_none")]
93 pub style: Option<String>,
94
95 #[serde(skip_serializing_if = "Option::is_none")]
97 pub user: Option<String>,
98}
99
100#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
102pub struct GeneratedImageResponse {
103 pub data: Vec<GeneratedImage>,
105}
106
107#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
109pub struct GeneratedImage {
110 pub revised_prompt: String,
112
113 #[serde(skip_serializing_if = "Option::is_none")]
115 pub url: Option<String>,
116
117 #[serde(skip_serializing_if = "Option::is_none")]
119 pub b64_json: Option<String>,
120}