releasy_client/
models.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
5pub struct AdminCreateCustomerRequest {
6    pub name: String,
7    #[serde(skip_serializing_if = "Option::is_none")]
8    pub plan: Option<String>,
9}
10
11#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
12pub struct AdminCreateCustomerResponse {
13    pub id: String,
14    pub name: String,
15    pub created_at: i64,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub plan: Option<String>,
18}
19
20#[derive(Clone, Debug, Serialize, Deserialize, Default, PartialEq, Eq)]
21pub struct AdminCustomerListQuery {
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub customer_id: Option<String>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub name: Option<String>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub plan: Option<String>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub limit: Option<i32>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub offset: Option<i32>,
32}
33
34#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
35pub struct AdminCustomerListResponse {
36    pub customers: Vec<AdminCustomerResponse>,
37    pub limit: i64,
38    pub offset: i64,
39}
40
41#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
42pub struct AdminCustomerResponse {
43    pub id: String,
44    pub name: String,
45    pub created_at: i64,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub plan: Option<String>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub suspended_at: Option<i64>,
50}
51
52#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
53pub struct AdminUpdateCustomerRequest {
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub name: Option<String>,
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub plan: Option<String>,
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub suspended: Option<bool>,
60}
61
62#[derive(Clone, Debug, Serialize, Deserialize, Default, PartialEq, Eq)]
63pub struct UserListQuery {
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub customer_id: Option<String>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub email: Option<String>,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub status: Option<String>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub keycloak_user_id: Option<String>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub created_from: Option<i64>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub created_to: Option<i64>,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub limit: Option<i32>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub cursor: Option<String>,
80}
81
82#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
83pub struct UserListResponse {
84    pub users: Vec<UserResponse>,
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub next_cursor: Option<String>,
87}
88
89#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
90pub struct UserResponse {
91    pub id: String,
92    pub keycloak_user_id: String,
93    pub customer_id: String,
94    pub email: String,
95    pub status: String,
96    pub groups: Vec<String>,
97    pub created_at: i64,
98    pub updated_at: i64,
99    #[serde(skip_serializing_if = "Option::is_none")]
100    pub disabled_at: Option<i64>,
101    #[serde(skip_serializing_if = "Option::is_none")]
102    pub display_name: Option<String>,
103    #[serde(skip_serializing_if = "Option::is_none")]
104    pub last_synced_at: Option<i64>,
105    #[serde(skip_serializing_if = "Option::is_none")]
106    pub metadata: Option<Value>,
107}
108
109#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
110pub struct UserCreateRequest {
111    pub email: String,
112    pub customer_id: String,
113    #[serde(skip_serializing_if = "Option::is_none")]
114    pub display_name: Option<String>,
115    #[serde(skip_serializing_if = "Option::is_none")]
116    pub groups: Option<Vec<String>>,
117    #[serde(skip_serializing_if = "Option::is_none")]
118    pub metadata: Option<Value>,
119    #[serde(skip_serializing_if = "Option::is_none")]
120    pub status: Option<String>,
121}
122
123#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
124pub struct UserPatchRequest {
125    #[serde(skip_serializing_if = "Option::is_none")]
126    pub display_name: Option<String>,
127    #[serde(skip_serializing_if = "Option::is_none")]
128    pub groups: Option<Vec<String>>,
129    #[serde(skip_serializing_if = "Option::is_none")]
130    pub metadata: Option<Value>,
131    #[serde(skip_serializing_if = "Option::is_none")]
132    pub status: Option<String>,
133}
134
135#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
136pub struct UserGroupsReplaceRequest {
137    pub groups: Vec<String>,
138}
139
140#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
141pub struct ResetCredentialsRequest {
142    #[serde(skip_serializing_if = "Option::is_none")]
143    pub send_email: Option<bool>,
144}
145
146#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
147pub struct AdminCreateKeyRequest {
148    pub customer_id: String,
149    #[serde(skip_serializing_if = "Option::is_none")]
150    pub expires_at: Option<i64>,
151    #[serde(skip_serializing_if = "Option::is_none")]
152    pub key_type: Option<String>,
153    #[serde(skip_serializing_if = "Option::is_none")]
154    pub name: Option<String>,
155    #[serde(skip_serializing_if = "Option::is_none")]
156    pub scopes: Option<Vec<String>>,
157}
158
159#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
160pub struct AdminCreateKeyResponse {
161    pub api_key_id: String,
162    pub api_key: String,
163    pub customer_id: String,
164    pub key_type: String,
165    pub scopes: Vec<String>,
166    #[serde(skip_serializing_if = "Option::is_none")]
167    pub expires_at: Option<i64>,
168}
169
170#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
171pub struct AdminRevokeKeyRequest {
172    pub api_key_id: String,
173}
174
175#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
176pub struct AdminRevokeKeyResponse {
177    pub api_key_id: String,
178}
179
180#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
181pub struct ApiKeyIntrospection {
182    pub active: bool,
183    pub api_key_id: String,
184    pub customer_id: String,
185    pub key_type: String,
186    pub scopes: Vec<String>,
187    #[serde(skip_serializing_if = "Option::is_none")]
188    pub expires_at: Option<i64>,
189}
190
191#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
192pub struct ArtifactPresignRequest {
193    pub filename: String,
194    pub platform: String,
195}
196
197#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
198pub struct ArtifactPresignResponse {
199    pub artifact_id: String,
200    pub object_key: String,
201    pub upload_url: String,
202    pub expires_at: i64,
203}
204
205#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
206pub struct ArtifactRegisterRequest {
207    pub artifact_id: String,
208    pub object_key: String,
209    pub checksum: String,
210    pub size: i64,
211    pub platform: String,
212}
213
214#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
215pub struct ArtifactRegisterResponse {
216    pub id: String,
217    pub release_id: String,
218    pub object_key: String,
219    pub checksum: String,
220    pub size: i64,
221    pub platform: String,
222    pub created_at: i64,
223}
224
225#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
226pub struct ArtifactSummary {
227    pub id: String,
228    pub object_key: String,
229    pub platform: String,
230    pub checksum: String,
231    pub size: i64,
232}
233
234#[derive(Clone, Debug, Serialize, Deserialize, Default, PartialEq, Eq)]
235pub struct AuditEventListQuery {
236    #[serde(skip_serializing_if = "Option::is_none")]
237    pub customer_id: Option<String>,
238    #[serde(skip_serializing_if = "Option::is_none")]
239    pub actor: Option<String>,
240    #[serde(skip_serializing_if = "Option::is_none")]
241    pub event: Option<String>,
242    #[serde(skip_serializing_if = "Option::is_none")]
243    pub created_from: Option<i64>,
244    #[serde(skip_serializing_if = "Option::is_none")]
245    pub created_to: Option<i64>,
246    #[serde(skip_serializing_if = "Option::is_none")]
247    pub limit: Option<i32>,
248    #[serde(skip_serializing_if = "Option::is_none")]
249    pub offset: Option<i32>,
250}
251
252#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
253pub struct AuditEventListResponse {
254    pub events: Vec<AuditEventResponse>,
255    pub limit: i64,
256    pub offset: i64,
257}
258
259#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
260pub struct AuditEventResponse {
261    pub id: String,
262    pub actor: String,
263    pub event: String,
264    pub created_at: i64,
265    #[serde(skip_serializing_if = "Option::is_none")]
266    pub customer_id: Option<String>,
267    #[serde(skip_serializing_if = "Option::is_none")]
268    pub payload: Option<Value>,
269}
270
271#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
272pub struct DownloadTokenRequest {
273    pub artifact_id: String,
274    #[serde(skip_serializing_if = "Option::is_none")]
275    pub expires_in_seconds: Option<i32>,
276    #[serde(skip_serializing_if = "Option::is_none")]
277    pub purpose: Option<String>,
278}
279
280#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
281pub struct DownloadTokenResponse {
282    pub download_url: String,
283    pub expires_at: i64,
284}
285
286#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
287pub struct EntitlementCreateRequest {
288    pub product: String,
289    pub starts_at: i64,
290    #[serde(skip_serializing_if = "Option::is_none")]
291    pub ends_at: Option<i64>,
292    #[serde(skip_serializing_if = "Option::is_none")]
293    pub metadata: Option<Value>,
294}
295
296#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
297pub struct EntitlementUpdateRequest {
298    #[serde(skip_serializing_if = "Option::is_none")]
299    pub product: Option<String>,
300    #[serde(skip_serializing_if = "Option::is_none")]
301    pub starts_at: Option<i64>,
302    #[serde(skip_serializing_if = "Option::is_none")]
303    pub ends_at: Option<i64>,
304    #[serde(skip_serializing_if = "Option::is_none")]
305    pub metadata: Option<Value>,
306}
307
308#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
309pub struct EntitlementResponse {
310    pub id: String,
311    pub customer_id: String,
312    pub product: String,
313    pub starts_at: i64,
314    #[serde(skip_serializing_if = "Option::is_none")]
315    pub ends_at: Option<i64>,
316    #[serde(skip_serializing_if = "Option::is_none")]
317    pub metadata: Option<Value>,
318}
319
320#[derive(Clone, Debug, Serialize, Deserialize, Default, PartialEq, Eq)]
321pub struct EntitlementListQuery {
322    #[serde(skip_serializing_if = "Option::is_none")]
323    pub product: Option<String>,
324    #[serde(skip_serializing_if = "Option::is_none")]
325    pub limit: Option<i32>,
326    #[serde(skip_serializing_if = "Option::is_none")]
327    pub offset: Option<i32>,
328}
329
330#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
331pub struct EntitlementListResponse {
332    pub entitlements: Vec<EntitlementResponse>,
333    pub limit: i64,
334    pub offset: i64,
335}
336
337#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
338pub struct ErrorBody {
339    pub error: ErrorDetail,
340}
341
342#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
343pub struct ErrorDetail {
344    pub code: String,
345    pub message: String,
346}
347
348#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
349pub struct EnterpriseErrorBody {
350    pub error: EnterpriseErrorDetail,
351}
352
353#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
354pub struct EnterpriseErrorDetail {
355    pub code: String,
356    pub message: String,
357}
358
359#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
360pub struct HealthResponse {
361    pub status: String,
362}
363
364#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
365pub struct ReleaseCreateRequest {
366    pub product: String,
367    pub version: String,
368}
369
370#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
371pub struct ReleaseResponse {
372    pub id: String,
373    pub product: String,
374    pub version: String,
375    pub status: String,
376    pub created_at: i64,
377    #[serde(skip_serializing_if = "Option::is_none")]
378    pub published_at: Option<i64>,
379    #[serde(skip_serializing_if = "Option::is_none")]
380    pub artifacts: Option<Vec<ArtifactSummary>>,
381}
382
383#[derive(Clone, Debug, Serialize, Deserialize, Default, PartialEq, Eq)]
384pub struct ReleaseListQuery {
385    #[serde(skip_serializing_if = "Option::is_none")]
386    pub product: Option<String>,
387    #[serde(skip_serializing_if = "Option::is_none")]
388    pub version: Option<String>,
389    #[serde(skip_serializing_if = "Option::is_none")]
390    pub status: Option<String>,
391    #[serde(skip_serializing_if = "Option::is_none")]
392    pub include_artifacts: Option<bool>,
393    #[serde(skip_serializing_if = "Option::is_none")]
394    pub limit: Option<i32>,
395    #[serde(skip_serializing_if = "Option::is_none")]
396    pub offset: Option<i32>,
397}
398
399#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
400pub struct ReleaseListResponse {
401    pub releases: Vec<ReleaseResponse>,
402    pub limit: i64,
403    pub offset: i64,
404}