1use super::common::{
2 AgentService, AgentServiceChecksInfo, AgentServiceConnect, AgentServiceConnectProxy,
3 AgentWeights,
4};
5use crate::api::{check::common::AgentServiceCheck, Features};
6use consulrs_derive::QueryEndpoint;
7use derive_builder::Builder;
8use rustify_derive::Endpoint;
9use serde::Serialize;
10use std::{collections::HashMap, fmt::Debug};
11
12#[derive(Builder, Debug, Default, Endpoint, QueryEndpoint)]
21#[endpoint(
22 path = "agent/services",
23 response = "HashMap<String, AgentService>",
24 builder = "true"
25)]
26#[builder(setter(into, strip_option), default)]
27pub struct ListServicesRequest {
28 #[endpoint(skip)]
29 pub features: Option<Features>,
30 #[endpoint(query)]
31 pub ns: Option<String>,
32}
33
34#[derive(Builder, Debug, Default, Endpoint, QueryEndpoint)]
43#[endpoint(
44 path = "agent/service/{self.name}",
45 response = "AgentService",
46 builder = "true"
47)]
48#[builder(setter(into, strip_option), default)]
49pub struct ReadServiceRequest {
50 #[endpoint(skip)]
51 pub features: Option<Features>,
52 #[endpoint(skip)]
53 pub name: String,
54 #[endpoint(query)]
55 pub ns: Option<String>,
56}
57
58#[derive(Builder, Debug, Default, Endpoint, QueryEndpoint)]
66#[endpoint(
67 path = "agent/health/service/name/{self.name}",
68 response = "Vec<AgentServiceChecksInfo>",
69 builder = "true"
70)]
71#[builder(setter(into, strip_option), default)]
72pub struct ServiceHealthRequest {
73 #[endpoint(skip)]
74 pub features: Option<Features>,
75 #[endpoint(skip)]
76 pub name: String,
77 #[endpoint(query)]
78 pub ns: Option<String>,
79}
80
81#[derive(Builder, Debug, Default, Endpoint, QueryEndpoint)]
89#[endpoint(
90 path = "agent/health/service/id/{self.id}",
91 response = "Vec<AgentServiceChecksInfo>",
92 builder = "true"
93)]
94#[builder(setter(into, strip_option), default)]
95pub struct ServiceHealthByIdRequest {
96 #[endpoint(skip)]
97 pub features: Option<Features>,
98 #[endpoint(skip)]
99 pub id: String,
100 #[endpoint(query)]
101 pub ns: Option<String>,
102}
103
104#[derive(Builder, Clone, Debug, Default, Endpoint, QueryEndpoint, Serialize)]
113#[endpoint(path = "agent/service/register", method = "PUT", builder = "true")]
114#[serde(rename_all = "PascalCase")]
115#[builder(setter(into, strip_option), default)]
116pub struct RegisterServiceRequest {
117 #[endpoint(skip)]
118 #[serde(skip)]
119 pub features: Option<Features>,
120 pub address: Option<String>,
121 pub check: Option<AgentServiceCheck>,
122 pub checks: Option<Vec<AgentServiceCheck>>,
123 pub connect: Option<Box<AgentServiceConnect>>,
124 pub enable_tag_override: Option<bool>,
125 #[serde(rename = "ID")]
126 pub id: Option<String>,
127 pub kind: Option<String>,
128 pub meta: Option<HashMap<String, String>>,
129 pub name: Option<String>,
130 pub ns: Option<String>,
131 pub port: Option<u64>,
132 pub proxy: Option<AgentServiceConnectProxy>,
133 pub tagged_addresses: Option<HashMap<String, String>>,
134 pub tags: Option<Vec<String>>,
135 pub weights: Option<AgentWeights>,
136}
137
138#[derive(Builder, Debug, Default, Endpoint, QueryEndpoint)]
146#[endpoint(
147 path = "agent/service/deregister/{self.id}",
148 method = "PUT",
149 builder = "true"
150)]
151#[builder(setter(into, strip_option), default)]
152pub struct DeregisterServiceRequest {
153 #[endpoint(skip)]
154 pub features: Option<Features>,
155 #[endpoint(skip)]
156 pub id: String,
157 #[endpoint(query)]
158 pub ns: Option<String>,
159}
160
161#[derive(Builder, Debug, Default, Endpoint, QueryEndpoint)]
169#[endpoint(
170 path = "agent/service/maintenance/{self.id}",
171 method = "PUT",
172 builder = "true"
173)]
174#[builder(setter(into, strip_option), default)]
175pub struct EnableMaintenanceRequest {
176 #[endpoint(skip)]
177 pub features: Option<Features>,
178 #[endpoint(skip)]
179 pub id: String,
180 #[endpoint(query)]
181 pub enable: bool,
182 #[endpoint(query)]
183 pub ns: Option<String>,
184}