1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct PaginatedResponse<T> {
6 pub data: Vec<T>,
7 pub links: PaginationLinks,
8 pub meta: PaginationMeta,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct PaginationLinks {
14 pub first: Option<String>,
15 pub last: Option<String>,
16 pub prev: Option<String>,
17 pub next: Option<String>,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct PaginationMeta {
23 pub current_page: u32,
24 pub from: Option<u32>,
25 pub last_page: u32,
26 pub path: Option<String>,
27 pub per_page: u32,
28 pub to: Option<u32>,
29 pub total: u32,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct ResourceResponse<T> {
35 pub data: T,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct Gateway {
41 #[serde(rename = "type")]
42 pub resource_type: String,
43 #[serde(default)]
44 pub id: Option<String>,
45 pub code: String,
46 pub name: String,
47 pub team_id: String,
48 pub enabled: Option<bool>,
49 #[serde(default)]
50 pub pipelines_path: Option<String>,
51 #[serde(default)]
52 pub transforms_path: Option<String>,
53 #[serde(default)]
54 pub jwks_cache_duration_hours: Option<u32>,
55 #[serde(default)]
56 pub management_enabled: Option<bool>,
57 #[serde(default)]
58 pub management_base_path: Option<String>,
59 #[serde(default)]
60 pub management_network_id: Option<String>,
61 #[serde(default)]
62 pub dns: Option<Vec<String>>,
63 #[serde(default)]
64 pub settings: Option<serde_json::Value>,
65 #[serde(default)]
66 pub created_at: Option<String>,
67 #[serde(default)]
68 pub updated_at: Option<String>,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
73pub struct AuthorizedByInfo {
74 pub id: String,
75 pub name: String,
76 pub email: String,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct Service {
82 #[serde(rename = "type")]
83 pub resource_type: String,
84 #[serde(default)]
85 pub id: Option<String>,
86 pub code: String,
87 pub name: String,
88 pub team_id: String,
89 pub gateway_id: String,
90 #[serde(default)]
91 pub description: Option<String>,
92 #[serde(default)]
93 pub created_at: Option<String>,
94 #[serde(default)]
95 pub updated_at: Option<String>,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct Endpoint {
101 #[serde(rename = "type")]
102 pub resource_type: String,
103 #[serde(default)]
104 pub id: Option<String>,
105 pub code: String,
106 pub name: String,
107 pub team_id: String,
108 pub gateway_id: Option<String>,
109 #[serde(default)]
110 pub service_id: Option<String>,
111 #[serde(default)]
112 pub path: Option<String>,
113 #[serde(default)]
114 pub methods: Option<Vec<String>>,
115 #[serde(default)]
116 pub description: Option<String>,
117 #[serde(default)]
118 pub created_at: Option<String>,
119 #[serde(default)]
120 pub updated_at: Option<String>,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct Backend {
126 #[serde(rename = "type")]
127 pub resource_type: String,
128 #[serde(default)]
129 pub id: Option<String>,
130 pub code: String,
131 pub name: String,
132 pub team_id: String,
133 pub gateway_id: Option<String>,
134 #[serde(default)]
135 pub service_id: Option<String>,
136 #[serde(default)]
137 pub url: Option<String>,
138 #[serde(default)]
139 pub timeout_seconds: Option<u32>,
140 #[serde(default)]
141 pub created_at: Option<String>,
142 #[serde(default)]
143 pub updated_at: Option<String>,
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize)]
148pub struct Pipeline {
149 #[serde(rename = "type")]
150 pub resource_type: String,
151 #[serde(default)]
152 pub id: Option<String>,
153 pub code: String,
154 pub name: String,
155 pub description: String,
156 pub team_id: String,
157 pub gateway_id: Option<String>,
158 #[serde(default)]
159 pub networks: Option<Vec<String>>,
160 #[serde(default)]
161 pub endpoints: Option<serde_json::Value>,
162 #[serde(default)]
163 pub backends: Option<serde_json::Value>,
164 #[serde(default)]
165 pub middleware: Option<serde_json::Value>,
166 #[serde(default)]
167 pub created_at: Option<String>,
168 #[serde(default)]
169 pub updated_at: Option<String>,
170}
171
172#[derive(Debug, Clone, Serialize, Deserialize)]
174pub struct Middleware {
175 #[serde(rename = "type")]
176 pub resource_type: String,
177 #[serde(default)]
178 pub id: Option<String>,
179 pub code: String,
180 pub name: String,
181 pub team_id: String,
182 pub middleware_type: String,
183 #[serde(default)]
184 pub options: Option<serde_json::Value>,
185 #[serde(default)]
186 pub created_at: Option<String>,
187 #[serde(default)]
188 pub updated_at: Option<String>,
189}
190
191#[derive(Debug, Clone, Serialize, Deserialize)]
193pub struct Transform {
194 #[serde(rename = "type")]
195 pub resource_type: String,
196 #[serde(default)]
197 pub id: Option<String>,
198 pub code: String,
199 pub name: String,
200 pub team_id: String,
201 pub gateway_id: String,
202 #[serde(default)]
203 pub options: Option<TransformOptions>,
204 #[serde(default)]
205 pub created_at: Option<String>,
206 #[serde(default)]
207 pub updated_at: Option<String>,
208}
209
210#[derive(Debug, Clone, Serialize, Deserialize)]
212pub struct TransformOptions {
213 pub instructions: Option<String>,
214}
215
216#[derive(Debug, Clone, Serialize, Deserialize)]
218pub struct Policy {
219 #[serde(rename = "type")]
220 pub resource_type: String,
221 #[serde(default)]
222 pub id: Option<String>,
223 pub code: String,
224 pub name: String,
225 pub enabled: u32,
226 pub team_id: String,
227 pub gateway_id: String,
228 #[serde(default)]
229 pub rules: Option<serde_json::Value>,
230 #[serde(default)]
231 pub created_at: Option<String>,
232 #[serde(default)]
233 pub updated_at: Option<String>,
234}
235
236#[derive(Debug, Clone, Serialize, Deserialize)]
238pub struct Network {
239 #[serde(rename = "type")]
240 pub resource_type: String,
241 #[serde(default)]
242 pub id: Option<String>,
243 pub code: String,
244 pub name: String,
245 pub team_id: String,
246 pub gateway_id: Option<String>,
247 pub enable_wireguard: bool,
248 #[serde(default)]
249 pub interface: Option<String>,
250 #[serde(default)]
251 pub http: Option<HttpConfig>,
252 #[serde(default)]
253 pub created_at: Option<String>,
254 #[serde(default)]
255 pub updated_at: Option<String>,
256}
257
258#[derive(Debug, Clone, Serialize, Deserialize)]
260pub struct HttpConfig {
261 pub bind_address: Option<String>,
262 pub bind_port: Option<u16>,
263}
264
265#[derive(Debug, Clone, Serialize, Deserialize)]
267pub struct Authentication {
268 #[serde(rename = "type")]
269 pub resource_type: String,
270 #[serde(default)]
271 pub id: Option<String>,
272 pub code: Option<String>,
273 pub name: String,
274 pub team_id: Option<String>,
275 pub gateway_id: Option<String>,
276 #[serde(default)]
277 pub options: Option<String>,
278 #[serde(default)]
279 pub created_at: Option<String>,
280 #[serde(default)]
281 pub updated_at: Option<String>,
282}
283
284#[derive(Debug, Clone, Serialize, Deserialize)]
286pub struct GatewayConfiguration {
287 pub gateway: Gateway,
288 #[serde(default)]
289 pub services: Vec<Service>,
290 #[serde(default)]
291 pub endpoints: Vec<Endpoint>,
292 #[serde(default)]
293 pub backends: Vec<Backend>,
294 #[serde(default)]
295 pub pipelines: Vec<Pipeline>,
296 #[serde(default)]
297 pub middlewares: Vec<Middleware>,
298 #[serde(default)]
299 pub transforms: Vec<Transform>,
300 #[serde(default)]
301 pub policies: Vec<Policy>,
302 #[serde(default)]
303 pub networks: Vec<Network>,
304}
305
306#[derive(Debug, Clone, Serialize, Deserialize)]
308pub struct Change {
309 pub id: String,
310 #[serde(rename = "type")]
311 pub resource_type: String,
312 pub gateway_id: String,
313 pub status: String,
314 pub operation: String,
315 #[serde(rename = "resourceType")]
316 pub change_resource_type: String,
317 pub resource_id: String,
318 pub payload: serde_json::Value,
319 #[serde(default)]
320 pub error: Option<String>,
321 pub created_at: String,
322 pub updated_at: String,
323}
324
325#[derive(Debug, Clone, Serialize, Deserialize)]
327pub struct BaseUrlResponse {
328 pub base_url: String,
329}
330
331#[derive(Debug, Clone, Serialize, Deserialize)]
333pub struct AcknowledgeChangesRequest {
334 pub change_ids: Vec<String>,
335}
336
337#[derive(Debug, Clone, Serialize, Deserialize)]
339pub struct ChangeFailedRequest {
340 pub error: String,
341 #[serde(skip_serializing_if = "Option::is_none")]
342 pub details: Option<Vec<String>>,
343}