cloudflare/endpoints/argo_tunnel/
list_tunnels.rs1use chrono::{DateTime, Utc};
2use serde::Serialize;
3
4use super::Tunnel;
5use crate::framework::endpoint::{serialize_query, EndpointSpec, Method};
6use crate::framework::response::ApiSuccess;
7
8#[derive(Debug)]
11pub struct ListTunnels<'a> {
12 pub account_identifier: &'a str,
13 pub params: Params,
14}
15
16impl EndpointSpec for ListTunnels<'_> {
17 type JsonResponse = Vec<Tunnel>;
18 type ResponseType = ApiSuccess<Self::JsonResponse>;
19
20 fn method(&self) -> Method {
21 Method::GET
22 }
23 fn path(&self) -> String {
24 format!("accounts/{}/tunnels", self.account_identifier)
25 }
26 #[inline]
27 fn query(&self) -> Option<String> {
28 serialize_query(&self.params)
29 }
30}
31
32#[serde_with::skip_serializing_none]
34#[derive(Serialize, Clone, Debug, Default)]
35pub struct Params {
36 pub name: Option<String>,
37 pub uuid: Option<String>,
38 pub is_deleted: Option<bool>,
39 pub existed_at: Option<DateTime<Utc>>,
40 pub name_prefix: Option<String>,
41 pub was_inactive_at: Option<DateTime<Utc>>,
42 pub exclude_prefix: Option<String>,
43 #[serde(flatten)]
44 pub pagination_params: Option<PaginationParams>,
45}
46
47#[derive(Serialize, Clone, Debug)]
48pub struct PaginationParams {
49 pub page: u64,
50 pub per_page: u64,
51}