1use serde::{Deserialize, Serialize};
4#[cfg(feature = "openapi")]
5use utoipa::ToSchema;
6use validator::Validate;
7
8#[derive(Debug, Serialize, Deserialize, Validate)]
9#[cfg_attr(feature = "openapi", derive(ToSchema))]
10pub struct LoginRequest {
11 #[validate(email)]
12 pub email: String,
13 #[validate(length(min = 1))]
14 pub password: String,
15}
16
17#[derive(Debug, Serialize, Deserialize)]
18#[cfg_attr(feature = "openapi", derive(ToSchema))]
19pub struct LoginResponse {
20 pub success: bool,
21 pub token: Option<String>,
22 pub user_id: Option<String>,
23 pub agent_id: Option<String>,
24 pub permissions: Option<Vec<String>>,
25 pub error: Option<String>,
26 pub softphone_enabled: Option<bool>,
27}
28
29#[derive(Debug, Serialize, Deserialize)]
30#[cfg_attr(feature = "openapi", derive(ToSchema))]
31pub struct LogoutRequest {
32 pub token: Option<String>,
33 pub session_id: Option<String>,
34}
35
36#[derive(Debug, Serialize, Deserialize, Validate)]
37#[cfg_attr(feature = "openapi", derive(ToSchema))]
38pub struct PasswordResetRequest {
39 #[validate(email)]
40 pub email: String,
41}
42
43#[derive(Debug, Serialize, Deserialize, Validate)]
44#[cfg_attr(feature = "openapi", derive(ToSchema))]
45pub struct PasswordResetConfirm {
46 pub token: String,
47 #[validate(length(min = 8))]
48 pub new_password: String,
49}
50
51#[derive(Debug, Serialize, Deserialize, Validate)]
52#[cfg_attr(feature = "openapi", derive(ToSchema))]
53pub struct RegisterRequest {
54 #[validate(email)]
55 pub email: String,
56 #[validate(length(min = 8))]
57 pub password: String,
58 pub first_name: String,
59 pub last_name: String,
60 pub account_id: Option<String>,
61}
62
63#[derive(Debug, Serialize, Deserialize)]
64#[cfg_attr(feature = "openapi", derive(ToSchema))]
65pub struct RegisterResponse {
66 pub success: bool,
67 pub user_id: Option<String>,
68 pub message: Option<String>,
69 pub error: Option<String>,
70}