unique_sdk 0.10.43__py3-none-any.whl → 0.10.51__py3-none-any.whl
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.
- unique_sdk/api_resources/_agentic_table.py +1 -2
- unique_sdk/api_resources/_content.py +1 -0
- unique_sdk/api_resources/_folder.py +47 -0
- unique_sdk/api_resources/_group.py +236 -1
- unique_sdk/api_resources/_space.py +180 -0
- unique_sdk/api_resources/_user.py +58 -0
- unique_sdk/utils/chat_in_space.py +3 -2
- {unique_sdk-0.10.43.dist-info → unique_sdk-0.10.51.dist-info}/METADATA +138 -6
- {unique_sdk-0.10.43.dist-info → unique_sdk-0.10.51.dist-info}/RECORD +11 -11
- {unique_sdk-0.10.43.dist-info → unique_sdk-0.10.51.dist-info}/LICENSE +0 -0
- {unique_sdk-0.10.43.dist-info → unique_sdk-0.10.51.dist-info}/WHEEL +0 -0
|
@@ -177,6 +177,53 @@ class Folder(APIResource["Folder"]):
|
|
|
177
177
|
successFolders: List["Folder.DeleteFolderResponse"]
|
|
178
178
|
failedFolders: List["Folder.DeleteFolderResponse"]
|
|
179
179
|
|
|
180
|
+
class FolderPathResponse(TypedDict):
|
|
181
|
+
"""
|
|
182
|
+
Response for getting folder path.
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
folderPath: str
|
|
186
|
+
|
|
187
|
+
@classmethod
|
|
188
|
+
def get_folder_path(
|
|
189
|
+
cls,
|
|
190
|
+
user_id: str,
|
|
191
|
+
company_id: str,
|
|
192
|
+
scope_id: str,
|
|
193
|
+
) -> "Folder.FolderPathResponse":
|
|
194
|
+
"""
|
|
195
|
+
Get the complete folder path for a given folder ID.
|
|
196
|
+
"""
|
|
197
|
+
return cast(
|
|
198
|
+
"Folder.FolderPathResponse",
|
|
199
|
+
cls._static_request(
|
|
200
|
+
"get",
|
|
201
|
+
f"/folder/{scope_id}/path",
|
|
202
|
+
user_id,
|
|
203
|
+
company_id,
|
|
204
|
+
),
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
@classmethod
|
|
208
|
+
async def get_folder_path_async(
|
|
209
|
+
cls,
|
|
210
|
+
user_id: str,
|
|
211
|
+
company_id: str,
|
|
212
|
+
scope_id: str,
|
|
213
|
+
) -> "Folder.FolderPathResponse":
|
|
214
|
+
"""
|
|
215
|
+
Async get the complete folder path for a given folder ID.
|
|
216
|
+
"""
|
|
217
|
+
return cast(
|
|
218
|
+
"Folder.FolderPathResponse",
|
|
219
|
+
await cls._static_request_async(
|
|
220
|
+
"get",
|
|
221
|
+
f"/folder/{scope_id}/path",
|
|
222
|
+
user_id,
|
|
223
|
+
company_id,
|
|
224
|
+
),
|
|
225
|
+
)
|
|
226
|
+
|
|
180
227
|
@classmethod
|
|
181
228
|
def get_info(
|
|
182
229
|
cls, user_id: str, company_id: str, **params: Unpack["Folder.GetParams"]
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from typing import (
|
|
2
|
+
Any,
|
|
2
3
|
ClassVar,
|
|
4
|
+
Dict,
|
|
3
5
|
List,
|
|
4
6
|
Literal,
|
|
5
7
|
NotRequired,
|
|
@@ -25,6 +27,15 @@ class Group(APIResource["Group"]):
|
|
|
25
27
|
take: NotRequired[Optional[int]]
|
|
26
28
|
name: NotRequired[Optional[str]]
|
|
27
29
|
|
|
30
|
+
class CreateParams(RequestOptions):
|
|
31
|
+
"""
|
|
32
|
+
Parameters for creating a group.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
name: str
|
|
36
|
+
externalId: NotRequired[Optional[str]]
|
|
37
|
+
parentId: NotRequired[Optional[str]]
|
|
38
|
+
|
|
28
39
|
class UpdateParams(RequestOptions):
|
|
29
40
|
"""
|
|
30
41
|
Parameters for updating a group.
|
|
@@ -32,6 +43,27 @@ class Group(APIResource["Group"]):
|
|
|
32
43
|
|
|
33
44
|
name: NotRequired[Optional[str]]
|
|
34
45
|
|
|
46
|
+
class AddUsersParams(RequestOptions):
|
|
47
|
+
"""
|
|
48
|
+
Parameters for adding users to a group.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
userIds: List[str]
|
|
52
|
+
|
|
53
|
+
class RemoveUsersParams(RequestOptions):
|
|
54
|
+
"""
|
|
55
|
+
Parameters for removing users from a group.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
userIds: List[str]
|
|
59
|
+
|
|
60
|
+
class UpdateGroupConfigurationParams(RequestOptions):
|
|
61
|
+
"""
|
|
62
|
+
Parameters for updating group configuration.
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
configuration: Dict[str, Any]
|
|
66
|
+
|
|
35
67
|
class GroupMember(TypedDict):
|
|
36
68
|
"""
|
|
37
69
|
Represents a member of a group.
|
|
@@ -39,6 +71,15 @@ class Group(APIResource["Group"]):
|
|
|
39
71
|
|
|
40
72
|
entityId: str
|
|
41
73
|
|
|
74
|
+
class GroupMembership(TypedDict):
|
|
75
|
+
"""
|
|
76
|
+
Represents a membership relationship between a user and a group.
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
entityId: str
|
|
80
|
+
groupId: str
|
|
81
|
+
createdAt: str
|
|
82
|
+
|
|
42
83
|
class Group(TypedDict):
|
|
43
84
|
"""
|
|
44
85
|
Represents a group in the company.
|
|
@@ -48,11 +89,17 @@ class Group(APIResource["Group"]):
|
|
|
48
89
|
name: str
|
|
49
90
|
externalId: str
|
|
50
91
|
parentId: Optional[str]
|
|
51
|
-
roles: Optional[List[str]]
|
|
52
92
|
members: Optional[List["Group.GroupMember"]]
|
|
53
93
|
createdAt: str
|
|
54
94
|
updatedAt: str
|
|
55
95
|
|
|
96
|
+
class GroupWithConfiguration(Group):
|
|
97
|
+
"""
|
|
98
|
+
Represents a group in the company with configuration.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
configuration: Dict[str, Any]
|
|
102
|
+
|
|
56
103
|
class Groups(TypedDict):
|
|
57
104
|
"""
|
|
58
105
|
Response for getting groups.
|
|
@@ -67,6 +114,62 @@ class Group(APIResource["Group"]):
|
|
|
67
114
|
|
|
68
115
|
id: str
|
|
69
116
|
|
|
117
|
+
class AddUsersToGroupResponse(TypedDict):
|
|
118
|
+
"""
|
|
119
|
+
Response for adding users to a group.
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
memberships: List["Group.GroupMembership"]
|
|
123
|
+
|
|
124
|
+
class RemoveUsersFromGroupResponse(TypedDict):
|
|
125
|
+
"""
|
|
126
|
+
Response for removing users from a group.
|
|
127
|
+
"""
|
|
128
|
+
|
|
129
|
+
success: bool
|
|
130
|
+
|
|
131
|
+
@classmethod
|
|
132
|
+
def create_group(
|
|
133
|
+
cls,
|
|
134
|
+
user_id: str,
|
|
135
|
+
company_id: str,
|
|
136
|
+
**params: Unpack["Group.CreateParams"],
|
|
137
|
+
) -> "Group.Group":
|
|
138
|
+
"""
|
|
139
|
+
Create a group in a company.
|
|
140
|
+
"""
|
|
141
|
+
return cast(
|
|
142
|
+
"Group.Group",
|
|
143
|
+
cls._static_request(
|
|
144
|
+
"post",
|
|
145
|
+
"/groups",
|
|
146
|
+
user_id,
|
|
147
|
+
company_id,
|
|
148
|
+
params=params,
|
|
149
|
+
),
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
@classmethod
|
|
153
|
+
async def create_group_async(
|
|
154
|
+
cls,
|
|
155
|
+
user_id: str,
|
|
156
|
+
company_id: str,
|
|
157
|
+
**params: Unpack["Group.CreateParams"],
|
|
158
|
+
) -> "Group.Group":
|
|
159
|
+
"""
|
|
160
|
+
Async create a group in a company.
|
|
161
|
+
"""
|
|
162
|
+
return cast(
|
|
163
|
+
"Group.Group",
|
|
164
|
+
await cls._static_request_async(
|
|
165
|
+
"post",
|
|
166
|
+
"/groups",
|
|
167
|
+
user_id,
|
|
168
|
+
company_id,
|
|
169
|
+
params=params,
|
|
170
|
+
),
|
|
171
|
+
)
|
|
172
|
+
|
|
70
173
|
@classmethod
|
|
71
174
|
def get_groups(
|
|
72
175
|
cls,
|
|
@@ -192,3 +295,135 @@ class Group(APIResource["Group"]):
|
|
|
192
295
|
params=params,
|
|
193
296
|
),
|
|
194
297
|
)
|
|
298
|
+
|
|
299
|
+
@classmethod
|
|
300
|
+
def add_users_to_group(
|
|
301
|
+
cls,
|
|
302
|
+
user_id: str,
|
|
303
|
+
company_id: str,
|
|
304
|
+
group_id: str,
|
|
305
|
+
**params: Unpack["Group.AddUsersParams"],
|
|
306
|
+
) -> "Group.AddUsersToGroupResponse":
|
|
307
|
+
"""
|
|
308
|
+
Add users to a group in a company.
|
|
309
|
+
"""
|
|
310
|
+
return cast(
|
|
311
|
+
"Group.AddUsersToGroupResponse",
|
|
312
|
+
cls._static_request(
|
|
313
|
+
"post",
|
|
314
|
+
f"/groups/{group_id}/users",
|
|
315
|
+
user_id,
|
|
316
|
+
company_id,
|
|
317
|
+
params=params,
|
|
318
|
+
),
|
|
319
|
+
)
|
|
320
|
+
|
|
321
|
+
@classmethod
|
|
322
|
+
async def add_users_to_group_async(
|
|
323
|
+
cls,
|
|
324
|
+
user_id: str,
|
|
325
|
+
company_id: str,
|
|
326
|
+
group_id: str,
|
|
327
|
+
**params: Unpack["Group.AddUsersParams"],
|
|
328
|
+
) -> "Group.AddUsersToGroupResponse":
|
|
329
|
+
"""
|
|
330
|
+
Async add users to a group in a company.
|
|
331
|
+
"""
|
|
332
|
+
return cast(
|
|
333
|
+
"Group.AddUsersToGroupResponse",
|
|
334
|
+
await cls._static_request_async(
|
|
335
|
+
"post",
|
|
336
|
+
f"/groups/{group_id}/users",
|
|
337
|
+
user_id,
|
|
338
|
+
company_id,
|
|
339
|
+
params=params,
|
|
340
|
+
),
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
@classmethod
|
|
344
|
+
def remove_users_from_group(
|
|
345
|
+
cls,
|
|
346
|
+
user_id: str,
|
|
347
|
+
company_id: str,
|
|
348
|
+
group_id: str,
|
|
349
|
+
**params: Unpack["Group.RemoveUsersParams"],
|
|
350
|
+
) -> "Group.RemoveUsersFromGroupResponse":
|
|
351
|
+
"""
|
|
352
|
+
Remove users from a group in a company.
|
|
353
|
+
"""
|
|
354
|
+
return cast(
|
|
355
|
+
"Group.RemoveUsersFromGroupResponse",
|
|
356
|
+
cls._static_request(
|
|
357
|
+
"delete",
|
|
358
|
+
f"/groups/{group_id}/users",
|
|
359
|
+
user_id,
|
|
360
|
+
company_id,
|
|
361
|
+
params=params,
|
|
362
|
+
),
|
|
363
|
+
)
|
|
364
|
+
|
|
365
|
+
@classmethod
|
|
366
|
+
async def remove_users_from_group_async(
|
|
367
|
+
cls,
|
|
368
|
+
user_id: str,
|
|
369
|
+
company_id: str,
|
|
370
|
+
group_id: str,
|
|
371
|
+
**params: Unpack["Group.RemoveUsersParams"],
|
|
372
|
+
) -> "Group.RemoveUsersFromGroupResponse":
|
|
373
|
+
"""
|
|
374
|
+
Async remove users from a group in a company.
|
|
375
|
+
"""
|
|
376
|
+
return cast(
|
|
377
|
+
"Group.RemoveUsersFromGroupResponse",
|
|
378
|
+
await cls._static_request_async(
|
|
379
|
+
"delete",
|
|
380
|
+
f"/groups/{group_id}/users",
|
|
381
|
+
user_id,
|
|
382
|
+
company_id,
|
|
383
|
+
params=params,
|
|
384
|
+
),
|
|
385
|
+
)
|
|
386
|
+
|
|
387
|
+
@classmethod
|
|
388
|
+
def update_group_configuration(
|
|
389
|
+
cls,
|
|
390
|
+
user_id: str,
|
|
391
|
+
company_id: str,
|
|
392
|
+
group_id: str,
|
|
393
|
+
**params: Unpack["Group.UpdateGroupConfigurationParams"],
|
|
394
|
+
) -> "Group.GroupWithConfiguration":
|
|
395
|
+
"""
|
|
396
|
+
Update group configuration for the specified group.
|
|
397
|
+
"""
|
|
398
|
+
return cast(
|
|
399
|
+
"Group.GroupWithConfiguration",
|
|
400
|
+
cls._static_request(
|
|
401
|
+
"patch",
|
|
402
|
+
f"/groups/{group_id}/configuration",
|
|
403
|
+
user_id,
|
|
404
|
+
company_id,
|
|
405
|
+
params=params,
|
|
406
|
+
),
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
@classmethod
|
|
410
|
+
async def update_group_configuration_async(
|
|
411
|
+
cls,
|
|
412
|
+
user_id: str,
|
|
413
|
+
company_id: str,
|
|
414
|
+
group_id: str,
|
|
415
|
+
**params: Unpack["Group.UpdateGroupConfigurationParams"],
|
|
416
|
+
) -> "Group.GroupWithConfiguration":
|
|
417
|
+
"""
|
|
418
|
+
Async update group configuration for the specified group.
|
|
419
|
+
"""
|
|
420
|
+
return cast(
|
|
421
|
+
"Group.GroupWithConfiguration",
|
|
422
|
+
await cls._static_request_async(
|
|
423
|
+
"patch",
|
|
424
|
+
f"/groups/{group_id}/configuration",
|
|
425
|
+
user_id,
|
|
426
|
+
company_id,
|
|
427
|
+
params=params,
|
|
428
|
+
),
|
|
429
|
+
)
|
|
@@ -29,6 +29,14 @@ class Space(APIResource["Space"]):
|
|
|
29
29
|
toolChoices: NotRequired[List[str] | None]
|
|
30
30
|
scopeRules: NotRequired[dict | None]
|
|
31
31
|
|
|
32
|
+
class GetChatMessagesParams(RequestOptions):
|
|
33
|
+
"""
|
|
34
|
+
Parameters for getting chat messages.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
skip: NotRequired[int]
|
|
38
|
+
take: NotRequired[int]
|
|
39
|
+
|
|
32
40
|
class Reference(TypedDict):
|
|
33
41
|
"""
|
|
34
42
|
Reference information for a message.
|
|
@@ -86,6 +94,94 @@ class Space(APIResource["Space"]):
|
|
|
86
94
|
|
|
87
95
|
chat_id: str
|
|
88
96
|
|
|
97
|
+
class GetAllMessagesResponse(TypedDict):
|
|
98
|
+
"""
|
|
99
|
+
Response for getting all messages in a chat.
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
messages: List["Space.Message"]
|
|
103
|
+
totalCount: int
|
|
104
|
+
|
|
105
|
+
class AssistantMcpServer(TypedDict):
|
|
106
|
+
"""
|
|
107
|
+
Represents an MCP server associated with an assistant.
|
|
108
|
+
"""
|
|
109
|
+
|
|
110
|
+
id: str
|
|
111
|
+
name: str
|
|
112
|
+
assistantId: str
|
|
113
|
+
mcpServerId: str
|
|
114
|
+
isEnabled: bool
|
|
115
|
+
createdAt: str
|
|
116
|
+
updatedAt: str
|
|
117
|
+
|
|
118
|
+
class Module(TypedDict):
|
|
119
|
+
"""
|
|
120
|
+
Represents a module configured for a space.
|
|
121
|
+
"""
|
|
122
|
+
|
|
123
|
+
id: str
|
|
124
|
+
name: str
|
|
125
|
+
description: Optional[str]
|
|
126
|
+
toolDefinition: Optional[Dict[str, Any]]
|
|
127
|
+
configuration: Dict[str, Any]
|
|
128
|
+
assistantId: str
|
|
129
|
+
weight: int
|
|
130
|
+
isExternal: bool
|
|
131
|
+
isCustomInstructionEnabled: bool
|
|
132
|
+
moduleTemplateId: Optional[str]
|
|
133
|
+
createdAt: str
|
|
134
|
+
updatedAt: str
|
|
135
|
+
|
|
136
|
+
class ScopeRule(TypedDict):
|
|
137
|
+
"""
|
|
138
|
+
Represents a scope rule for a space.
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
id: str
|
|
142
|
+
assistantId: str
|
|
143
|
+
title: str
|
|
144
|
+
companyId: str
|
|
145
|
+
rule: Dict[str, Any]
|
|
146
|
+
isAdvanced: bool
|
|
147
|
+
createdAt: str
|
|
148
|
+
updatedAt: str
|
|
149
|
+
|
|
150
|
+
class AssistantAccess(TypedDict):
|
|
151
|
+
"""
|
|
152
|
+
Represents access control for a space.
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
id: str
|
|
156
|
+
entityId: str
|
|
157
|
+
entityType: str
|
|
158
|
+
type: str
|
|
159
|
+
|
|
160
|
+
id: str
|
|
161
|
+
name: str
|
|
162
|
+
defaultForCompanyId: Optional[str]
|
|
163
|
+
title: Optional[str]
|
|
164
|
+
subtitle: Optional[str]
|
|
165
|
+
explanation: Optional[str]
|
|
166
|
+
alert: Optional[str]
|
|
167
|
+
inputLimit: Optional[int]
|
|
168
|
+
inputPlaceholder: Optional[str]
|
|
169
|
+
chatUpload: str
|
|
170
|
+
goals: List[str]
|
|
171
|
+
languageModel: Optional[str]
|
|
172
|
+
fallbackModule: str
|
|
173
|
+
access: List[str]
|
|
174
|
+
isExternal: bool
|
|
175
|
+
isPinned: bool
|
|
176
|
+
uiType: str
|
|
177
|
+
settings: Optional[Dict[str, Any]]
|
|
178
|
+
assistantMcpServers: List["Space.AssistantMcpServer"]
|
|
179
|
+
modules: List["Space.Module"]
|
|
180
|
+
scopeRules: List["Space.ScopeRule"]
|
|
181
|
+
assistantAccess: List["Space.AssistantAccess"]
|
|
182
|
+
createdAt: str
|
|
183
|
+
updatedAt: str
|
|
184
|
+
|
|
89
185
|
@classmethod
|
|
90
186
|
def create_message(
|
|
91
187
|
cls,
|
|
@@ -130,6 +226,50 @@ class Space(APIResource["Space"]):
|
|
|
130
226
|
),
|
|
131
227
|
)
|
|
132
228
|
|
|
229
|
+
@classmethod
|
|
230
|
+
def get_chat_messages(
|
|
231
|
+
cls,
|
|
232
|
+
user_id: str,
|
|
233
|
+
company_id: str,
|
|
234
|
+
chat_id: str,
|
|
235
|
+
**params: Unpack["Space.GetChatMessagesParams"],
|
|
236
|
+
) -> "Space.GetAllMessagesResponse":
|
|
237
|
+
"""
|
|
238
|
+
Get all messages in a space chat.
|
|
239
|
+
"""
|
|
240
|
+
return cast(
|
|
241
|
+
"Space.GetAllMessagesResponse",
|
|
242
|
+
cls._static_request(
|
|
243
|
+
"get",
|
|
244
|
+
f"/space/chat/{chat_id}/messages",
|
|
245
|
+
user_id,
|
|
246
|
+
company_id,
|
|
247
|
+
params=params,
|
|
248
|
+
),
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
@classmethod
|
|
252
|
+
async def get_chat_messages_async(
|
|
253
|
+
cls,
|
|
254
|
+
user_id: str,
|
|
255
|
+
company_id: str,
|
|
256
|
+
chat_id: str,
|
|
257
|
+
**params: Unpack["Space.GetChatMessagesParams"],
|
|
258
|
+
) -> "Space.GetAllMessagesResponse":
|
|
259
|
+
"""
|
|
260
|
+
Async get all messages in a space chat.
|
|
261
|
+
"""
|
|
262
|
+
return cast(
|
|
263
|
+
"Space.GetAllMessagesResponse",
|
|
264
|
+
await cls._static_request_async(
|
|
265
|
+
"get",
|
|
266
|
+
f"/space/chat/{chat_id}/messages",
|
|
267
|
+
user_id,
|
|
268
|
+
company_id,
|
|
269
|
+
params=params,
|
|
270
|
+
),
|
|
271
|
+
)
|
|
272
|
+
|
|
133
273
|
@classmethod
|
|
134
274
|
def get_latest_message(
|
|
135
275
|
cls, user_id: str, company_id: str, chat_id: str
|
|
@@ -203,3 +343,43 @@ class Space(APIResource["Space"]):
|
|
|
203
343
|
company_id,
|
|
204
344
|
),
|
|
205
345
|
)
|
|
346
|
+
|
|
347
|
+
@classmethod
|
|
348
|
+
def get_space(
|
|
349
|
+
cls,
|
|
350
|
+
user_id: str,
|
|
351
|
+
company_id: str,
|
|
352
|
+
space_id: str,
|
|
353
|
+
) -> "Space":
|
|
354
|
+
"""
|
|
355
|
+
Get detailed information about a space (assistant).
|
|
356
|
+
"""
|
|
357
|
+
return cast(
|
|
358
|
+
"Space",
|
|
359
|
+
cls._static_request(
|
|
360
|
+
"get",
|
|
361
|
+
f"/space/{space_id}",
|
|
362
|
+
user_id,
|
|
363
|
+
company_id,
|
|
364
|
+
),
|
|
365
|
+
)
|
|
366
|
+
|
|
367
|
+
@classmethod
|
|
368
|
+
async def get_space_async(
|
|
369
|
+
cls,
|
|
370
|
+
user_id: str,
|
|
371
|
+
company_id: str,
|
|
372
|
+
space_id: str,
|
|
373
|
+
) -> "Space":
|
|
374
|
+
"""
|
|
375
|
+
Async get detailed information about a space (assistant).
|
|
376
|
+
"""
|
|
377
|
+
return cast(
|
|
378
|
+
"Space",
|
|
379
|
+
await cls._static_request_async(
|
|
380
|
+
"get",
|
|
381
|
+
f"/space/{space_id}",
|
|
382
|
+
user_id,
|
|
383
|
+
company_id,
|
|
384
|
+
),
|
|
385
|
+
)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from typing import (
|
|
2
|
+
Any,
|
|
2
3
|
ClassVar,
|
|
4
|
+
Dict,
|
|
3
5
|
List,
|
|
4
6
|
NotRequired,
|
|
5
7
|
Optional,
|
|
@@ -25,6 +27,13 @@ class User(APIResource["User"]):
|
|
|
25
27
|
email: NotRequired[Optional[str]]
|
|
26
28
|
displayName: NotRequired[Optional[str]]
|
|
27
29
|
|
|
30
|
+
class UpdateUserConfigurationParams(RequestOptions):
|
|
31
|
+
"""
|
|
32
|
+
Parameters for updating user configuration.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
userConfiguration: Dict[str, Any]
|
|
36
|
+
|
|
28
37
|
class User(TypedDict):
|
|
29
38
|
"""
|
|
30
39
|
Represents a user in the company.
|
|
@@ -41,6 +50,13 @@ class User(APIResource["User"]):
|
|
|
41
50
|
createdAt: str
|
|
42
51
|
active: bool
|
|
43
52
|
|
|
53
|
+
class UserWithConfiguration(User):
|
|
54
|
+
"""
|
|
55
|
+
Represents a user in the company with configuration.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
userConfiguration: Dict[str, Any]
|
|
59
|
+
|
|
44
60
|
class Users(TypedDict):
|
|
45
61
|
"""
|
|
46
62
|
Response for getting users.
|
|
@@ -89,3 +105,45 @@ class User(APIResource["User"]):
|
|
|
89
105
|
params=params,
|
|
90
106
|
),
|
|
91
107
|
)
|
|
108
|
+
|
|
109
|
+
@classmethod
|
|
110
|
+
def update_user_configuration(
|
|
111
|
+
cls,
|
|
112
|
+
user_id: str,
|
|
113
|
+
company_id: str,
|
|
114
|
+
**params: Unpack["User.UpdateUserConfigurationParams"],
|
|
115
|
+
) -> "User.UserWithConfiguration":
|
|
116
|
+
"""
|
|
117
|
+
Update user configuration for the current user.
|
|
118
|
+
"""
|
|
119
|
+
return cast(
|
|
120
|
+
"User.UserWithConfiguration",
|
|
121
|
+
cls._static_request(
|
|
122
|
+
"patch",
|
|
123
|
+
f"/users/{user_id}/configuration",
|
|
124
|
+
user_id,
|
|
125
|
+
company_id,
|
|
126
|
+
params=params,
|
|
127
|
+
),
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
@classmethod
|
|
131
|
+
async def update_user_configuration_async(
|
|
132
|
+
cls,
|
|
133
|
+
user_id: str,
|
|
134
|
+
company_id: str,
|
|
135
|
+
**params: Unpack["User.UpdateUserConfigurationParams"],
|
|
136
|
+
) -> "User.UserWithConfiguration":
|
|
137
|
+
"""
|
|
138
|
+
Async update user configuration for the current user.
|
|
139
|
+
"""
|
|
140
|
+
return cast(
|
|
141
|
+
"User.UserWithConfiguration",
|
|
142
|
+
await cls._static_request_async(
|
|
143
|
+
"patch",
|
|
144
|
+
f"/users/{user_id}/configuration",
|
|
145
|
+
user_id,
|
|
146
|
+
company_id,
|
|
147
|
+
params=params,
|
|
148
|
+
),
|
|
149
|
+
)
|
|
@@ -76,6 +76,7 @@ async def chat_against_file(
|
|
|
76
76
|
text: str,
|
|
77
77
|
poll_interval: float = 1.0,
|
|
78
78
|
max_wait: float = 60.0,
|
|
79
|
+
should_delete_chat: bool = True,
|
|
79
80
|
) -> "Space.Message":
|
|
80
81
|
"""
|
|
81
82
|
Chat against a file by uploading it, sending a message and waiting for a reply.
|
|
@@ -140,8 +141,8 @@ async def chat_against_file(
|
|
|
140
141
|
print(f"Error during chat against file: {err}")
|
|
141
142
|
raise
|
|
142
143
|
finally:
|
|
143
|
-
if chat_id:
|
|
144
|
-
Space.
|
|
144
|
+
if chat_id and should_delete_chat:
|
|
145
|
+
await Space.delete_chat_async(
|
|
145
146
|
user_id=user_id,
|
|
146
147
|
company_id=company_id,
|
|
147
148
|
chat_id=chat_id,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_sdk
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.51
|
|
4
4
|
Summary:
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Martin Fadler
|
|
@@ -1138,6 +1138,18 @@ unique_sdk.Folder.get_info(
|
|
|
1138
1138
|
)
|
|
1139
1139
|
```
|
|
1140
1140
|
|
|
1141
|
+
#### `unique_sdk.Folder.get_folder_path` (Compatible with release >.48)
|
|
1142
|
+
|
|
1143
|
+
Get the complete folder path for a given scope ID. Returns the full path string with folder names (e.g., "/company/subfolder1/subfolder2").
|
|
1144
|
+
|
|
1145
|
+
```python
|
|
1146
|
+
folder_path = unique_sdk.Folder.get_folder_path(
|
|
1147
|
+
user_id=user_id,
|
|
1148
|
+
company_id=company_id,
|
|
1149
|
+
scope_id="scope_w78wfn114va9o22s13r03yq",
|
|
1150
|
+
)
|
|
1151
|
+
```
|
|
1152
|
+
|
|
1141
1153
|
#### `unique_sdl.Folder.get_infos`
|
|
1142
1154
|
|
|
1143
1155
|
Get paginated folders info based on parentId. If the parentId is not defined, the root folders will be returned.
|
|
@@ -1392,6 +1404,20 @@ message = unique_sdk.Space.create_message(
|
|
|
1392
1404
|
)
|
|
1393
1405
|
```
|
|
1394
1406
|
|
|
1407
|
+
#### `unique_sdk.Space.get_chat_messages` (Compatible with release >.48)
|
|
1408
|
+
|
|
1409
|
+
Get all messages in a space chat. Returns a list of paginated messages in the specified chat.
|
|
1410
|
+
|
|
1411
|
+
```python
|
|
1412
|
+
messages = unique_sdk.Space.get_chat_messages(
|
|
1413
|
+
user_id=user_id,
|
|
1414
|
+
company_id=company_id,
|
|
1415
|
+
chat_id="chat_dejfhe729br398",
|
|
1416
|
+
skip=0, # Optional (defaults to 0) - number of messages to skip for pagination
|
|
1417
|
+
take=50, # Optional (defaults to 10) - number of messages to return
|
|
1418
|
+
)
|
|
1419
|
+
```
|
|
1420
|
+
|
|
1395
1421
|
#### `unique_sdk.Space.get_latest_message`
|
|
1396
1422
|
|
|
1397
1423
|
Get the latest message in a space chat.
|
|
@@ -1404,6 +1430,18 @@ message = unique_sdk.Space.get_latest_message(
|
|
|
1404
1430
|
)
|
|
1405
1431
|
```
|
|
1406
1432
|
|
|
1433
|
+
#### `unique_sdk.Space.get_space` (Compatible with release >.48)
|
|
1434
|
+
|
|
1435
|
+
Get detailed information about a space, including its configuration, modules and scope rules.
|
|
1436
|
+
|
|
1437
|
+
```python
|
|
1438
|
+
space_info = unique_sdk.Space.get_space(
|
|
1439
|
+
user_id=user_id,
|
|
1440
|
+
company_id=company_id,
|
|
1441
|
+
space_id="assistant_hjcdga64bkcjnhu4",
|
|
1442
|
+
)
|
|
1443
|
+
```
|
|
1444
|
+
|
|
1407
1445
|
#### `unique_sdk.Space.delete_chat`
|
|
1408
1446
|
|
|
1409
1447
|
Delete a space chat by id. If the chat does not exist, the function will return an error.
|
|
@@ -1447,8 +1485,36 @@ users = unique_sdk.User.get_users(
|
|
|
1447
1485
|
)
|
|
1448
1486
|
```
|
|
1449
1487
|
|
|
1488
|
+
#### `unique_sdk.User.update_user_configuration` (Compatible with release >.48)
|
|
1489
|
+
|
|
1490
|
+
Update the user configuration for the current user. The configuration is stored as a JSON object.
|
|
1491
|
+
|
|
1492
|
+
```python
|
|
1493
|
+
updated_user = unique_sdk.User.update_user_configuration(
|
|
1494
|
+
user_id=user_id,
|
|
1495
|
+
company_id=company_id,
|
|
1496
|
+
userConfiguration={ # Required - user configuration object (JSON)
|
|
1497
|
+
{"location": "CH"}
|
|
1498
|
+
}
|
|
1499
|
+
)
|
|
1500
|
+
```
|
|
1501
|
+
|
|
1450
1502
|
### Group
|
|
1451
1503
|
|
|
1504
|
+
#### `unique_sdk.Group.create_group` (Compatible with release >.48)
|
|
1505
|
+
|
|
1506
|
+
Create a new group in a company. You can specify the group name (required), external ID and parent group ID.
|
|
1507
|
+
|
|
1508
|
+
```python
|
|
1509
|
+
group = unique_sdk.Group.create_group(
|
|
1510
|
+
user_id=user_id,
|
|
1511
|
+
company_id=company_id,
|
|
1512
|
+
name="New Group", # Required - the name of the group
|
|
1513
|
+
externalId="ext_123", # Optional - external ID for the group
|
|
1514
|
+
parentId="group_a9cs7wr2z1bg2sxczvltgjch", # Optional - parent group ID
|
|
1515
|
+
)
|
|
1516
|
+
```
|
|
1517
|
+
|
|
1452
1518
|
#### `unique_sdk.Group.get_groups` (Compatible with release >.48)
|
|
1453
1519
|
|
|
1454
1520
|
Get groups in a company. You can filter by name and use pagination with skip and take parameters.
|
|
@@ -1471,11 +1537,52 @@ Update a group in a company. You can update the group's name.
|
|
|
1471
1537
|
updated_group = unique_sdk.Group.update_group(
|
|
1472
1538
|
user_id=user_id,
|
|
1473
1539
|
company_id=company_id,
|
|
1474
|
-
group_id="
|
|
1540
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1475
1541
|
name="New Group Name", # Optional - update the group name
|
|
1476
1542
|
)
|
|
1477
1543
|
```
|
|
1478
1544
|
|
|
1545
|
+
#### `unique_sdk.Group.add_users_to_group` (Compatible with release >.48)
|
|
1546
|
+
|
|
1547
|
+
Add users to a group. Provide an array of user IDs to add as members to the specified group.
|
|
1548
|
+
|
|
1549
|
+
```python
|
|
1550
|
+
result = unique_sdk.Group.add_users_to_group(
|
|
1551
|
+
user_id=user_id,
|
|
1552
|
+
company_id=company_id,
|
|
1553
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1554
|
+
userIds=["299420877169688584", "325402458132058201", "299426678160031752"], # Required - array of user IDs to add
|
|
1555
|
+
)
|
|
1556
|
+
```
|
|
1557
|
+
|
|
1558
|
+
#### `unique_sdk.Group.remove_users_from_group` (Compatible with release >.48)
|
|
1559
|
+
|
|
1560
|
+
Remove users from a group. Provide an array of user IDs to remove from the specified group.
|
|
1561
|
+
|
|
1562
|
+
```python
|
|
1563
|
+
result = unique_sdk.Group.remove_users_from_group(
|
|
1564
|
+
user_id=user_id,
|
|
1565
|
+
company_id=company_id,
|
|
1566
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1567
|
+
userIds=["299426678160031752", "299426678160031752"], # Required - array of user IDs to remove
|
|
1568
|
+
)
|
|
1569
|
+
```
|
|
1570
|
+
|
|
1571
|
+
#### `unique_sdk.Group.update_group_configuration` (Compatible with release >.48)
|
|
1572
|
+
|
|
1573
|
+
Update the group configuration for the specified group. The configuration is stored as a JSON object.
|
|
1574
|
+
|
|
1575
|
+
```python
|
|
1576
|
+
updated_group = unique_sdk.Group.update_group_configuration(
|
|
1577
|
+
user_id=user_id,
|
|
1578
|
+
company_id=company_id,
|
|
1579
|
+
group_id="group_abc123",
|
|
1580
|
+
configuration={ # Required - group configuration object (JSON)
|
|
1581
|
+
{"email": "team@unique.ai"}
|
|
1582
|
+
}
|
|
1583
|
+
)
|
|
1584
|
+
```
|
|
1585
|
+
|
|
1479
1586
|
#### `unique_sdk.Group.delete_group` (Compatible with release >.48)
|
|
1480
1587
|
|
|
1481
1588
|
Delete a group in a company by its group ID.
|
|
@@ -1484,7 +1591,7 @@ Delete a group in a company by its group ID.
|
|
|
1484
1591
|
result = unique_sdk.Group.delete_group(
|
|
1485
1592
|
user_id=user_id,
|
|
1486
1593
|
company_id=company_id,
|
|
1487
|
-
group_id="
|
|
1594
|
+
group_id="group_a9cs7wr2z1bg2sxczvltgjch",
|
|
1488
1595
|
)
|
|
1489
1596
|
```
|
|
1490
1597
|
|
|
@@ -2032,11 +2139,12 @@ You must provide the following parameters:
|
|
|
2032
2139
|
- `mime_type`: The mime type of the ifle to be uploaded.
|
|
2033
2140
|
- `text`: The text to be sent to the chat for chatting against the file.
|
|
2034
2141
|
|
|
2035
|
-
The script creates a chat and uploads the file to it. It then keeps polling the `ingestionState` field of the message, waiting for it to reach `FINISHED`, signaling the upload is complete. Once the file uploads successfully, the script sends the text, continues polling for completion, and finally retrieves the response message.
|
|
2142
|
+
The script creates a chat and uploads the file to it. It then keeps polling the `ingestionState` field of the message, waiting for it to reach `FINISHED`, signaling the upload is complete. Once the file uploads successfully, the script sends the text, continues polling for completion, and finally retrieves the response message. The function deletes the chat at the end unless the `should_delete_chat` is set to false.
|
|
2036
2143
|
|
|
2037
2144
|
**Optional parameters:**
|
|
2038
2145
|
- `poll_interval`: The number of seconds to wait between polling attempts (default: `1` second).
|
|
2039
2146
|
- `max_wait`: The maximum number of seconds to wait for the message to complete (default: `60` seconds).
|
|
2147
|
+
- `should_delete_chat`: Setting this flag determines whether the chat should be deleted at the end or not. Default is True.
|
|
2040
2148
|
|
|
2041
2149
|
Example of chatting against a PDF. (The usage can be extended to any supported file type)
|
|
2042
2150
|
|
|
@@ -2046,8 +2154,8 @@ latest_message = await unique_sdk.utils.chat_in_space.chat_against_file(
|
|
|
2046
2154
|
company_id=company_id,
|
|
2047
2155
|
assistant_id="assistant_hjcdga64bkcjnhu4",
|
|
2048
2156
|
path_to_file="/files/hello.pdf",
|
|
2049
|
-
displayed_filename="hello.pdf"
|
|
2050
|
-
mime_type="application/pdf"
|
|
2157
|
+
displayed_filename="hello.pdf",
|
|
2158
|
+
mime_type="application/pdf",
|
|
2051
2159
|
text="Give me a bullet point summary of the file.",
|
|
2052
2160
|
)
|
|
2053
2161
|
```
|
|
@@ -2093,6 +2201,30 @@ All notable changes to this project will be documented in this file.
|
|
|
2093
2201
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
2094
2202
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
2095
2203
|
|
|
2204
|
+
## [0.10.51] - 2025-11-21
|
|
2205
|
+
- Add function to get a space.
|
|
2206
|
+
|
|
2207
|
+
## [0.10.50] - 2025-11-21
|
|
2208
|
+
- Allow updating the configuration of a user and group.
|
|
2209
|
+
|
|
2210
|
+
## [0.10.49] - 2025-11-21
|
|
2211
|
+
- Add get folder by scope id function
|
|
2212
|
+
|
|
2213
|
+
## [0.10.48] - 2025-11-20
|
|
2214
|
+
- Update Agentic Table LogDetail and LogEntry types.
|
|
2215
|
+
|
|
2216
|
+
## [0.10.47] - 2025-11-19
|
|
2217
|
+
- Add expired/s at fields on content search result.
|
|
2218
|
+
|
|
2219
|
+
## [0.10.46] - 2025-11-18
|
|
2220
|
+
- chat_against_file function allows now a should_delete_chat flag.
|
|
2221
|
+
|
|
2222
|
+
## [0.10.45] - 2025-11-18
|
|
2223
|
+
- Create group and manage users functions.
|
|
2224
|
+
|
|
2225
|
+
## [0.10.44] - 2025-11-18
|
|
2226
|
+
- add function to get all messages in a chat.
|
|
2227
|
+
|
|
2096
2228
|
## [0.10.43] - 2025-11-14
|
|
2097
2229
|
- Add get, delete and update groups functions.
|
|
2098
2230
|
|
|
@@ -15,13 +15,13 @@ unique_sdk/_version.py,sha256=j4_tPC6t3enRds7LqiRuWSyfrYHfEo6CXIDARAWW98I,19
|
|
|
15
15
|
unique_sdk/_webhook.py,sha256=GYxbUibQN_W4XlNTHaMIksT9FQJk4LJmlKcxOu3jqiU,2855
|
|
16
16
|
unique_sdk/api_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
17
|
unique_sdk/api_resources/_acronyms.py,sha256=GIU1XH1flGWQYcpsFqTYwg4ioIGxVmb15tux84nmhEg,891
|
|
18
|
-
unique_sdk/api_resources/_agentic_table.py,sha256=
|
|
18
|
+
unique_sdk/api_resources/_agentic_table.py,sha256=ejYVASkJshxyI89TrC2dMdhwOJ0fEjYOsh1DeTluBO4,9952
|
|
19
19
|
unique_sdk/api_resources/_chat_completion.py,sha256=ILCAffxkbkfh2iV9L4KKnfe80gZmT9pWfkNmf3mq68U,2172
|
|
20
|
-
unique_sdk/api_resources/_content.py,sha256=
|
|
20
|
+
unique_sdk/api_resources/_content.py,sha256=vRynwj4QBZA1v2CVg_xbhmLqqh3m4cPGMoLeFZTaSYA,17543
|
|
21
21
|
unique_sdk/api_resources/_embedding.py,sha256=C6qak7cCUBMBINfPhgH8taCJZ9n6w1MUElqDJJ8dG10,1281
|
|
22
22
|
unique_sdk/api_resources/_event.py,sha256=bpWF9vstdoAWbUzr-iiGP713ceP0zPk77GJXiImf9zg,374
|
|
23
|
-
unique_sdk/api_resources/_folder.py,sha256=
|
|
24
|
-
unique_sdk/api_resources/_group.py,sha256=
|
|
23
|
+
unique_sdk/api_resources/_folder.py,sha256=PRNTsyrtfWnHS8wR1Ls16_iXlNFjOmTjlwxSSjCTrAo,16904
|
|
24
|
+
unique_sdk/api_resources/_group.py,sha256=8A8mSjhWuhFxBA2r_z7q-70miJ_ugz7NAffVwbPu1oo,10302
|
|
25
25
|
unique_sdk/api_resources/_integrated.py,sha256=O8e673z-RB7FRFMQYn_YEuHijebr5W7KJxkUnymbBZk,6164
|
|
26
26
|
unique_sdk/api_resources/_llm_models.py,sha256=3Jn6MpxWgZ43Hze8JHd4_n27si5xmwd3JE8r8cEZq_M,1640
|
|
27
27
|
unique_sdk/api_resources/_mcp.py,sha256=zKh0dyn0QnkKk57N2zlGVN_GQoxEp5T2CS38vVm6jQY,3341
|
|
@@ -32,14 +32,14 @@ unique_sdk/api_resources/_message_log.py,sha256=_DifZ4Di7uKyzkP0i8rwu5IIiYZPCBp5
|
|
|
32
32
|
unique_sdk/api_resources/_search.py,sha256=GQItZKoGNOVZfkLLltBmsRZYBIreRKU0lGW8Kgpj1_Q,1959
|
|
33
33
|
unique_sdk/api_resources/_search_string.py,sha256=LZz2_QPZXV1NXucRR06dnDC2miK7J8XBY7dXX2xoDY4,1610
|
|
34
34
|
unique_sdk/api_resources/_short_term_memory.py,sha256=vPRN-Y0WPx74E6y-A3LocGc0TxJdzT-xGL66WzZwKRg,2820
|
|
35
|
-
unique_sdk/api_resources/_space.py,sha256=
|
|
36
|
-
unique_sdk/api_resources/_user.py,sha256=
|
|
35
|
+
unique_sdk/api_resources/_space.py,sha256=YfAywlTl0BUtl3U6Zml9CRyWqhrFeKCoo15mYmynErw,9380
|
|
36
|
+
unique_sdk/api_resources/_user.py,sha256=CAIT1GOk-knaLLIofl73O3WVGc_zeUv5XjqhuYcgD50,3522
|
|
37
37
|
unique_sdk/utils/chat_history.py,sha256=5UqL9hF1O9pV7skbNOlEibF5rHdYsmG3m5-YEPUowOs,3037
|
|
38
|
-
unique_sdk/utils/chat_in_space.py,sha256=
|
|
38
|
+
unique_sdk/utils/chat_in_space.py,sha256=e_Ny03eB7Q8oijdUR_sPlFTIgq2rsCbSR-Sin8jnxM8,6066
|
|
39
39
|
unique_sdk/utils/file_io.py,sha256=lskRULIh7qExK26o_1YqRs0f5mqJHTS9m_mdxlsVo4s,4497
|
|
40
40
|
unique_sdk/utils/sources.py,sha256=DoxxhMLcLhmDfNarjXa41H4JD2GSSDywr71hiC-4pYc,4952
|
|
41
41
|
unique_sdk/utils/token.py,sha256=AzKuAA1AwBtnvSFxGcsHLpxXr_wWE5Mj4jYBbOz2ljA,1740
|
|
42
|
-
unique_sdk-0.10.
|
|
43
|
-
unique_sdk-0.10.
|
|
44
|
-
unique_sdk-0.10.
|
|
45
|
-
unique_sdk-0.10.
|
|
42
|
+
unique_sdk-0.10.51.dist-info/LICENSE,sha256=EJCWoHgrXVBUb47PnjeV4MFIEOR71MAdCOIgv61J-4k,1065
|
|
43
|
+
unique_sdk-0.10.51.dist-info/METADATA,sha256=cxsS4dYfr_-0nfPYemOmvufXO9XpbinIasdMkyQMqag,75966
|
|
44
|
+
unique_sdk-0.10.51.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
45
|
+
unique_sdk-0.10.51.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|