Repository navigation
Expand file tree
/
Copy pathmodels.py
More file actions
126 lines (98 loc) · 2.88 KB
/
Copy pathmodels.py
File metadata and controls
126 lines (98 loc) · 2.88 KB
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
"""
Data models for MBTQ Auto-API
"""
from pydantic import BaseModel, Field, field_validator
from typing import Optional, List, Dict, Any
from datetime import datetime
class APIEntry(BaseModel):
"""Model for API entry from public-apis.org"""
API: str
Description: str
Auth: Optional[str] = None
HTTPS: bool
Cors: str
Link: str
Category: str
class APIFilter(BaseModel):
"""Model for filtering API entries"""
category: Optional[str] = None
search: Optional[str] = None
auth: Optional[str] = None
https: Optional[bool] = None
limit: int = Field(default=100, ge=1, le=500)
class AuthRequest(BaseModel):
"""Model for authentication request"""
username: str = Field(..., min_length=1, max_length=100)
password: Optional[str] = None
@field_validator('username')
@classmethod
def username_alphanumeric(cls, v):
if not v.replace('_', '').replace('-', '').isalnum():
raise ValueError('Username must be alphanumeric (with _ or - allowed)')
return v
class AuthResponse(BaseModel):
"""Model for authentication response"""
success: bool
token: str
username: str
message: str
expires_at: Optional[str] = None
class CodeGenerationRequest(BaseModel):
"""Model for code generation request"""
api_name: str
description: str
link: str
category: str
auth: Optional[str] = None
https: bool = True
class CodeGenerationResponse(BaseModel):
"""Model for code generation response"""
success: bool
code: str
api_name: str
generated_at: str
mbtq_metadata: Dict[str, str]
class DeploymentConfig(BaseModel):
"""Model for deployment configuration"""
name: Optional[str] = None
env_vars: Optional[Dict[str, str]] = None
build_command: Optional[str] = None
output_directory: Optional[str] = None
class DeploymentRequest(BaseModel):
"""Model for deployment request"""
api_name: str
code: str
config: Optional[DeploymentConfig] = None
class DeploymentLog(BaseModel):
"""Model for deployment log entry"""
timestamp: str
message: str
type: str = Field(default="info") # info, success, error, warning
class DeploymentResponse(BaseModel):
"""Model for deployment response"""
success: bool
deployment_id: str
url: str
status: str
logs: List[DeploymentLog]
deployed_at: str
class FibonroseLog(BaseModel):
"""Model for Fibonrose activity log"""
id: Optional[str] = None
action: str
metadata: Dict[str, Any]
user: str
timestamp: str
reputation_impact: int = 0
class FibonroseReputation(BaseModel):
"""Model for user reputation"""
username: str
score: int
level: str
total_actions: int
last_activity: str
class HealthCheck(BaseModel):
"""Model for health check response"""
status: str
timestamp: str
version: Optional[str] = None