Skip to main content

async_openai/admin/
project_certificates.rs

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