1use serde::Serialize;
2
3use crate::{config::Config, error::OpenAIError, types::admin::usage::UsageResponse, Client};
4
5pub 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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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}