use crate::v1::api::Client;
use crate::v1::error::APIError;
use crate::v1::helpers::format_response;
use crate::v1::resources::shared::ListResponse;
use crate::v1::resources::usage::{
AudioSpeechUsage, AudioTranscriptionUsage, CodeInterpreterSessionUsage, CompletionUsage,
CostUsage, EmbeddingUsage, ImageUsage, ModerationUsage, UsageBucket, UsageParameters,
VectorStoreUsage,
};
pub struct Usage<'a> {
pub client: &'a Client,
}
impl Client {
pub fn usage(&self) -> Usage<'_> {
Usage { client: self }
}
}
impl Usage<'_> {
pub async fn completions(
&self,
parameters: UsageParameters,
) -> Result<ListResponse<UsageBucket<CompletionUsage>>, APIError> {
let response = self
.client
.get_with_query("/organization/usage/completions", ¶meters)
.await?;
let response: ListResponse<UsageBucket<CompletionUsage>> = format_response(response)?;
Ok(response)
}
pub async fn embeddings(
&self,
parameters: UsageParameters,
) -> Result<ListResponse<UsageBucket<EmbeddingUsage>>, APIError> {
let response = self
.client
.get_with_query("/organization/usage/embeddings", ¶meters)
.await?;
let response: ListResponse<UsageBucket<EmbeddingUsage>> = format_response(response)?;
Ok(response)
}
pub async fn moderations(
&self,
parameters: UsageParameters,
) -> Result<ListResponse<UsageBucket<ModerationUsage>>, APIError> {
let response = self
.client
.get_with_query("/organization/usage/moderations", ¶meters)
.await?;
let response: ListResponse<UsageBucket<ModerationUsage>> = format_response(response)?;
Ok(response)
}
pub async fn images(
&self,
parameters: UsageParameters,
) -> Result<ListResponse<UsageBucket<ImageUsage>>, APIError> {
let response = self
.client
.get_with_query("/organization/usage/images", ¶meters)
.await?;
let response: ListResponse<UsageBucket<ImageUsage>> = format_response(response)?;
Ok(response)
}
pub async fn audio_speeches(
&self,
parameters: UsageParameters,
) -> Result<ListResponse<UsageBucket<AudioSpeechUsage>>, APIError> {
let response = self
.client
.get_with_query("/organization/usage/audio_speeches", ¶meters)
.await?;
let response: ListResponse<UsageBucket<AudioSpeechUsage>> = format_response(response)?;
Ok(response)
}
pub async fn audio_transcriptions(
&self,
parameters: UsageParameters,
) -> Result<ListResponse<UsageBucket<AudioTranscriptionUsage>>, APIError> {
let response = self
.client
.get_with_query("/organization/usage/audio_transcriptions", ¶meters)
.await?;
let response: ListResponse<UsageBucket<AudioTranscriptionUsage>> =
format_response(response)?;
Ok(response)
}
pub async fn vector_stores(
&self,
parameters: UsageParameters,
) -> Result<ListResponse<UsageBucket<VectorStoreUsage>>, APIError> {
let response = self
.client
.get_with_query("/organization/usage/vector_stores", ¶meters)
.await?;
let response: ListResponse<UsageBucket<VectorStoreUsage>> = format_response(response)?;
Ok(response)
}
pub async fn code_interpreter_sessions(
&self,
parameters: UsageParameters,
) -> Result<ListResponse<UsageBucket<CodeInterpreterSessionUsage>>, APIError> {
let response = self
.client
.get_with_query("/organization/usage/code_interpreter_sessions", ¶meters)
.await?;
let response: ListResponse<UsageBucket<CodeInterpreterSessionUsage>> =
format_response(response)?;
Ok(response)
}
pub async fn costs(
&self,
parameters: UsageParameters,
) -> Result<ListResponse<UsageBucket<CostUsage>>, APIError> {
let response = self
.client
.get_with_query("/organization/costs", ¶meters)
.await?;
let response: ListResponse<UsageBucket<CostUsage>> = format_response(response)?;
Ok(response)
}
}