use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use crate::error::OpenAIError;
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct ProjectRateLimit {
pub object: String,
pub id: String,
pub model: String,
pub max_requests_per_1_minute: i64,
pub max_tokens_per_1_minute: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_images_per_1_minute: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_audio_megabytes_per_1_minute: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_requests_per_1_day: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub batch_1_day_max_input_tokens: Option<i64>,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct ProjectRateLimitListResponse {
pub object: String,
pub data: Vec<ProjectRateLimit>,
pub first_id: Option<String>,
pub last_id: Option<String>,
pub has_more: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Builder, Default)]
#[builder(name = "ProjectRateLimitUpdateRequestArgs")]
#[builder(pattern = "mutable")]
#[builder(setter(into, strip_option), default)]
#[builder(derive(Debug))]
#[builder(build_fn(error = "OpenAIError"))]
pub struct ProjectRateLimitUpdateRequest {
pub max_requests_per_1_minute: Option<i64>,
pub max_tokens_per_1_minute: Option<i64>,
pub max_images_per_1_minute: Option<i64>,
pub max_audio_megabytes_per_1_minute: Option<i64>,
pub max_requests_per_1_day: Option<i64>,
pub batch_1_day_max_input_tokens: Option<i64>,
}