async_openai/
project_certificates.rs

1use serde::Serialize;
2
3use crate::{
4    config::Config,
5    error::OpenAIError,
6    types::admin::certificates::{ListCertificatesResponse, ToggleCertificatesRequest},
7    Client,
8};
9
10/// Manage certificates for a given project. Supports listing, activating, and deactivating certificates.
11pub struct ProjectCertificates<'c, C: Config> {
12    client: &'c Client<C>,
13    pub project_id: String,
14}
15
16impl<'c, C: Config> ProjectCertificates<'c, C> {
17    pub fn new(client: &'c Client<C>, project_id: &str) -> Self {
18        Self {
19            client,
20            project_id: project_id.into(),
21        }
22    }
23
24    /// List all certificates for this project.
25    pub async fn list<Q>(&self, query: &Q) -> Result<ListCertificatesResponse, OpenAIError>
26    where
27        Q: Serialize + ?Sized,
28    {
29        self.client
30            .get_with_query(
31                format!("/organization/projects/{}/certificates", self.project_id).as_str(),
32                query,
33            )
34            .await
35    }
36
37    /// Activate certificates for this project.
38    /// You can atomically and idempotently activate up to 10 certificates at a time.
39    pub async fn activate(
40        &self,
41        request: ToggleCertificatesRequest,
42    ) -> Result<ListCertificatesResponse, OpenAIError> {
43        self.client
44            .post(
45                format!(
46                    "/organization/projects/{}/certificates/activate",
47                    self.project_id
48                )
49                .as_str(),
50                request,
51            )
52            .await
53    }
54
55    /// Deactivate certificates for this project.
56    /// You can atomically and idempotently deactivate up to 10 certificates at a time.
57    pub async fn deactivate(
58        &self,
59        request: ToggleCertificatesRequest,
60    ) -> Result<ListCertificatesResponse, OpenAIError> {
61        self.client
62            .post(
63                format!(
64                    "/organization/projects/{}/certificates/deactivate",
65                    self.project_id
66                )
67                .as_str(),
68                request,
69            )
70            .await
71    }
72}