async_openai/types/
video.rs1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::{error::OpenAIError, types::ImageInput};
5
6#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
7pub enum VideoSize {
8 #[default]
9 #[serde(rename = "720x1280")]
10 S720x1280,
11 #[serde(rename = "1280x720")]
12 S1280x720,
13 #[serde(rename = "1024x1792")]
14 S1024x1792,
15 #[serde(rename = "1792x1024")]
16 S1792x1024,
17}
18
19#[derive(Clone, Default, Debug, Builder, PartialEq)]
20#[builder(name = "CreateVideoRequestArgs")]
21#[builder(pattern = "mutable")]
22#[builder(setter(into, strip_option), default)]
23#[builder(derive(Debug))]
24#[builder(build_fn(error = "OpenAIError"))]
25pub struct CreateVideoRequest {
26 pub model: String,
28
29 pub prompt: String,
31
32 pub size: Option<VideoSize>,
33
34 pub seconds: Option<String>,
35
36 pub input_reference: Option<ImageInput>,
37}
38
39#[derive(Clone, Default, Debug, Builder, PartialEq, Serialize)]
40#[builder(name = "RemixVideoRequestArgs")]
41#[builder(pattern = "mutable")]
42#[builder(setter(into, strip_option), default)]
43#[builder(derive(Debug))]
44#[builder(build_fn(error = "OpenAIError"))]
45pub struct RemixVideoRequest {
46 pub prompt: String,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct VideoJobError {
51 pub code: String,
52 pub message: String,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct VideoJob {
58 pub completed_at: Option<u32>,
60
61 pub created_at: u32,
63
64 pub error: Option<VideoJobError>,
66
67 pub expires_at: Option<u32>,
69
70 pub id: String,
72
73 pub model: String,
75
76 pub object: String,
78
79 pub progress: u8,
81
82 pub remixed_from_video_id: Option<String>,
84
85 pub seconds: String,
87
88 pub size: String,
90
91 pub status: String,
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize)]
96pub struct VideoJobMetadata {
97 pub id: String,
98 pub object: String,
99 pub deleted: bool,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct ListVideosResponse {
104 pub data: Vec<VideoJob>,
105 pub object: String,
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize, Default)]
109#[serde(rename_all = "lowercase")]
110pub enum VideoVariant {
111 #[default]
112 Video,
113 Thumbnail,
114 Spritesheet,
115}