1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
use crate::api::*;
use crate::{ApiError, ClientConfig, HttpClient, QueryBuilder, RequestOptions};
use reqwest::Method;
pub struct CloudClient {
pub http_client: HttpClient,
}
impl CloudClient {
pub fn new(config: ClientConfig) -> Result<Self, ApiError> {
Ok(Self {
http_client: HttpClient::new(config.clone())?,
})
}
/// Register a cloud device to an entrypoint. See [Devices Quickstart](/developers/developer-guides/devices-quickstart#devices-quickstart) for a complete guide.
///
/// # Arguments
///
/// * `entry` - The paypoint's entrypoint identifier. [Learn more](/developers/api-reference/api-overview#entrypoint-vs-entry)
/// * `options` - Additional request options such as headers, timeout, etc.
///
/// # Returns
///
/// JSON response from the API
pub async fn add_device(
&self,
entry: &str,
request: &DeviceEntry,
options: Option<RequestOptions>,
) -> Result<AddDeviceResponse, ApiError> {
self.http_client
.execute_request(
Method::POST,
&format!("Cloud/register/{}", entry),
Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
None,
options,
)
.await
}
/// Retrieve the registration history for a device.
///
/// # Arguments
///
/// * `entry` - The paypoint's entrypoint identifier. [Learn more](/developers/api-reference/api-overview#entrypoint-vs-entry)
/// * `device_id` - ID of the cloud device.
/// * `options` - Additional request options such as headers, timeout, etc.
///
/// # Returns
///
/// JSON response from the API
pub async fn history_device(
&self,
entry: &str,
device_id: &str,
options: Option<RequestOptions>,
) -> Result<CloudQueryApiResponse, ApiError> {
self.http_client
.execute_request(
Method::GET,
&format!("Cloud/history/{}/{}", entry, device_id),
None,
None,
options,
)
.await
}
/// Use [List devices by paypoint](/developers/api-reference/cloud/get-list-of-devices-for-a-paypoint) instead, which supports filters, sorting, and pagination.
///
/// Get a list of cloud devices registered to an entrypoint.
///
/// # Arguments
///
/// * `entry` - The paypoint's entrypoint identifier. [Learn more](/developers/api-reference/api-overview#entrypoint-vs-entry)
/// * `force_refresh` - When `true`, the request retrieves an updated list of devices from the processor instead of returning a cached list of devices.
/// * `options` - Additional request options such as headers, timeout, etc.
///
/// # Returns
///
/// JSON response from the API
pub async fn list_device(
&self,
entry: &str,
request: &ListDeviceQueryRequest,
options: Option<RequestOptions>,
) -> Result<CloudQueryApiResponse, ApiError> {
self.http_client
.execute_request(
Method::GET,
&format!("Cloud/list/{}", entry),
None,
QueryBuilder::new()
.bool("forceRefresh", request.force_refresh.clone())
.build(),
options,
)
.await
}
/// Remove a cloud device from an entrypoint.
///
/// # Arguments
///
/// * `entry` - The paypoint's entrypoint identifier. [Learn more](/developers/api-reference/api-overview#entrypoint-vs-entry)
/// * `device_id` - ID of the cloud device.
/// * `options` - Additional request options such as headers, timeout, etc.
///
/// # Returns
///
/// JSON response from the API
pub async fn remove_device(
&self,
entry: &str,
device_id: &str,
options: Option<RequestOptions>,
) -> Result<RemoveDeviceResponse, ApiError> {
self.http_client
.execute_request(
Method::DELETE,
&format!("Cloud/register/{}/{}", entry, device_id),
None,
None,
options,
)
.await
}
}