Skip to main content

dfns_sdk_rust/agreements/
mod.rs

1// Code generated by rust-sdk-generator. DO NOT EDIT.
2
3pub mod delegated;
4pub mod types;
5
6#[allow(unused_imports)]
7use types::*;
8
9/// Client for agreements operations.
10#[derive(Clone)]
11pub struct AgreementsClient {
12    client: crate::client::Client,
13}
14
15impl AgreementsClient {
16    pub fn new(client: crate::client::Client) -> Self {
17        AgreementsClient { client }
18    }
19
20    /// Get the latest unaccepted agreement for a specific agreement type
21    pub async fn get_latest_unaccepted_agreement(
22        &self,
23        query: Option<GetLatestUnacceptedAgreementQuery>,
24    ) -> Result<GetLatestUnacceptedAgreementResponse, crate::error::Error> {
25        let mut path = String::from("/agreements/latest-unaccepted");
26        if let Some(query) = &query {
27            let mut q: Vec<String> = Vec::new();
28            q.push(format!(
29                "agreementType={}",
30                urlencoding::encode(&query.agreement_type.to_string())
31            ));
32            if !q.is_empty() {
33                path.push('?');
34                path.push_str(&q.join("&"));
35            }
36        }
37        self.client
38            .request::<GetLatestUnacceptedAgreementResponse>(
39                reqwest::Method::GET,
40                &path,
41                None,
42                false,
43            )
44            .await
45    }
46
47    /// Record the acceptance of a specific agreement by its ID
48    pub async fn record_agreement_acceptance(
49        &self,
50        agreement_id: String,
51    ) -> Result<RecordAgreementAcceptanceResponse, crate::error::Error> {
52        let path = format!("/agreements/{}/accept", urlencoding::encode(&agreement_id));
53        self.client
54            .request::<RecordAgreementAcceptanceResponse>(reqwest::Method::POST, &path, None, true)
55            .await
56    }
57}