File size: 1,066 Bytes
e4c3be8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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