codemie-sdk-python 0.1.440__tar.gz → 0.1.446__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/PKG-INFO +1 -1
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/pyproject.toml +1 -1
- codemie_sdk_python-0.1.446/src/codemie_sdk/models/user.py +123 -0
- codemie_sdk_python-0.1.446/src/codemie_sdk/services/user.py +172 -0
- codemie_sdk_python-0.1.440/src/codemie_sdk/models/user.py +0 -46
- codemie_sdk_python-0.1.440/src/codemie_sdk/services/user.py +0 -34
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/README.md +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/__init__.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/auth/__init__.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/auth/credentials.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/client/__init__.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/client/client.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/exceptions.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/__init__.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/admin.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/analytics.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/assistant.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/categories.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/common.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/conversation.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/datasource.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/errors.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/file_operation.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/guardrails.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/integration.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/llm.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/mermaid.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/project.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/skill.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/task.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/vendor_assistant.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/vendor_guardrail.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/vendor_knowledgebase.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/vendor_workflow.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/workflow.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/workflow_execution_payload.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/workflow_state.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/workflow_thoughts.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/admin.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/analytics.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/assistant.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/categories.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/codemie_guardrails.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/conversation.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/datasource.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/files.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/integration.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/llm.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/mermaid.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/project.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/skill.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/task.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/vendor_assistant.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/vendor_guardrail.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/vendor_knowledgebase.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/vendor_workflow.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/webhook.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/workflow.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/workflow_execution.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/workflow_execution_state.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/utils/__init__.py +0 -0
- {codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/utils/http.py +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"""Models for user-related data structures."""
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class PaginationInfo(BaseModel):
|
|
9
|
+
model_config = ConfigDict(extra="ignore")
|
|
10
|
+
|
|
11
|
+
total: int
|
|
12
|
+
page: int
|
|
13
|
+
per_page: int
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class AdminUserListItem(BaseModel):
|
|
17
|
+
model_config = ConfigDict(extra="ignore")
|
|
18
|
+
|
|
19
|
+
id: str
|
|
20
|
+
username: str
|
|
21
|
+
email: str
|
|
22
|
+
name: Optional[str] = None
|
|
23
|
+
user_type: Optional[str] = None
|
|
24
|
+
is_active: bool
|
|
25
|
+
is_admin: bool
|
|
26
|
+
is_maintainer: bool = False
|
|
27
|
+
auth_source: Optional[str] = None
|
|
28
|
+
last_login_at: Optional[str] = None
|
|
29
|
+
date: Optional[str] = None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class PaginatedUserListResponse(BaseModel):
|
|
33
|
+
model_config = ConfigDict(extra="ignore")
|
|
34
|
+
|
|
35
|
+
data: List[AdminUserListItem]
|
|
36
|
+
pagination: PaginationInfo
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class AdminUserProjectInfo(BaseModel):
|
|
40
|
+
model_config = ConfigDict(extra="ignore")
|
|
41
|
+
|
|
42
|
+
name: str
|
|
43
|
+
is_project_admin: bool = False
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class CodeMieUserDetail(BaseModel):
|
|
47
|
+
model_config = ConfigDict(extra="ignore")
|
|
48
|
+
|
|
49
|
+
id: str
|
|
50
|
+
username: str
|
|
51
|
+
email: str
|
|
52
|
+
name: Optional[str] = None
|
|
53
|
+
picture: Optional[str] = None
|
|
54
|
+
user_type: Optional[str] = None
|
|
55
|
+
is_active: bool
|
|
56
|
+
is_admin: bool
|
|
57
|
+
is_maintainer: bool = False
|
|
58
|
+
auth_source: Optional[str] = None
|
|
59
|
+
email_verified: bool = False
|
|
60
|
+
last_login_at: Optional[str] = None
|
|
61
|
+
projects: List[AdminUserProjectInfo] = []
|
|
62
|
+
project_limit: Optional[int] = None
|
|
63
|
+
knowledge_bases: List[str] = []
|
|
64
|
+
date: Optional[str] = None
|
|
65
|
+
update_date: Optional[str] = None
|
|
66
|
+
deleted_at: Optional[str] = None
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class AdminUserProject(BaseModel):
|
|
70
|
+
model_config = ConfigDict(extra="ignore")
|
|
71
|
+
|
|
72
|
+
project_name: str
|
|
73
|
+
is_project_admin: bool = False
|
|
74
|
+
date: Optional[str] = None
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class UserProjectsResponse(BaseModel):
|
|
78
|
+
model_config = ConfigDict(extra="ignore")
|
|
79
|
+
|
|
80
|
+
projects: List[AdminUserProject] = []
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class User(BaseModel):
|
|
84
|
+
"""Model representing a user profile."""
|
|
85
|
+
|
|
86
|
+
model_config = ConfigDict(populate_by_name=True, extra="ignore")
|
|
87
|
+
|
|
88
|
+
user_id: str = Field(
|
|
89
|
+
description="Unique identifier of the user", validation_alias="userId"
|
|
90
|
+
)
|
|
91
|
+
name: str = Field(description="Full name of the user")
|
|
92
|
+
username: str = Field(description="Username for authentication")
|
|
93
|
+
email: str = Field(description="User email")
|
|
94
|
+
is_admin: bool = Field(
|
|
95
|
+
description="Whether the user has admin privileges", validation_alias="isAdmin"
|
|
96
|
+
)
|
|
97
|
+
applications: list[str] = Field(
|
|
98
|
+
default_factory=list, description="List of applications the user has access to"
|
|
99
|
+
)
|
|
100
|
+
applications_admin: list[str] = Field(
|
|
101
|
+
default_factory=list,
|
|
102
|
+
description="List of applications where user has admin rights",
|
|
103
|
+
validation_alias="applicationsAdmin",
|
|
104
|
+
)
|
|
105
|
+
picture: str = Field(default="", description="URL to user's profile picture")
|
|
106
|
+
knowledge_bases: list[str] = Field(
|
|
107
|
+
default_factory=list,
|
|
108
|
+
description="List of knowledge bases the user has access to",
|
|
109
|
+
validation_alias="knowledgeBases",
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class UserData(BaseModel):
|
|
114
|
+
"""Model representing user data."""
|
|
115
|
+
|
|
116
|
+
model_config = ConfigDict(populate_by_name=True, extra="ignore")
|
|
117
|
+
|
|
118
|
+
id: str | None = Field(
|
|
119
|
+
default=None, description="Unique identifier of the user data record"
|
|
120
|
+
)
|
|
121
|
+
date: str | None = Field(default=None, description="Creation timestamp")
|
|
122
|
+
update_date: str | None = Field(default=None, description="Last update timestamp")
|
|
123
|
+
user_id: str | None = Field(default=None, description="Associated user identifier")
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"""User service implementation."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Dict, List, Optional
|
|
4
|
+
|
|
5
|
+
from ..models.user import (
|
|
6
|
+
AdminUserProject,
|
|
7
|
+
CodeMieUserDetail,
|
|
8
|
+
PaginatedUserListResponse,
|
|
9
|
+
User,
|
|
10
|
+
UserData,
|
|
11
|
+
UserProjectsResponse,
|
|
12
|
+
)
|
|
13
|
+
from ..utils.http import ApiRequestHandler, TokenSource
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class UserService:
|
|
17
|
+
"""Service for managing user profile and preferences."""
|
|
18
|
+
|
|
19
|
+
def __init__(self, api_domain: str, token: TokenSource, verify_ssl: bool = True):
|
|
20
|
+
"""Initialize the User service.
|
|
21
|
+
|
|
22
|
+
Args:
|
|
23
|
+
api_domain: Base URL for the CodeMie API
|
|
24
|
+
token: Authentication token
|
|
25
|
+
verify_ssl: Whether to verify SSL certificates. Default: True
|
|
26
|
+
"""
|
|
27
|
+
self._api = ApiRequestHandler(api_domain, token, verify_ssl)
|
|
28
|
+
|
|
29
|
+
def about_me(self) -> User:
|
|
30
|
+
"""Get current user profile.
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
User profile information
|
|
34
|
+
"""
|
|
35
|
+
return self._api.get("/v1/user", User, wrap_response=False)
|
|
36
|
+
|
|
37
|
+
def get_data(self) -> UserData:
|
|
38
|
+
"""Get user data and preferences.
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
User data and preferences
|
|
42
|
+
"""
|
|
43
|
+
return self._api.get("/v1/user/data", UserData, wrap_response=False)
|
|
44
|
+
|
|
45
|
+
def list_admin_users(
|
|
46
|
+
self,
|
|
47
|
+
page: int = 0,
|
|
48
|
+
per_page: int = 20,
|
|
49
|
+
search: Optional[str] = None,
|
|
50
|
+
filters: Optional[str] = None,
|
|
51
|
+
) -> PaginatedUserListResponse:
|
|
52
|
+
"""List all users with pagination and filtering (admin only).
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
page: Page number (0-indexed)
|
|
56
|
+
per_page: Results per page (10, 20, 50, or 100)
|
|
57
|
+
search: Search string matching email, username, or name
|
|
58
|
+
filters: Stringified JSON with filter keys: projects, user_type, is_active, platform_role, budgets
|
|
59
|
+
"""
|
|
60
|
+
params: Dict[str, Any] = {"page": page, "per_page": per_page}
|
|
61
|
+
if search is not None:
|
|
62
|
+
params["search"] = search
|
|
63
|
+
if filters is not None:
|
|
64
|
+
params["filters"] = filters
|
|
65
|
+
return self._api.get(
|
|
66
|
+
"/v1/admin/users",
|
|
67
|
+
PaginatedUserListResponse,
|
|
68
|
+
params=params,
|
|
69
|
+
wrap_response=False,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
def get_admin_user(self, user_id: str) -> CodeMieUserDetail:
|
|
73
|
+
"""Get full details for a specific user (admin only).
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
user_id: The user's unique identifier
|
|
77
|
+
"""
|
|
78
|
+
return self._api.get(
|
|
79
|
+
f"/v1/admin/users/{user_id}", CodeMieUserDetail, wrap_response=False
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
def update_admin_user(self, user_id: str, **kwargs: Any) -> CodeMieUserDetail:
|
|
83
|
+
"""Update editable fields of a user (SuperAdmin only).
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
user_id: The user's unique identifier
|
|
87
|
+
**kwargs: Fields to update (name, picture, is_admin, is_maintainer, is_active, project_limit, etc.)
|
|
88
|
+
"""
|
|
89
|
+
return self._api.put(
|
|
90
|
+
f"/v1/admin/users/{user_id}",
|
|
91
|
+
CodeMieUserDetail,
|
|
92
|
+
json_data=kwargs,
|
|
93
|
+
wrap_response=False,
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
def get_user_projects(self, user_id: str) -> List[AdminUserProject]:
|
|
97
|
+
"""Get a user's project memberships (admin only).
|
|
98
|
+
|
|
99
|
+
Args:
|
|
100
|
+
user_id: The user's unique identifier
|
|
101
|
+
"""
|
|
102
|
+
response = self._api.get(
|
|
103
|
+
f"/v1/admin/users/{user_id}/projects",
|
|
104
|
+
UserProjectsResponse,
|
|
105
|
+
wrap_response=False,
|
|
106
|
+
)
|
|
107
|
+
return response.projects
|
|
108
|
+
|
|
109
|
+
def assign_user_to_project(
|
|
110
|
+
self,
|
|
111
|
+
user_id: str,
|
|
112
|
+
project_name: str,
|
|
113
|
+
is_project_admin: bool = False,
|
|
114
|
+
) -> dict:
|
|
115
|
+
"""Grant a user access to a project (SuperAdmin only).
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
user_id: The user's unique identifier
|
|
119
|
+
project_name: Name of the project to grant access to
|
|
120
|
+
is_project_admin: Whether the user should be a project admin
|
|
121
|
+
"""
|
|
122
|
+
return self._api.post(
|
|
123
|
+
f"/v1/admin/users/{user_id}/projects",
|
|
124
|
+
dict,
|
|
125
|
+
json_data={
|
|
126
|
+
"project_name": project_name,
|
|
127
|
+
"is_project_admin": is_project_admin,
|
|
128
|
+
},
|
|
129
|
+
wrap_response=False,
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
def remove_user_from_project(self, user_id: str, project_name: str) -> None:
|
|
133
|
+
"""Remove a user's access to a project (SuperAdmin only).
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
user_id: The user's unique identifier
|
|
137
|
+
project_name: Name of the project to remove access from
|
|
138
|
+
"""
|
|
139
|
+
self._api.delete(
|
|
140
|
+
f"/v1/admin/users/{user_id}/projects/{project_name}",
|
|
141
|
+
dict,
|
|
142
|
+
wrap_response=False,
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
def update_user_project_role(
|
|
146
|
+
self, user_id: str, project_name: str, is_project_admin: bool
|
|
147
|
+
) -> None:
|
|
148
|
+
"""Change a user's role within a project (SuperAdmin only).
|
|
149
|
+
|
|
150
|
+
Args:
|
|
151
|
+
user_id: The user's unique identifier
|
|
152
|
+
project_name: Name of the project
|
|
153
|
+
is_project_admin: Whether the user should be a project admin
|
|
154
|
+
"""
|
|
155
|
+
self._api.put(
|
|
156
|
+
f"/v1/admin/users/{user_id}/projects/{project_name}",
|
|
157
|
+
dict,
|
|
158
|
+
json_data={"is_project_admin": is_project_admin},
|
|
159
|
+
wrap_response=False,
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
def deactivate_user(self, user_id: str) -> None:
|
|
163
|
+
"""Deactivate (soft-delete) a user (SuperAdmin only).
|
|
164
|
+
|
|
165
|
+
Args:
|
|
166
|
+
user_id: The user's unique identifier
|
|
167
|
+
"""
|
|
168
|
+
self._api.delete(
|
|
169
|
+
f"/v1/admin/users/{user_id}",
|
|
170
|
+
dict,
|
|
171
|
+
wrap_response=False,
|
|
172
|
+
)
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"""Models for user-related data structures."""
|
|
2
|
-
|
|
3
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class User(BaseModel):
|
|
7
|
-
"""Model representing a user profile."""
|
|
8
|
-
|
|
9
|
-
model_config = ConfigDict(populate_by_name=True, extra="ignore")
|
|
10
|
-
|
|
11
|
-
user_id: str = Field(
|
|
12
|
-
description="Unique identifier of the user", validation_alias="userId"
|
|
13
|
-
)
|
|
14
|
-
name: str = Field(description="Full name of the user")
|
|
15
|
-
username: str = Field(description="Username for authentication")
|
|
16
|
-
email: str = Field(description="User email")
|
|
17
|
-
is_admin: bool = Field(
|
|
18
|
-
description="Whether the user has admin privileges", validation_alias="isAdmin"
|
|
19
|
-
)
|
|
20
|
-
applications: list[str] = Field(
|
|
21
|
-
default_factory=list, description="List of applications the user has access to"
|
|
22
|
-
)
|
|
23
|
-
applications_admin: list[str] = Field(
|
|
24
|
-
default_factory=list,
|
|
25
|
-
description="List of applications where user has admin rights",
|
|
26
|
-
validation_alias="applicationsAdmin",
|
|
27
|
-
)
|
|
28
|
-
picture: str = Field(default="", description="URL to user's profile picture")
|
|
29
|
-
knowledge_bases: list[str] = Field(
|
|
30
|
-
default_factory=list,
|
|
31
|
-
description="List of knowledge bases the user has access to",
|
|
32
|
-
validation_alias="knowledgeBases",
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class UserData(BaseModel):
|
|
37
|
-
"""Model representing user data."""
|
|
38
|
-
|
|
39
|
-
model_config = ConfigDict(populate_by_name=True, extra="ignore")
|
|
40
|
-
|
|
41
|
-
id: str | None = Field(
|
|
42
|
-
default=None, description="Unique identifier of the user data record"
|
|
43
|
-
)
|
|
44
|
-
date: str | None = Field(default=None, description="Creation timestamp")
|
|
45
|
-
update_date: str | None = Field(default=None, description="Last update timestamp")
|
|
46
|
-
user_id: str | None = Field(default=None, description="Associated user identifier")
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"""User service implementation."""
|
|
2
|
-
|
|
3
|
-
from ..models.user import User, UserData
|
|
4
|
-
from ..utils.http import ApiRequestHandler, TokenSource
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class UserService:
|
|
8
|
-
"""Service for managing user profile and preferences."""
|
|
9
|
-
|
|
10
|
-
def __init__(self, api_domain: str, token: TokenSource, verify_ssl: bool = True):
|
|
11
|
-
"""Initialize the User service.
|
|
12
|
-
|
|
13
|
-
Args:
|
|
14
|
-
api_domain: Base URL for the CodeMie API
|
|
15
|
-
token: Authentication token
|
|
16
|
-
verify_ssl: Whether to verify SSL certificates. Default: True
|
|
17
|
-
"""
|
|
18
|
-
self._api = ApiRequestHandler(api_domain, token, verify_ssl)
|
|
19
|
-
|
|
20
|
-
def about_me(self) -> User:
|
|
21
|
-
"""Get current user profile.
|
|
22
|
-
|
|
23
|
-
Returns:
|
|
24
|
-
User profile information
|
|
25
|
-
"""
|
|
26
|
-
return self._api.get("/v1/user", User, wrap_response=False)
|
|
27
|
-
|
|
28
|
-
def get_data(self) -> UserData:
|
|
29
|
-
"""Get user data and preferences.
|
|
30
|
-
|
|
31
|
-
Returns:
|
|
32
|
-
User data and preferences
|
|
33
|
-
"""
|
|
34
|
-
return self._api.get("/v1/user/data", UserData, wrap_response=False)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/auth/credentials.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/client/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/analytics.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/assistant.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/categories.py
RENAMED
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/conversation.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/datasource.py
RENAMED
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/file_operation.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/guardrails.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/vendor_assistant.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/vendor_guardrail.py
RENAMED
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/vendor_workflow.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/models/workflow_state.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/analytics.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/assistant.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/categories.py
RENAMED
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/conversation.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/datasource.py
RENAMED
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/integration.py
RENAMED
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/mermaid.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/project.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/webhook.py
RENAMED
|
File without changes
|
{codemie_sdk_python-0.1.440 → codemie_sdk_python-0.1.446}/src/codemie_sdk/services/workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|