use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[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, Serialize, Deserialize)]
pub struct RequestCounts {
pub total: u32,
pub completed: u32,
pub failed: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BatchError {
pub code: String,
pub message: String,
pub param: Option<String>,
pub line: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BatchErrors {
pub object: Option<String>,
pub data: Vec<BatchError>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BatchObject {
pub id: String,
pub object: String,
pub endpoint: String,
pub errors: Option<BatchErrors>,
pub input_file_id: String,
pub completion_window: String,
pub status: BatchStatus,
pub output_file_id: Option<String>,
pub error_file_id: Option<String>,
pub created_at: i64,
pub in_progress_at: Option<i64>,
pub expires_at: Option<i64>,
pub finalizing_at: Option<i64>,
pub completed_at: Option<i64>,
pub failed_at: Option<i64>,
pub expired_at: Option<i64>,
pub cancelling_at: Option<i64>,
pub cancelled_at: Option<i64>,
pub request_counts: Option<RequestCounts>,
pub metadata: Option<HashMap<String, String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BatchListResponse {
pub object: String,
pub data: Vec<BatchObject>,
pub first_id: Option<String>,
pub last_id: Option<String>,
pub has_more: bool,
}