unique_sdk 0.10.47__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.
@@ -19,8 +19,7 @@ class AgenticTableSheetState(StrEnum):
19
19
 
20
20
 
21
21
  class LogDetail(TypedDict, total=False):
22
- text: str
23
- messageId: str | None
22
+ llmRequest: list[dict] | None
24
23
 
25
24
 
26
25
  class LogEntry(TypedDict):
@@ -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,
@@ -55,6 +57,13 @@ class Group(APIResource["Group"]):
55
57
 
56
58
  userIds: List[str]
57
59
 
60
+ class UpdateGroupConfigurationParams(RequestOptions):
61
+ """
62
+ Parameters for updating group configuration.
63
+ """
64
+
65
+ configuration: Dict[str, Any]
66
+
58
67
  class GroupMember(TypedDict):
59
68
  """
60
69
  Represents a member of a group.
@@ -84,6 +93,13 @@ class Group(APIResource["Group"]):
84
93
  createdAt: str
85
94
  updatedAt: str
86
95
 
96
+ class GroupWithConfiguration(Group):
97
+ """
98
+ Represents a group in the company with configuration.
99
+ """
100
+
101
+ configuration: Dict[str, Any]
102
+
87
103
  class Groups(TypedDict):
88
104
  """
89
105
  Response for getting groups.
@@ -367,3 +383,47 @@ class Group(APIResource["Group"]):
367
383
  params=params,
368
384
  ),
369
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
+ )
@@ -102,6 +102,86 @@ class Space(APIResource["Space"]):
102
102
  messages: List["Space.Message"]
103
103
  totalCount: int
104
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
+
105
185
  @classmethod
106
186
  def create_message(
107
187
  cls,
@@ -263,3 +343,43 @@ class Space(APIResource["Space"]):
263
343
  company_id,
264
344
  ),
265
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
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_sdk
3
- Version: 0.10.47
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.
@@ -1418,6 +1430,18 @@ message = unique_sdk.Space.get_latest_message(
1418
1430
  )
1419
1431
  ```
1420
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
+
1421
1445
  #### `unique_sdk.Space.delete_chat`
1422
1446
 
1423
1447
  Delete a space chat by id. If the chat does not exist, the function will return an error.
@@ -1461,6 +1485,20 @@ users = unique_sdk.User.get_users(
1461
1485
  )
1462
1486
  ```
1463
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
+
1464
1502
  ### Group
1465
1503
 
1466
1504
  #### `unique_sdk.Group.create_group` (Compatible with release >.48)
@@ -1530,6 +1568,21 @@ result = unique_sdk.Group.remove_users_from_group(
1530
1568
  )
1531
1569
  ```
1532
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
+
1533
1586
  #### `unique_sdk.Group.delete_group` (Compatible with release >.48)
1534
1587
 
1535
1588
  Delete a group in a company by its group ID.
@@ -2148,6 +2201,18 @@ All notable changes to this project will be documented in this file.
2148
2201
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2149
2202
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
2150
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
+
2151
2216
  ## [0.10.47] - 2025-11-19
2152
2217
  - Add expired/s at fields on content search result.
2153
2218
 
@@ -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=8-_f7t-m_iiiOj2835iESoxz91YRxl4-tkxpzQbgdcI,9958
18
+ unique_sdk/api_resources/_agentic_table.py,sha256=ejYVASkJshxyI89TrC2dMdhwOJ0fEjYOsh1DeTluBO4,9952
19
19
  unique_sdk/api_resources/_chat_completion.py,sha256=ILCAffxkbkfh2iV9L4KKnfe80gZmT9pWfkNmf3mq68U,2172
20
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=WPyRPsdAE62tU7p4hEYiVB4OoArv_60b8t4j7hgrJKk,15765
24
- unique_sdk/api_resources/_group.py,sha256=KnuUkk9RxNPLTMBShCxJxNKcfx90yogt4BNoGU5lmRk,8685
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=yQGoK3o8YbaEdoJvrWzx97Rbx_kdhRKNVsE1jdw_a5E,6580
36
- unique_sdk/api_resources/_user.py,sha256=u59Hgq9i-QhYlqIYgk-KE7OeSx5xuNVo_gUgDpZTLcI,1974
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
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.47.dist-info/LICENSE,sha256=EJCWoHgrXVBUb47PnjeV4MFIEOR71MAdCOIgv61J-4k,1065
43
- unique_sdk-0.10.47.dist-info/METADATA,sha256=EwP9zbqw4sD462AvIvxAElpPxcbtdY27fePcUE9SdOY,74141
44
- unique_sdk-0.10.47.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
45
- unique_sdk-0.10.47.dist-info/RECORD,,
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,,