Skip to main content

agentlink_core/protocols/
auth.rs

1//! Authentication Protocol Types
2
3use serde::{Deserialize, Serialize};
4
5use super::user::User;
6
7/// 邮件验证码登录请求
8#[derive(Debug, Clone, Serialize)]
9pub struct LoginRequest {
10    pub identifier: String,
11    pub code: String,
12}
13
14/// 登录响应
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct LoginResponse {
17    pub token: String,
18    pub user: User,
19}
20
21/// 发送验证码请求
22#[derive(Debug, Clone, Serialize)]
23pub struct SendCodeRequest {
24    #[serde(rename = "type")]
25    pub code_type: String,
26    pub target: String,
27}
28
29/// 发送验证码响应
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct SendCodeResponse {
32    pub message: String,
33    /// 验证码(仅在开发/测试模式下返回)
34    #[serde(rename = "code", default)]
35    pub verification_code: Option<String>,
36}
37
38/// 认证响应(兼容旧版本)
39pub type AuthResponse = LoginResponse;
40
41/// 设置 LinkID 请求
42#[derive(Debug, Clone, Serialize)]
43pub struct SetLinkIDRequest {
44    pub linkid: String,
45}
46
47/// 设置 LinkID 响应
48#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct SetLinkIDResponse {
50    pub message: String,
51}
52
53/// 检查 LinkID 响应
54#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct CheckLinkIDResponse {
56    pub available: bool,
57    pub message: Option<String>,
58}
59
60/// API 错误响应(旧格式)
61#[derive(Debug, Clone, Deserialize)]
62pub struct ApiError {
63    pub error: String,
64}
65
66/// 新格式 API 错误响应
67#[derive(Debug, Clone, Deserialize)]
68pub struct ApiErrorResponse {
69    pub success: bool,
70    pub error: ErrorDetail,
71    pub meta: ResponseMeta,
72}
73
74/// 错误详情
75#[derive(Debug, Clone, Deserialize)]
76#[serde(rename_all = "camelCase")]
77pub struct ErrorDetail {
78    pub code: String,
79    pub message: String,
80    #[serde(default)]
81    pub details: serde_json::Value,
82}
83
84/// 响应元数据
85#[derive(Debug, Clone, Deserialize)]
86pub struct ResponseMeta {
87    pub request_id: String,
88    pub timestamp: String,
89}
90
91/// 新格式 API 成功响应
92#[derive(Debug, Clone, Deserialize)]
93pub struct ApiResponse<T> {
94    pub success: bool,
95    pub data: T,
96    pub meta: ResponseMeta,
97}