Skip to main content

gproxy_protocol/openai/video/
request.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::openai::common::Rest;
5
6use super::{
7    VideoContentVariant, VideoExtensionSeconds, VideoListOrder, VideoModelId, VideoSeconds,
8    VideoSize,
9};
10
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
12#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
13pub struct CreateVideoRequest {
14    pub prompt: String,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub input_reference: Option<VideoInputReference>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub model: Option<VideoModelId>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub seconds: Option<VideoSeconds>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub size: Option<VideoSize>,
23    #[serde(default, flatten)]
24    pub rest: Rest,
25}
26
27#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
28#[serde(untagged)]
29pub enum VideoInputReference {
30    File(String),
31    Image(VideoImageReference),
32    Raw(Value),
33}
34
35#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
36#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
37pub struct VideoImageReference {
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub file_id: Option<String>,
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub image_url: Option<String>,
42    #[serde(default, flatten)]
43    pub rest: Rest,
44}
45
46#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
47#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
48pub struct RetrieveVideoRequest {
49    pub video_id: String,
50    #[serde(default, flatten)]
51    pub rest: Rest,
52}
53
54#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
55#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
56pub struct ListVideosRequest {
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub after: Option<String>,
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub limit: Option<u32>,
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub order: Option<VideoListOrder>,
63    #[serde(default, flatten)]
64    pub rest: Rest,
65}
66
67#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
68#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
69pub struct DeleteVideoRequest {
70    pub video_id: String,
71    #[serde(default, flatten)]
72    pub rest: Rest,
73}
74
75#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
76#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
77pub struct DownloadVideoContentRequest {
78    pub video_id: String,
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub variant: Option<VideoContentVariant>,
81    #[serde(default, flatten)]
82    pub rest: Rest,
83}
84
85#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
86#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
87pub struct RemixVideoRequest {
88    pub video_id: String,
89    pub prompt: String,
90    #[serde(default, flatten)]
91    pub rest: Rest,
92}
93
94#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
95#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
96pub struct CreateVideoCharacterRequest {
97    pub name: String,
98    pub video: String,
99    #[serde(default, flatten)]
100    pub rest: Rest,
101}
102
103#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
104#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
105pub struct GetVideoCharacterRequest {
106    pub character_id: String,
107    #[serde(default, flatten)]
108    pub rest: Rest,
109}
110
111#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
112#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
113pub struct EditVideoRequest {
114    pub prompt: String,
115    pub video: VideoReference,
116    #[serde(default, flatten)]
117    pub rest: Rest,
118}
119
120#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
121#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
122pub struct ExtendVideoRequest {
123    pub prompt: String,
124    pub seconds: VideoExtensionSeconds,
125    pub video: VideoReference,
126    #[serde(default, flatten)]
127    pub rest: Rest,
128}
129
130#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
131#[serde(untagged)]
132pub enum VideoReference {
133    File(String),
134    Existing(VideoIdReference),
135    Raw(Value),
136}
137
138#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
139#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
140pub struct VideoIdReference {
141    pub id: String,
142    #[serde(default, flatten)]
143    pub rest: Rest,
144}