Skip to main content

gproxy_protocol/openai/video/
response.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::openai::common::Rest;
5
6use super::{
7    VideoDeletedObjectType, VideoListObjectType, VideoModelId, VideoObjectType, VideoSize,
8    VideoStatus,
9};
10
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
12#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
13pub struct Video {
14    pub id: String,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub completed_at: Option<u64>,
17    pub created_at: u64,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub error: Option<VideoError>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub expires_at: Option<u64>,
22    pub model: VideoModelId,
23    pub object: VideoObjectType,
24    pub progress: u32,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub prompt: Option<String>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub remixed_from_video_id: Option<String>,
29    pub seconds: VideoSecondsValue,
30    pub size: VideoSize,
31    pub status: VideoStatus,
32    #[serde(default, flatten)]
33    pub rest: Rest,
34}
35
36#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
37#[serde(untagged)]
38pub enum VideoSecondsValue {
39    String(String),
40    Raw(Value),
41}
42
43#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
44#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
45pub struct VideoError {
46    pub code: String,
47    pub message: String,
48    #[serde(default, flatten)]
49    pub rest: Rest,
50}
51
52#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
53#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
54pub struct VideoListResponse {
55    pub data: Vec<Video>,
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub object: Option<VideoListObjectType>,
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub has_more: Option<bool>,
60    #[serde(skip_serializing_if = "Option::is_none")]
61    pub last_id: Option<String>,
62    #[serde(default, flatten)]
63    pub rest: Rest,
64}
65
66#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
67#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
68pub struct VideoDeleteResponse {
69    pub id: String,
70    pub deleted: bool,
71    pub object: VideoDeletedObjectType,
72    #[serde(default, flatten)]
73    pub rest: Rest,
74}
75
76#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
77#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
78pub struct VideoCharacter {
79    pub id: String,
80    pub created_at: u64,
81    pub name: String,
82    #[serde(default, flatten)]
83    pub rest: Rest,
84}
85
86/// Binary bytes returned by the video content endpoint.
87pub type VideoContent = Vec<u8>;