mz_frontegg_mock/models/
token.rs

1// Copyright Materialize, Inc. and contributors. All rights reserved.
2//
3// Use of this software is governed by the Business Source License
4// included in the LICENSE file.
5//
6// As of the Change Date specified in that file, in accordance with
7// the Business Source License, use of this software will be governed
8// by the Apache License, Version 2.0.
9
10use chrono::{DateTime, Utc};
11use mz_frontegg_auth::ClaimMetadata;
12use serde::{Deserialize, Serialize};
13use uuid::Uuid;
14
15#[derive(Deserialize)]
16pub struct AuthUserRequest {
17    pub email: String,
18    pub password: String,
19}
20
21#[derive(Deserialize)]
22#[serde(rename_all = "camelCase")]
23pub struct RefreshTokenRequest {
24    pub refresh_token: String,
25}
26
27// We only use this for the tenant ID, so ignoring all other fields,
28// even required ones.
29#[derive(Serialize, Clone)]
30#[serde(rename_all = "camelCase")]
31pub struct UserProfileResponse {
32    pub tenant_id: Uuid,
33}
34
35#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, PartialOrd, Ord)]
36#[serde(rename_all = "camelCase")]
37pub struct ApiToken {
38    #[serde(alias = "client_id")]
39    pub client_id: Uuid,
40    pub secret: Uuid,
41    #[serde(default)]
42    pub description: Option<String>,
43    #[serde(alias = "created_at", skip_deserializing)]
44    pub created_at: DateTime<Utc>,
45}
46
47#[derive(Serialize, Deserialize, Clone)]
48pub struct UserApiTokenResponse {
49    #[serde(rename = "clientId")]
50    pub client_id: String,
51    pub description: String,
52    #[serde(rename = "created_at")]
53    pub created_at: DateTime<Utc>,
54    pub secret: String,
55}
56
57#[derive(Deserialize)]
58pub struct UserApiTokenRequest {
59    pub description: Option<String>,
60}
61
62#[derive(Serialize, Deserialize)]
63pub struct CreateTenantApiTokenRequest {
64    pub description: String,
65    pub metadata: Option<ClaimMetadata>,
66    #[serde(rename = "roleIds")]
67    pub role_ids: Vec<String>,
68}
69
70#[derive(Serialize, Deserialize, Clone)]
71pub struct TenantApiTokenConfig {
72    pub tenant_id: Uuid,
73    pub metadata: Option<ClaimMetadata>,
74    pub roles: Vec<String>,
75    pub description: Option<String>,
76    pub created_by_user_id: Uuid,
77    pub created_at: DateTime<Utc>,
78}
79
80#[derive(Serialize, Deserialize, Clone)]
81pub struct TenantApiTokenResponse {
82    #[serde(rename = "clientId")]
83    pub client_id: Uuid,
84    pub description: String,
85    pub secret: Uuid,
86    #[serde(rename = "createdByUserId")]
87    pub created_by_user_id: Uuid,
88    pub metadata: Option<ClaimMetadata>,
89    #[serde(rename = "createdAt")]
90    pub created_at: DateTime<Utc>,
91    #[serde(rename = "roleIds")]
92    pub role_ids: Vec<String>,
93}