Skip to main content

gproxy_protocol/openai/images/
response.rs

1use 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}