gproxy_protocol/openai/video/
request.rs1use 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}