gproxy_protocol/openai/images/
response.rs1use serde::{Deserialize, Serialize};
2
3use crate::openai::common::{
4 ImageOutputFormat, ImageResponseBackground, ImageResponseQuality, ImageResponseSize, Rest,
5};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
8#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
9pub struct ImagesResponse {
10 pub created: u64,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub background: Option<ImageResponseBackground>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub data: Option<Vec<Image>>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub output_format: Option<ImageOutputFormat>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub quality: Option<ImageResponseQuality>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub size: Option<ImageResponseSize>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub usage: Option<ImageUsage>,
23 #[serde(default, flatten)]
24 pub rest: Rest,
25}
26
27#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
28#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
29pub struct Image {
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub b64_json: Option<String>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub revised_prompt: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub url: Option<String>,
36 #[serde(default, flatten)]
37 pub rest: Rest,
38}
39
40#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
41#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
42pub struct ImageUsage {
43 pub input_tokens: u64,
44 pub input_tokens_details: ImageTokenDetails,
45 pub output_tokens: u64,
46 pub total_tokens: u64,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub output_tokens_details: Option<ImageTokenDetails>,
49 #[serde(default, flatten)]
50 pub rest: Rest,
51}
52
53#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
54#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
55pub struct ImageTokenDetails {
56 pub image_tokens: u64,
57 pub text_tokens: u64,
58 #[serde(default, flatten)]
59 pub rest: Rest,
60}