use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum AuthType {
Email,
Passkey,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SignupRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub passkey: Option<PasskeyCredential>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_public_key: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PasskeyCredential {
pub id: String,
pub raw_id: String,
pub response: PasskeyResponse,
#[serde(skip_serializing_if = "Option::is_none")]
pub authenticator_attachment: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_extension_results: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PasskeyResponse {
pub client_data_json: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub attestation_object: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authenticator_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub signature: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SignupResponse {
pub org_id: String,
pub user_id: String,
pub address: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct AuthRequest {
pub email: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub redirect_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_public_key: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct WhoamiResponse {
pub org_id: String,
pub user_id: String,
pub address: String,
pub email: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct LookupRequest {
pub email: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct LookupResponse {
pub exists: bool,
pub org_id: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct OtpRequest {
pub email: String,
pub otp: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_public_key: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct JwtAuthRequest {
pub jwt: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_public_key: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SignPayloadRequest {
pub payload: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub stamp_token: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SignPayloadResponse {
pub signature: String,
}