1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
4#[serde(deny_unknown_fields)]
5pub struct CreateBatchRequest {
6 pub input_file_id: String,
7 pub endpoint: String,
8 pub completion_window: String,
9 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub metadata: Option<serde_json::Value>,
11}
12
13#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
14#[serde(rename_all = "snake_case")]
15pub enum BatchStatus {
16 #[default]
17 Validating,
18 Failed,
19 InProgress,
20 Finalizing,
21 Completed,
22 Expired,
23 Cancelling,
24 Cancelled,
25}
26
27#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
28pub struct BatchObject {
29 pub id: String,
30 pub object: String,
31 pub endpoint: String,
32 pub input_file_id: String,
33 pub completion_window: String,
34 pub status: BatchStatus,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub output_file_id: Option<String>,
37 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub error_file_id: Option<String>,
39 pub created_at: u64,
40 #[serde(default, skip_serializing_if = "Option::is_none")]
41 pub completed_at: Option<u64>,
42 #[serde(default, skip_serializing_if = "Option::is_none")]
43 pub failed_at: Option<u64>,
44 #[serde(default, skip_serializing_if = "Option::is_none")]
45 pub expired_at: Option<u64>,
46 #[serde(default, skip_serializing_if = "Option::is_none")]
47 pub request_counts: Option<BatchRequestCounts>,
48 #[serde(default, skip_serializing_if = "Option::is_none")]
49 pub metadata: Option<serde_json::Value>,
50}
51
52#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
53pub struct BatchRequestCounts {
54 pub total: u64,
55 pub completed: u64,
56 pub failed: u64,
57}
58
59#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
60pub struct BatchListResponse {
61 pub object: String,
62 pub data: Vec<BatchObject>,
63 #[serde(default, skip_serializing_if = "Option::is_none")]
64 pub has_more: Option<bool>,
65 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub first_id: Option<String>,
67 #[serde(default, skip_serializing_if = "Option::is_none")]
68 pub last_id: Option<String>,
69}
70
71#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
72#[serde(deny_unknown_fields)]
73pub struct BatchListQuery {
74 #[serde(default, skip_serializing_if = "Option::is_none")]
75 pub limit: Option<u32>,
76 #[serde(default, skip_serializing_if = "Option::is_none")]
77 pub after: Option<String>,
78}