Skip to main content

async_openai/admin/
project_hosted_tool_permissions.rs

1use 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    /// Returns hosted tool permissions for a project.
26    #[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    /// Updates hosted tool permissions for a project.
40    #[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}