async_openai/admin/
project_hosted_tool_permissions.rs1use crate::{
2 config::Config,
3 error::OpenAIError,
4 types::admin::projects::{
5 ProjectHostedToolPermissions, ProjectHostedToolPermissionsUpdateRequest,
6 },
7 Client, RequestOptions,
8};
9
10pub struct ProjectHostedToolPermission<'c, C: Config> {
11 client: &'c Client<C>,
12 pub(crate) request_options: RequestOptions,
13 pub project_id: String,
14}
15
16impl<'c, C: Config> ProjectHostedToolPermission<'c, C> {
17 pub fn new(client: &'c Client<C>, project_id: &str) -> Self {
18 Self {
19 client,
20 request_options: RequestOptions::new(),
21 project_id: project_id.into(),
22 }
23 }
24
25 #[crate::byot(R = serde::de::DeserializeOwned)]
27 pub async fn retrieve(&self) -> Result<ProjectHostedToolPermissions, OpenAIError> {
28 self.client
29 .get(
30 &format!(
31 "/organization/projects/{project_id}/hosted_tool_permissions",
32 project_id = self.project_id
33 ),
34 &self.request_options,
35 )
36 .await
37 }
38
39 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
41 pub async fn update(
42 &self,
43 request: ProjectHostedToolPermissionsUpdateRequest,
44 ) -> Result<ProjectHostedToolPermissions, OpenAIError> {
45 self.client
46 .post(
47 &format!(
48 "/organization/projects/{project_id}/hosted_tool_permissions",
49 project_id = self.project_id
50 ),
51 request,
52 &self.request_options,
53 )
54 .await
55 }
56}