Skip to main content

async_openai/admin/
project_data_retention.rs

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