from pydantic import BaseModel, Field, EmailStr from typing import Optional from datetime import datetime class LoginRequest(BaseModel): """Request model for user login""" jira_email: EmailStr = Field(..., description="Jira account email") jira_api_token: str = Field(..., description="Jira API token") jira_server_url: str = Field(..., description="Jira server URL (e.g., https://yourcompany.atlassian.net)") class LoginResponse(BaseModel): """Response model after successful login""" access_token: str = Field(..., description="JWT access token") token_type: str = Field(default="bearer", description="Token type") expires_in: int = Field(..., description="Token expiration time in seconds") class UserCredentials(BaseModel): """User credentials stored in JWT token""" jira_email: str jira_server_url: str jira_api_token: str exp: Optional[datetime] = None class TokenData(BaseModel): """Data extracted from JWT token""" jira_email: Optional[str] = None jira_server_url: Optional[str] = None