use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct CreateBatchRequest {
pub input_file_id: String,
pub endpoint: String,
pub completion_window: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum BatchStatus {
Validating,
Failed,
InProgress,
Finalizing,
Completed,
Expired,
Cancelling,
Cancelled,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BatchObject {
pub id: String,
pub object: String,
pub endpoint: String,
pub input_file_id: String,
pub completion_window: String,
pub status: BatchStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub output_file_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error_file_id: Option<String>,
pub created_at: u64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completed_at: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failed_at: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expired_at: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub request_counts: Option<BatchRequestCounts>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct BatchRequestCounts {
pub total: u64,
pub completed: u64,
pub failed: u64,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BatchListResponse {
pub object: String,
pub data: Vec<BatchObject>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_more: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub first_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_id: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct BatchListQuery {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<u32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub after: Option<String>,
}