async_openai/
usage.rs

1use serde::Serialize;
2
3use crate::{config::Config, error::OpenAIError, types::admin::usage::UsageResponse, Client};
4
5/// Manage organization usage data. Get usage details for various API endpoints including
6/// completions, embeddings, images, audio, moderations, vector stores, and code interpreter sessions.
7pub struct Usage<'c, C: Config> {
8    client: &'c Client<C>,
9}
10
11impl<'c, C: Config> Usage<'c, C> {
12    pub fn new(client: &'c Client<C>) -> Self {
13        Self { client }
14    }
15
16    /// Get audio speeches usage details for the organization.
17    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
18    pub async fn audio_speeches<Q>(&self, query: &Q) -> Result<UsageResponse, OpenAIError>
19    where
20        Q: Serialize + ?Sized,
21    {
22        self.client
23            .get_with_query("/organization/usage/audio_speeches", &query)
24            .await
25    }
26
27    /// Get audio transcriptions usage details for the organization.
28    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
29    pub async fn audio_transcriptions<Q>(&self, query: &Q) -> Result<UsageResponse, OpenAIError>
30    where
31        Q: Serialize + ?Sized,
32    {
33        self.client
34            .get_with_query("/organization/usage/audio_transcriptions", &query)
35            .await
36    }
37
38    /// Get code interpreter sessions usage details for the organization.
39    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
40    pub async fn code_interpreter_sessions<Q>(
41        &self,
42        query: &Q,
43    ) -> Result<UsageResponse, OpenAIError>
44    where
45        Q: Serialize + ?Sized,
46    {
47        self.client
48            .get_with_query("/organization/usage/code_interpreter_sessions", &query)
49            .await
50    }
51
52    /// Get completions usage details for the organization.
53    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
54    pub async fn completions<Q>(&self, query: &Q) -> Result<UsageResponse, OpenAIError>
55    where
56        Q: Serialize + ?Sized,
57    {
58        self.client
59            .get_with_query("/organization/usage/completions", &query)
60            .await
61    }
62
63    /// Get embeddings usage details for the organization.
64    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
65    pub async fn embeddings<Q>(&self, query: &Q) -> Result<UsageResponse, OpenAIError>
66    where
67        Q: Serialize + ?Sized,
68    {
69        self.client
70            .get_with_query("/organization/usage/embeddings", &query)
71            .await
72    }
73
74    /// Get images usage details for the organization.
75    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
76    pub async fn images<Q>(&self, query: &Q) -> Result<UsageResponse, OpenAIError>
77    where
78        Q: Serialize + ?Sized,
79    {
80        self.client
81            .get_with_query("/organization/usage/images", &query)
82            .await
83    }
84
85    /// Get moderations usage details for the organization.
86    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
87    pub async fn moderations<Q>(&self, query: &Q) -> Result<UsageResponse, OpenAIError>
88    where
89        Q: Serialize + ?Sized,
90    {
91        self.client
92            .get_with_query("/organization/usage/moderations", &query)
93            .await
94    }
95
96    /// Get vector stores usage details for the organization.
97    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
98    pub async fn vector_stores<Q>(&self, query: &Q) -> Result<UsageResponse, OpenAIError>
99    where
100        Q: Serialize + ?Sized,
101    {
102        self.client
103            .get_with_query("/organization/usage/vector_stores", &query)
104            .await
105    }
106
107    /// Get costs details for the organization.
108    #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
109    pub async fn costs<Q>(&self, query: &Q) -> Result<UsageResponse, OpenAIError>
110    where
111        Q: Serialize + ?Sized,
112    {
113        self.client
114            .get_with_query("/organization/costs", &query)
115            .await
116    }
117}