unique_sdk 0.10.32__tar.gz → 0.10.38__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.
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/CHANGELOG.md +18 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/PKG-INFO +233 -5
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/README.md +214 -4
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/pyproject.toml +3 -1
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_content.py +12 -10
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_folder.py +8 -4
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_message.py +2 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_message_execution.py +13 -10
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_message_log.py +13 -10
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_space.py +4 -3
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/utils/file_io.py +4 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/LICENSE +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/__init__.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_api_requestor.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_api_resource.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_api_version.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_error.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_http_client.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_list_object.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_object_classes.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_request_options.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_unique_object.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_unique_ql.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_unique_response.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_util.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_version.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/_webhook.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/__init__.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_acronyms.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_agentic_table.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_chat_completion.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_embedding.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_event.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_integrated.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_mcp.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_message_assessment.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_search.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_search_string.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/api_resources/_short_term_memory.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/utils/chat_history.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/utils/chat_in_space.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/utils/sources.py +0 -0
- {unique_sdk-0.10.32 → unique_sdk-0.10.38}/unique_sdk/utils/token.py +0 -0
|
@@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.10.38] - 2025-11-06
|
|
9
|
+
- Add description property to Reference and Content.
|
|
10
|
+
|
|
11
|
+
## [0.10.37] - 2025-11-04
|
|
12
|
+
- Introduce local integration tests for Content API Resource
|
|
13
|
+
|
|
14
|
+
## [0.10.36] - 2025-11-04
|
|
15
|
+
- Introduce local integration tests for Folder API Resource
|
|
16
|
+
|
|
17
|
+
## [0.10.35] - 2025-11-04
|
|
18
|
+
- Inmprove folder get infos types.
|
|
19
|
+
|
|
20
|
+
## [0.10.34] - 2025-10-29
|
|
21
|
+
- Add documentation for agentic table.
|
|
22
|
+
|
|
23
|
+
## [0.10.33] - 2025-10-27
|
|
24
|
+
- Improve messagelog and message execution types.
|
|
25
|
+
|
|
8
26
|
## [0.10.32] - 2025-10-14
|
|
9
27
|
- Add function to stream to chat frontend.
|
|
10
28
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_sdk
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.38
|
|
4
4
|
Summary:
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Martin Fadler
|
|
@@ -42,6 +42,7 @@ The Unique Python SDK provides access to the public API of Unique AI. It also en
|
|
|
42
42
|
- [Message Assessment](#message-assessment)
|
|
43
43
|
- [Folder](#folder)
|
|
44
44
|
- [Space](#space)
|
|
45
|
+
- [Agentic Table](#agentic-table)
|
|
45
46
|
6. [UniqueQL](#uniqueql)
|
|
46
47
|
- [Query Structure](#uniqueql-query-structure)
|
|
47
48
|
- [Metadata Filtering](#metadata-filtering)
|
|
@@ -259,6 +260,7 @@ unique_sdk.Message.modify(
|
|
|
259
260
|
- [Message Assessment](#message-assessment)
|
|
260
261
|
- [Folder](#folder)
|
|
261
262
|
- [Space](#space)
|
|
263
|
+
- [Agentic Table](#agentic-table)
|
|
262
264
|
|
|
263
265
|
Most of the API services provide an asynchronous version of the method. The async methods are suffixed with `_async`.
|
|
264
266
|
|
|
@@ -475,6 +477,7 @@ def upload_file(
|
|
|
475
477
|
path_to_file,
|
|
476
478
|
displayed_filename,
|
|
477
479
|
mimeType,
|
|
480
|
+
description=None,
|
|
478
481
|
scope_or_unique_path,
|
|
479
482
|
ingestion_config=None,
|
|
480
483
|
metadata=None,
|
|
@@ -487,6 +490,7 @@ def upload_file(
|
|
|
487
490
|
"key": displayed_filename,
|
|
488
491
|
"title": displayed_filename,
|
|
489
492
|
"mimeType": mimeType,
|
|
493
|
+
"description": description,
|
|
490
494
|
"ingestionConfig": ingestionConfig,
|
|
491
495
|
"metadata": metadata,
|
|
492
496
|
},
|
|
@@ -513,6 +517,7 @@ def upload_file(
|
|
|
513
517
|
"key": displayed_filename,
|
|
514
518
|
"title": displayed_filename,
|
|
515
519
|
"mimeType": mimeType,
|
|
520
|
+
"description": description,
|
|
516
521
|
"byteSize": size,
|
|
517
522
|
"ingestionConfig": ingestionConfig,
|
|
518
523
|
"metadata": metadata,
|
|
@@ -890,10 +895,7 @@ msg_execution = unique_sdk.MessageExecution.create(
|
|
|
890
895
|
user_id=user_id,
|
|
891
896
|
company_id=company_id,
|
|
892
897
|
messageId="msg_a0jgnt1jrqv143uzr750waxw",
|
|
893
|
-
chatId="chat_nx21havszl1skchd7544oykh",
|
|
894
898
|
type="DEEP_RESEARCH",
|
|
895
|
-
secondsRemaining=None, # optional, number defining the seconds remaining
|
|
896
|
-
percentageCompleted=None, # optional, number defining the percentage completed
|
|
897
899
|
)
|
|
898
900
|
```
|
|
899
901
|
|
|
@@ -918,7 +920,7 @@ msg_execution = unique_sdk.MessageExecution.update(
|
|
|
918
920
|
user_id=user_id,
|
|
919
921
|
company_id=company_id,
|
|
920
922
|
messageId="msg_a0jgnt1jrqv143uzr750waxw",
|
|
921
|
-
status="COMPLETED", # one of: COMPLETED, FAILED
|
|
923
|
+
status="COMPLETED", # optional, one of: COMPLETED, FAILED - not specifying the status will have no effect over the status
|
|
922
924
|
secondsRemaining=55, # optional, number defining the seconds remaining
|
|
923
925
|
percentageCompleted=10, # optional, number defining the percentage completed
|
|
924
926
|
)
|
|
@@ -1372,6 +1374,214 @@ unique_sdk.Space.delete_chat(
|
|
|
1372
1374
|
)
|
|
1373
1375
|
```
|
|
1374
1376
|
|
|
1377
|
+
### Agentic Table
|
|
1378
|
+
|
|
1379
|
+
The Agentic Table (Magic Table) API provides functionality for managing interactive tables with AI-powered cells, activity tracking, and metadata management.
|
|
1380
|
+
|
|
1381
|
+
#### `unique_sdk.AgenticTable.set_cell`
|
|
1382
|
+
|
|
1383
|
+
Set the content of a specific cell in the magic table. This method allows you to update cell text and optionally add log entries to track changes.
|
|
1384
|
+
|
|
1385
|
+
```python
|
|
1386
|
+
cell = await unique_sdk.AgenticTable.set_cell(
|
|
1387
|
+
user_id=user_id,
|
|
1388
|
+
company_id=company_id,
|
|
1389
|
+
tableId="sheet_abc123",
|
|
1390
|
+
rowOrder=0,
|
|
1391
|
+
columnOrder=1,
|
|
1392
|
+
text="Updated cell content",
|
|
1393
|
+
logEntries=[ # optional
|
|
1394
|
+
{
|
|
1395
|
+
"text": "Cell updated by automation",
|
|
1396
|
+
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
1397
|
+
"actorType": "SYSTEM", # One of: "USER", "SYSTEM", "ASSISTANT", "TOOL"
|
|
1398
|
+
"messageId": "msg_123", # optional
|
|
1399
|
+
"details": [ # optional
|
|
1400
|
+
{
|
|
1401
|
+
"text": "Processing completed",
|
|
1402
|
+
"messageId": "msg_456" # optional
|
|
1403
|
+
}
|
|
1404
|
+
]
|
|
1405
|
+
}
|
|
1406
|
+
]
|
|
1407
|
+
)
|
|
1408
|
+
```
|
|
1409
|
+
|
|
1410
|
+
#### `unique_sdk.AgenticTable.get_cell`
|
|
1411
|
+
|
|
1412
|
+
Retrieve the content and metadata of a specific cell.
|
|
1413
|
+
|
|
1414
|
+
```python
|
|
1415
|
+
cell = await unique_sdk.AgenticTable.get_cell(
|
|
1416
|
+
user_id=user_id,
|
|
1417
|
+
company_id=company_id,
|
|
1418
|
+
tableId="sheet_abc123",
|
|
1419
|
+
rowOrder=0,
|
|
1420
|
+
columnOrder=1,
|
|
1421
|
+
)
|
|
1422
|
+
```
|
|
1423
|
+
|
|
1424
|
+
#### `unique_sdk.AgenticTable.set_multiple_cells`
|
|
1425
|
+
|
|
1426
|
+
Bulk update multiple cells in a single operation for better performance.
|
|
1427
|
+
|
|
1428
|
+
```python
|
|
1429
|
+
result = await unique_sdk.AgenticTable.set_multiple_cells(
|
|
1430
|
+
user_id=user_id,
|
|
1431
|
+
company_id=company_id,
|
|
1432
|
+
tableId="sheet_abc123",
|
|
1433
|
+
cells=[
|
|
1434
|
+
{
|
|
1435
|
+
"rowOrder": 0,
|
|
1436
|
+
"columnOrder": 0,
|
|
1437
|
+
"text": "Cell A1"
|
|
1438
|
+
},
|
|
1439
|
+
{
|
|
1440
|
+
"rowOrder": 0,
|
|
1441
|
+
"columnOrder": 1,
|
|
1442
|
+
"text": "Cell B1"
|
|
1443
|
+
},
|
|
1444
|
+
{
|
|
1445
|
+
"rowOrder": 1,
|
|
1446
|
+
"columnOrder": 0,
|
|
1447
|
+
"text": "Cell A2"
|
|
1448
|
+
}
|
|
1449
|
+
]
|
|
1450
|
+
)
|
|
1451
|
+
```
|
|
1452
|
+
|
|
1453
|
+
#### `unique_sdk.AgenticTable.get_sheet_data`
|
|
1454
|
+
|
|
1455
|
+
Retrieve comprehensive data about a magic table sheet, including cells, log history, and metadata.
|
|
1456
|
+
|
|
1457
|
+
```python
|
|
1458
|
+
sheet = await unique_sdk.AgenticTable.get_sheet_data(
|
|
1459
|
+
user_id=user_id,
|
|
1460
|
+
company_id=company_id,
|
|
1461
|
+
tableId="sheet_abc123",
|
|
1462
|
+
includeCells=True, # optional
|
|
1463
|
+
includeLogHistory=True, # optional
|
|
1464
|
+
includeRowCount=True, # optional
|
|
1465
|
+
includeCellMetaData=True, # optional
|
|
1466
|
+
startRow=0, # optional: specify row range
|
|
1467
|
+
endRow=10 # optional: specify row range
|
|
1468
|
+
)
|
|
1469
|
+
```
|
|
1470
|
+
|
|
1471
|
+
#### `unique_sdk.AgenticTable.get_sheet_state`
|
|
1472
|
+
|
|
1473
|
+
Get the current state of a magic table sheet.
|
|
1474
|
+
|
|
1475
|
+
```python
|
|
1476
|
+
state = await unique_sdk.AgenticTable.get_sheet_state(
|
|
1477
|
+
user_id=user_id,
|
|
1478
|
+
company_id=company_id,
|
|
1479
|
+
tableId="sheet_abc123"
|
|
1480
|
+
)
|
|
1481
|
+
# Returns: "PROCESSING", "IDLE", or "STOPPED_BY_USER"
|
|
1482
|
+
```
|
|
1483
|
+
|
|
1484
|
+
#### `unique_sdk.AgenticTable.update_sheet_state`
|
|
1485
|
+
|
|
1486
|
+
Update the name or state of a magic table sheet.
|
|
1487
|
+
|
|
1488
|
+
```python
|
|
1489
|
+
result = await unique_sdk.AgenticTable.update_sheet_state(
|
|
1490
|
+
user_id=user_id,
|
|
1491
|
+
company_id=company_id,
|
|
1492
|
+
tableId="sheet_abc123",
|
|
1493
|
+
name="Updated Sheet Name", # optional
|
|
1494
|
+
state="IDLE" # optional, one of: "PROCESSING", "IDLE", "STOPPED_BY_USER"
|
|
1495
|
+
)
|
|
1496
|
+
```
|
|
1497
|
+
|
|
1498
|
+
#### `unique_sdk.AgenticTable.set_activity`
|
|
1499
|
+
|
|
1500
|
+
Set the status of an activity on the magic table sheet. This is useful for tracking long-running operations.
|
|
1501
|
+
|
|
1502
|
+
```python
|
|
1503
|
+
result = await unique_sdk.AgenticTable.set_activity(
|
|
1504
|
+
user_id=user_id,
|
|
1505
|
+
company_id=company_id,
|
|
1506
|
+
tableId="sheet_abc123",
|
|
1507
|
+
activity="UpdateCell",
|
|
1508
|
+
# activity: one of "DeleteRow", "DeleteColumn", "UpdateCell", "AddQuestionText",
|
|
1509
|
+
# "AddMetaData", "GenerateArtifact", "SheetCompleted", "LibrarySheetRowVerified"
|
|
1510
|
+
status="IN_PROGRESS",
|
|
1511
|
+
# status: one of "IN_PROGRESS", "COMPLETED", "FAILED"
|
|
1512
|
+
text="Updating cells with AI-generated content"
|
|
1513
|
+
)
|
|
1514
|
+
```
|
|
1515
|
+
|
|
1516
|
+
#### `unique_sdk.AgenticTable.set_artifact`
|
|
1517
|
+
|
|
1518
|
+
Attach an artifact (such as a generated document) to the magic table sheet.
|
|
1519
|
+
|
|
1520
|
+
```python
|
|
1521
|
+
result = await unique_sdk.AgenticTable.set_artifact(
|
|
1522
|
+
user_id=user_id,
|
|
1523
|
+
company_id=company_id,
|
|
1524
|
+
tableId="sheet_abc123",
|
|
1525
|
+
name="Generated Report",
|
|
1526
|
+
contentId="cont_xyz789",
|
|
1527
|
+
mimeType="application/pdf",
|
|
1528
|
+
artifactType="FULL_REPORT" # One of: "QUESTIONS", "FULL_REPORT"
|
|
1529
|
+
)
|
|
1530
|
+
```
|
|
1531
|
+
|
|
1532
|
+
#### `unique_sdk.AgenticTable.set_column_metadata`
|
|
1533
|
+
|
|
1534
|
+
Configure metadata for a specific column, including width, filters, and cell renderers.
|
|
1535
|
+
|
|
1536
|
+
```python
|
|
1537
|
+
result = await unique_sdk.AgenticTable.set_column_metadata(
|
|
1538
|
+
user_id=user_id,
|
|
1539
|
+
company_id=company_id,
|
|
1540
|
+
tableId="sheet_abc123",
|
|
1541
|
+
columnOrder=2,
|
|
1542
|
+
columnWidth=200, # optional
|
|
1543
|
+
filter="ValueMatchFilter", # optional
|
|
1544
|
+
# filter: one of "ValueMatchFilter", "PartialMatchFilter", "ReferenceFilter",
|
|
1545
|
+
# "HallucinationFilter", "ReviewStatusFilter", "AssigneeFilter"
|
|
1546
|
+
cellRenderer="CheckboxLockCellRenderer", # optional
|
|
1547
|
+
# cellRenderer: one of "CheckboxLockCellRenderer", "CollaboratorDropdown",
|
|
1548
|
+
# "ReviewStatusDropdown", "CustomCellRenderer", "SelectableCellRenderer"
|
|
1549
|
+
editable=True # optional
|
|
1550
|
+
)
|
|
1551
|
+
```
|
|
1552
|
+
|
|
1553
|
+
#### `unique_sdk.AgenticTable.set_cell_metadata`
|
|
1554
|
+
|
|
1555
|
+
Set metadata for a specific cell, including selection status and agreement status.
|
|
1556
|
+
|
|
1557
|
+
```python
|
|
1558
|
+
result = await unique_sdk.AgenticTable.set_cell_metadata(
|
|
1559
|
+
user_id=user_id,
|
|
1560
|
+
company_id=company_id,
|
|
1561
|
+
tableId="sheet_abc123",
|
|
1562
|
+
rowOrder=0,
|
|
1563
|
+
columnOrder=1,
|
|
1564
|
+
selected=True, # optional
|
|
1565
|
+
selectionMethod="MANUAL", # optional, one of: "DEFAULT", "MANUAL"
|
|
1566
|
+
agreementStatus="MATCH" # optional, one of: "MATCH", "NO_MATCH"
|
|
1567
|
+
)
|
|
1568
|
+
```
|
|
1569
|
+
|
|
1570
|
+
#### `unique_sdk.AgenticTable.bulk_update_status`
|
|
1571
|
+
|
|
1572
|
+
Update the verification status of multiple rows at once.
|
|
1573
|
+
|
|
1574
|
+
```python
|
|
1575
|
+
result = await unique_sdk.AgenticTable.bulk_update_status(
|
|
1576
|
+
user_id=user_id,
|
|
1577
|
+
company_id=company_id,
|
|
1578
|
+
tableId="sheet_abc123",
|
|
1579
|
+
rowOrders=[0, 1, 2, 3, 4],
|
|
1580
|
+
status="VERIFIED"
|
|
1581
|
+
# status: one of "NEED_REVIEW", "READY_FOR_VERIFICATION", "VERIFIED"
|
|
1582
|
+
)
|
|
1583
|
+
```
|
|
1584
|
+
|
|
1375
1585
|
## UniqueQL
|
|
1376
1586
|
|
|
1377
1587
|
[UniqueQL](https://unique-ch.atlassian.net/wiki/x/coAXHQ) is an advanced query language designed to enhance search capabilities within various search modes such as Vector, Full-Text Search (FTS), and Combined. This query language enables users to perform detailed searches by filtering through metadata attributes like filenames, URLs, dates, and more. UniqueQL is versatile and can be translated into different query formats for various database systems, including PostgreSQL and Qdrant.
|
|
@@ -1769,6 +1979,24 @@ All notable changes to this project will be documented in this file.
|
|
|
1769
1979
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
1770
1980
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
1771
1981
|
|
|
1982
|
+
## [0.10.38] - 2025-11-06
|
|
1983
|
+
- Add description property to Reference and Content.
|
|
1984
|
+
|
|
1985
|
+
## [0.10.37] - 2025-11-04
|
|
1986
|
+
- Introduce local integration tests for Content API Resource
|
|
1987
|
+
|
|
1988
|
+
## [0.10.36] - 2025-11-04
|
|
1989
|
+
- Introduce local integration tests for Folder API Resource
|
|
1990
|
+
|
|
1991
|
+
## [0.10.35] - 2025-11-04
|
|
1992
|
+
- Inmprove folder get infos types.
|
|
1993
|
+
|
|
1994
|
+
## [0.10.34] - 2025-10-29
|
|
1995
|
+
- Add documentation for agentic table.
|
|
1996
|
+
|
|
1997
|
+
## [0.10.33] - 2025-10-27
|
|
1998
|
+
- Improve messagelog and message execution types.
|
|
1999
|
+
|
|
1772
2000
|
## [0.10.32] - 2025-10-14
|
|
1773
2001
|
- Add function to stream to chat frontend.
|
|
1774
2002
|
|
|
@@ -24,6 +24,7 @@ The Unique Python SDK provides access to the public API of Unique AI. It also en
|
|
|
24
24
|
- [Message Assessment](#message-assessment)
|
|
25
25
|
- [Folder](#folder)
|
|
26
26
|
- [Space](#space)
|
|
27
|
+
- [Agentic Table](#agentic-table)
|
|
27
28
|
6. [UniqueQL](#uniqueql)
|
|
28
29
|
- [Query Structure](#uniqueql-query-structure)
|
|
29
30
|
- [Metadata Filtering](#metadata-filtering)
|
|
@@ -241,6 +242,7 @@ unique_sdk.Message.modify(
|
|
|
241
242
|
- [Message Assessment](#message-assessment)
|
|
242
243
|
- [Folder](#folder)
|
|
243
244
|
- [Space](#space)
|
|
245
|
+
- [Agentic Table](#agentic-table)
|
|
244
246
|
|
|
245
247
|
Most of the API services provide an asynchronous version of the method. The async methods are suffixed with `_async`.
|
|
246
248
|
|
|
@@ -457,6 +459,7 @@ def upload_file(
|
|
|
457
459
|
path_to_file,
|
|
458
460
|
displayed_filename,
|
|
459
461
|
mimeType,
|
|
462
|
+
description=None,
|
|
460
463
|
scope_or_unique_path,
|
|
461
464
|
ingestion_config=None,
|
|
462
465
|
metadata=None,
|
|
@@ -469,6 +472,7 @@ def upload_file(
|
|
|
469
472
|
"key": displayed_filename,
|
|
470
473
|
"title": displayed_filename,
|
|
471
474
|
"mimeType": mimeType,
|
|
475
|
+
"description": description,
|
|
472
476
|
"ingestionConfig": ingestionConfig,
|
|
473
477
|
"metadata": metadata,
|
|
474
478
|
},
|
|
@@ -495,6 +499,7 @@ def upload_file(
|
|
|
495
499
|
"key": displayed_filename,
|
|
496
500
|
"title": displayed_filename,
|
|
497
501
|
"mimeType": mimeType,
|
|
502
|
+
"description": description,
|
|
498
503
|
"byteSize": size,
|
|
499
504
|
"ingestionConfig": ingestionConfig,
|
|
500
505
|
"metadata": metadata,
|
|
@@ -872,10 +877,7 @@ msg_execution = unique_sdk.MessageExecution.create(
|
|
|
872
877
|
user_id=user_id,
|
|
873
878
|
company_id=company_id,
|
|
874
879
|
messageId="msg_a0jgnt1jrqv143uzr750waxw",
|
|
875
|
-
chatId="chat_nx21havszl1skchd7544oykh",
|
|
876
880
|
type="DEEP_RESEARCH",
|
|
877
|
-
secondsRemaining=None, # optional, number defining the seconds remaining
|
|
878
|
-
percentageCompleted=None, # optional, number defining the percentage completed
|
|
879
881
|
)
|
|
880
882
|
```
|
|
881
883
|
|
|
@@ -900,7 +902,7 @@ msg_execution = unique_sdk.MessageExecution.update(
|
|
|
900
902
|
user_id=user_id,
|
|
901
903
|
company_id=company_id,
|
|
902
904
|
messageId="msg_a0jgnt1jrqv143uzr750waxw",
|
|
903
|
-
status="COMPLETED", # one of: COMPLETED, FAILED
|
|
905
|
+
status="COMPLETED", # optional, one of: COMPLETED, FAILED - not specifying the status will have no effect over the status
|
|
904
906
|
secondsRemaining=55, # optional, number defining the seconds remaining
|
|
905
907
|
percentageCompleted=10, # optional, number defining the percentage completed
|
|
906
908
|
)
|
|
@@ -1354,6 +1356,214 @@ unique_sdk.Space.delete_chat(
|
|
|
1354
1356
|
)
|
|
1355
1357
|
```
|
|
1356
1358
|
|
|
1359
|
+
### Agentic Table
|
|
1360
|
+
|
|
1361
|
+
The Agentic Table (Magic Table) API provides functionality for managing interactive tables with AI-powered cells, activity tracking, and metadata management.
|
|
1362
|
+
|
|
1363
|
+
#### `unique_sdk.AgenticTable.set_cell`
|
|
1364
|
+
|
|
1365
|
+
Set the content of a specific cell in the magic table. This method allows you to update cell text and optionally add log entries to track changes.
|
|
1366
|
+
|
|
1367
|
+
```python
|
|
1368
|
+
cell = await unique_sdk.AgenticTable.set_cell(
|
|
1369
|
+
user_id=user_id,
|
|
1370
|
+
company_id=company_id,
|
|
1371
|
+
tableId="sheet_abc123",
|
|
1372
|
+
rowOrder=0,
|
|
1373
|
+
columnOrder=1,
|
|
1374
|
+
text="Updated cell content",
|
|
1375
|
+
logEntries=[ # optional
|
|
1376
|
+
{
|
|
1377
|
+
"text": "Cell updated by automation",
|
|
1378
|
+
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
1379
|
+
"actorType": "SYSTEM", # One of: "USER", "SYSTEM", "ASSISTANT", "TOOL"
|
|
1380
|
+
"messageId": "msg_123", # optional
|
|
1381
|
+
"details": [ # optional
|
|
1382
|
+
{
|
|
1383
|
+
"text": "Processing completed",
|
|
1384
|
+
"messageId": "msg_456" # optional
|
|
1385
|
+
}
|
|
1386
|
+
]
|
|
1387
|
+
}
|
|
1388
|
+
]
|
|
1389
|
+
)
|
|
1390
|
+
```
|
|
1391
|
+
|
|
1392
|
+
#### `unique_sdk.AgenticTable.get_cell`
|
|
1393
|
+
|
|
1394
|
+
Retrieve the content and metadata of a specific cell.
|
|
1395
|
+
|
|
1396
|
+
```python
|
|
1397
|
+
cell = await unique_sdk.AgenticTable.get_cell(
|
|
1398
|
+
user_id=user_id,
|
|
1399
|
+
company_id=company_id,
|
|
1400
|
+
tableId="sheet_abc123",
|
|
1401
|
+
rowOrder=0,
|
|
1402
|
+
columnOrder=1,
|
|
1403
|
+
)
|
|
1404
|
+
```
|
|
1405
|
+
|
|
1406
|
+
#### `unique_sdk.AgenticTable.set_multiple_cells`
|
|
1407
|
+
|
|
1408
|
+
Bulk update multiple cells in a single operation for better performance.
|
|
1409
|
+
|
|
1410
|
+
```python
|
|
1411
|
+
result = await unique_sdk.AgenticTable.set_multiple_cells(
|
|
1412
|
+
user_id=user_id,
|
|
1413
|
+
company_id=company_id,
|
|
1414
|
+
tableId="sheet_abc123",
|
|
1415
|
+
cells=[
|
|
1416
|
+
{
|
|
1417
|
+
"rowOrder": 0,
|
|
1418
|
+
"columnOrder": 0,
|
|
1419
|
+
"text": "Cell A1"
|
|
1420
|
+
},
|
|
1421
|
+
{
|
|
1422
|
+
"rowOrder": 0,
|
|
1423
|
+
"columnOrder": 1,
|
|
1424
|
+
"text": "Cell B1"
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
"rowOrder": 1,
|
|
1428
|
+
"columnOrder": 0,
|
|
1429
|
+
"text": "Cell A2"
|
|
1430
|
+
}
|
|
1431
|
+
]
|
|
1432
|
+
)
|
|
1433
|
+
```
|
|
1434
|
+
|
|
1435
|
+
#### `unique_sdk.AgenticTable.get_sheet_data`
|
|
1436
|
+
|
|
1437
|
+
Retrieve comprehensive data about a magic table sheet, including cells, log history, and metadata.
|
|
1438
|
+
|
|
1439
|
+
```python
|
|
1440
|
+
sheet = await unique_sdk.AgenticTable.get_sheet_data(
|
|
1441
|
+
user_id=user_id,
|
|
1442
|
+
company_id=company_id,
|
|
1443
|
+
tableId="sheet_abc123",
|
|
1444
|
+
includeCells=True, # optional
|
|
1445
|
+
includeLogHistory=True, # optional
|
|
1446
|
+
includeRowCount=True, # optional
|
|
1447
|
+
includeCellMetaData=True, # optional
|
|
1448
|
+
startRow=0, # optional: specify row range
|
|
1449
|
+
endRow=10 # optional: specify row range
|
|
1450
|
+
)
|
|
1451
|
+
```
|
|
1452
|
+
|
|
1453
|
+
#### `unique_sdk.AgenticTable.get_sheet_state`
|
|
1454
|
+
|
|
1455
|
+
Get the current state of a magic table sheet.
|
|
1456
|
+
|
|
1457
|
+
```python
|
|
1458
|
+
state = await unique_sdk.AgenticTable.get_sheet_state(
|
|
1459
|
+
user_id=user_id,
|
|
1460
|
+
company_id=company_id,
|
|
1461
|
+
tableId="sheet_abc123"
|
|
1462
|
+
)
|
|
1463
|
+
# Returns: "PROCESSING", "IDLE", or "STOPPED_BY_USER"
|
|
1464
|
+
```
|
|
1465
|
+
|
|
1466
|
+
#### `unique_sdk.AgenticTable.update_sheet_state`
|
|
1467
|
+
|
|
1468
|
+
Update the name or state of a magic table sheet.
|
|
1469
|
+
|
|
1470
|
+
```python
|
|
1471
|
+
result = await unique_sdk.AgenticTable.update_sheet_state(
|
|
1472
|
+
user_id=user_id,
|
|
1473
|
+
company_id=company_id,
|
|
1474
|
+
tableId="sheet_abc123",
|
|
1475
|
+
name="Updated Sheet Name", # optional
|
|
1476
|
+
state="IDLE" # optional, one of: "PROCESSING", "IDLE", "STOPPED_BY_USER"
|
|
1477
|
+
)
|
|
1478
|
+
```
|
|
1479
|
+
|
|
1480
|
+
#### `unique_sdk.AgenticTable.set_activity`
|
|
1481
|
+
|
|
1482
|
+
Set the status of an activity on the magic table sheet. This is useful for tracking long-running operations.
|
|
1483
|
+
|
|
1484
|
+
```python
|
|
1485
|
+
result = await unique_sdk.AgenticTable.set_activity(
|
|
1486
|
+
user_id=user_id,
|
|
1487
|
+
company_id=company_id,
|
|
1488
|
+
tableId="sheet_abc123",
|
|
1489
|
+
activity="UpdateCell",
|
|
1490
|
+
# activity: one of "DeleteRow", "DeleteColumn", "UpdateCell", "AddQuestionText",
|
|
1491
|
+
# "AddMetaData", "GenerateArtifact", "SheetCompleted", "LibrarySheetRowVerified"
|
|
1492
|
+
status="IN_PROGRESS",
|
|
1493
|
+
# status: one of "IN_PROGRESS", "COMPLETED", "FAILED"
|
|
1494
|
+
text="Updating cells with AI-generated content"
|
|
1495
|
+
)
|
|
1496
|
+
```
|
|
1497
|
+
|
|
1498
|
+
#### `unique_sdk.AgenticTable.set_artifact`
|
|
1499
|
+
|
|
1500
|
+
Attach an artifact (such as a generated document) to the magic table sheet.
|
|
1501
|
+
|
|
1502
|
+
```python
|
|
1503
|
+
result = await unique_sdk.AgenticTable.set_artifact(
|
|
1504
|
+
user_id=user_id,
|
|
1505
|
+
company_id=company_id,
|
|
1506
|
+
tableId="sheet_abc123",
|
|
1507
|
+
name="Generated Report",
|
|
1508
|
+
contentId="cont_xyz789",
|
|
1509
|
+
mimeType="application/pdf",
|
|
1510
|
+
artifactType="FULL_REPORT" # One of: "QUESTIONS", "FULL_REPORT"
|
|
1511
|
+
)
|
|
1512
|
+
```
|
|
1513
|
+
|
|
1514
|
+
#### `unique_sdk.AgenticTable.set_column_metadata`
|
|
1515
|
+
|
|
1516
|
+
Configure metadata for a specific column, including width, filters, and cell renderers.
|
|
1517
|
+
|
|
1518
|
+
```python
|
|
1519
|
+
result = await unique_sdk.AgenticTable.set_column_metadata(
|
|
1520
|
+
user_id=user_id,
|
|
1521
|
+
company_id=company_id,
|
|
1522
|
+
tableId="sheet_abc123",
|
|
1523
|
+
columnOrder=2,
|
|
1524
|
+
columnWidth=200, # optional
|
|
1525
|
+
filter="ValueMatchFilter", # optional
|
|
1526
|
+
# filter: one of "ValueMatchFilter", "PartialMatchFilter", "ReferenceFilter",
|
|
1527
|
+
# "HallucinationFilter", "ReviewStatusFilter", "AssigneeFilter"
|
|
1528
|
+
cellRenderer="CheckboxLockCellRenderer", # optional
|
|
1529
|
+
# cellRenderer: one of "CheckboxLockCellRenderer", "CollaboratorDropdown",
|
|
1530
|
+
# "ReviewStatusDropdown", "CustomCellRenderer", "SelectableCellRenderer"
|
|
1531
|
+
editable=True # optional
|
|
1532
|
+
)
|
|
1533
|
+
```
|
|
1534
|
+
|
|
1535
|
+
#### `unique_sdk.AgenticTable.set_cell_metadata`
|
|
1536
|
+
|
|
1537
|
+
Set metadata for a specific cell, including selection status and agreement status.
|
|
1538
|
+
|
|
1539
|
+
```python
|
|
1540
|
+
result = await unique_sdk.AgenticTable.set_cell_metadata(
|
|
1541
|
+
user_id=user_id,
|
|
1542
|
+
company_id=company_id,
|
|
1543
|
+
tableId="sheet_abc123",
|
|
1544
|
+
rowOrder=0,
|
|
1545
|
+
columnOrder=1,
|
|
1546
|
+
selected=True, # optional
|
|
1547
|
+
selectionMethod="MANUAL", # optional, one of: "DEFAULT", "MANUAL"
|
|
1548
|
+
agreementStatus="MATCH" # optional, one of: "MATCH", "NO_MATCH"
|
|
1549
|
+
)
|
|
1550
|
+
```
|
|
1551
|
+
|
|
1552
|
+
#### `unique_sdk.AgenticTable.bulk_update_status`
|
|
1553
|
+
|
|
1554
|
+
Update the verification status of multiple rows at once.
|
|
1555
|
+
|
|
1556
|
+
```python
|
|
1557
|
+
result = await unique_sdk.AgenticTable.bulk_update_status(
|
|
1558
|
+
user_id=user_id,
|
|
1559
|
+
company_id=company_id,
|
|
1560
|
+
tableId="sheet_abc123",
|
|
1561
|
+
rowOrders=[0, 1, 2, 3, 4],
|
|
1562
|
+
status="VERIFIED"
|
|
1563
|
+
# status: one of "NEED_REVIEW", "READY_FOR_VERIFICATION", "VERIFIED"
|
|
1564
|
+
)
|
|
1565
|
+
```
|
|
1566
|
+
|
|
1357
1567
|
## UniqueQL
|
|
1358
1568
|
|
|
1359
1569
|
[UniqueQL](https://unique-ch.atlassian.net/wiki/x/coAXHQ) is an advanced query language designed to enhance search capabilities within various search modes such as Vector, Full-Text Search (FTS), and Combined. This query language enables users to perform detailed searches by filtering through metadata attributes like filenames, URLs, dates, and more. UniqueQL is versatile and can be translated into different query formats for various database systems, including PostgreSQL and Qdrant.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "unique_sdk"
|
|
3
|
-
version = "0.10.
|
|
3
|
+
version = "0.10.38"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = [
|
|
6
6
|
"Martin Fadler <martin.fadler@unique.ch>",
|
|
@@ -28,6 +28,8 @@ pyright = "^1.1.341"
|
|
|
28
28
|
pytest-cov = "^4.1.0"
|
|
29
29
|
pytest-asyncio = "^0.24.0"
|
|
30
30
|
python-dotenv = "^1.1.0"
|
|
31
|
+
httpx = "^0.28.1"
|
|
32
|
+
ipykernel = "^7.1.0"
|
|
31
33
|
|
|
32
34
|
[tool.poetry.extras]
|
|
33
35
|
openai = ["openai"]
|
|
@@ -20,6 +20,16 @@ from unique_sdk._request_options import RequestOptions
|
|
|
20
20
|
class Content(APIResource["Content"]):
|
|
21
21
|
OBJECT_NAME: ClassVar[Literal["content.search"]] = "content.search"
|
|
22
22
|
|
|
23
|
+
id: str
|
|
24
|
+
key: str
|
|
25
|
+
url: Optional[str]
|
|
26
|
+
title: Optional[str]
|
|
27
|
+
updatedAt: str
|
|
28
|
+
chunks: Optional[List["Content.Chunk"]]
|
|
29
|
+
metadata: Optional[Dict[str, Any]]
|
|
30
|
+
writeUrl: Optional[str]
|
|
31
|
+
readUrl: Optional[str]
|
|
32
|
+
|
|
23
33
|
class QueryMode(Enum):
|
|
24
34
|
Default = "default"
|
|
25
35
|
Insensitive = "insensitive"
|
|
@@ -127,6 +137,7 @@ class Content(APIResource["Content"]):
|
|
|
127
137
|
key: str
|
|
128
138
|
title: Optional[str]
|
|
129
139
|
mimeType: str
|
|
140
|
+
description: NotRequired[str | None]
|
|
130
141
|
ownerType: NotRequired[str | None]
|
|
131
142
|
ownerId: NotRequired[str | None]
|
|
132
143
|
byteSize: NotRequired[int | None]
|
|
@@ -168,6 +179,7 @@ class Content(APIResource["Content"]):
|
|
|
168
179
|
title: str | None
|
|
169
180
|
metadata: Dict[str, Any] | None
|
|
170
181
|
mimeType: str
|
|
182
|
+
description: str | None
|
|
171
183
|
byteSize: int
|
|
172
184
|
ownerId: str
|
|
173
185
|
createdAt: str
|
|
@@ -192,16 +204,6 @@ class Content(APIResource["Content"]):
|
|
|
192
204
|
class DeleteResponse(TypedDict):
|
|
193
205
|
id: str
|
|
194
206
|
|
|
195
|
-
id: str
|
|
196
|
-
key: str
|
|
197
|
-
url: Optional[str]
|
|
198
|
-
title: Optional[str]
|
|
199
|
-
updatedAt: str
|
|
200
|
-
chunks: List[Chunk]
|
|
201
|
-
metadata: Optional[Dict[str, Any]]
|
|
202
|
-
writeUrl: str
|
|
203
|
-
readUrl: str
|
|
204
|
-
|
|
205
207
|
class MagicTableSheetTableColumn(TypedDict):
|
|
206
208
|
columnId: str
|
|
207
209
|
columnName: str
|
|
@@ -83,6 +83,10 @@ class Folder(APIResource["Folder"]):
|
|
|
83
83
|
parentId: str | None
|
|
84
84
|
externalId: str | None
|
|
85
85
|
|
|
86
|
+
class FolderInfos(TypedDict):
|
|
87
|
+
folderInfos: List["Folder.FolderInfo"]
|
|
88
|
+
totalCount: int
|
|
89
|
+
|
|
86
90
|
id: str
|
|
87
91
|
name: str
|
|
88
92
|
scopeAccess: List[ScopeAccess]
|
|
@@ -212,12 +216,12 @@ class Folder(APIResource["Folder"]):
|
|
|
212
216
|
@classmethod
|
|
213
217
|
def get_infos(
|
|
214
218
|
cls, user_id: str, company_id: str, **params: Unpack["Folder.GetInfosParams"]
|
|
215
|
-
) -> "
|
|
219
|
+
) -> "Folder.FolderInfos":
|
|
216
220
|
"""
|
|
217
221
|
Get paginated folders based on parentId. If the parentId is not defined, the root folders will be returned.
|
|
218
222
|
"""
|
|
219
223
|
return cast(
|
|
220
|
-
"
|
|
224
|
+
"Folder.FolderInfos",
|
|
221
225
|
cls._static_request(
|
|
222
226
|
"get",
|
|
223
227
|
"/folder/infos",
|
|
@@ -230,12 +234,12 @@ class Folder(APIResource["Folder"]):
|
|
|
230
234
|
@classmethod
|
|
231
235
|
async def get_infos_async(
|
|
232
236
|
cls, user_id: str, company_id: str, **params: Unpack["Folder.GetInfosParams"]
|
|
233
|
-
) -> "
|
|
237
|
+
) -> "Folder.FolderInfos":
|
|
234
238
|
"""
|
|
235
239
|
Async get paginated folders based on parentId. If the parentId is not defined, the root folders will be returned.
|
|
236
240
|
"""
|
|
237
241
|
return cast(
|
|
238
|
-
"
|
|
242
|
+
"Folder.FolderInfos",
|
|
239
243
|
await cls._static_request_async(
|
|
240
244
|
"get",
|
|
241
245
|
"/folder/infos",
|
|
@@ -8,16 +8,18 @@ class MessageExecution(APIResource["MessageExecution"]):
|
|
|
8
8
|
OBJECT_NAME: ClassVar[Literal["message_execution"]] = "message_execution"
|
|
9
9
|
RESOURCE_URL = "/message-execution"
|
|
10
10
|
|
|
11
|
+
TypeLiteral = Literal["DEEP_RESEARCH"]
|
|
12
|
+
StatusLiteral = Literal["PENDING", "RUNNING", "COMPLETED", "FAILED"]
|
|
13
|
+
# Only COMPLETED and FAILED statuses are allowed for update
|
|
14
|
+
UpdateStatusLiteral = Literal["COMPLETED", "FAILED"]
|
|
15
|
+
|
|
11
16
|
class CreateMessageExecutionParams(RequestOptions):
|
|
12
17
|
"""
|
|
13
18
|
Parameters for creating a message execution.
|
|
14
19
|
"""
|
|
15
20
|
|
|
16
21
|
messageId: str
|
|
17
|
-
|
|
18
|
-
type: Literal["DEEP_RESEARCH"]
|
|
19
|
-
secondsRemaining: NotRequired[int | None]
|
|
20
|
-
percentageCompleted: NotRequired[int | None]
|
|
22
|
+
type: "MessageExecution.TypeLiteral"
|
|
21
23
|
|
|
22
24
|
class GetMessageExecutionParams(RequestOptions):
|
|
23
25
|
"""
|
|
@@ -32,18 +34,19 @@ class MessageExecution(APIResource["MessageExecution"]):
|
|
|
32
34
|
"""
|
|
33
35
|
|
|
34
36
|
messageId: str
|
|
35
|
-
status:
|
|
37
|
+
status: NotRequired["MessageExecution.UpdateStatusLiteral | None"]
|
|
36
38
|
secondsRemaining: NotRequired[int | None]
|
|
37
39
|
percentageCompleted: NotRequired[int | None]
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
messageId: str
|
|
41
|
-
status:
|
|
42
|
-
type:
|
|
41
|
+
id: str
|
|
42
|
+
messageId: str
|
|
43
|
+
status: "MessageExecution.StatusLiteral"
|
|
44
|
+
type: "MessageExecution.TypeLiteral"
|
|
43
45
|
secondsRemaining: int | None
|
|
44
46
|
percentageCompleted: int | None
|
|
47
|
+
positionInQueue: int | None
|
|
45
48
|
createdAt: str
|
|
46
|
-
updatedAt: str
|
|
49
|
+
updatedAt: str
|
|
47
50
|
|
|
48
51
|
@classmethod
|
|
49
52
|
def create(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import ClassVar, Literal, NotRequired, TypedDict, Unpack, cast
|
|
1
|
+
from typing import ClassVar, Literal, NotRequired, Optional, TypedDict, Unpack, cast
|
|
2
2
|
|
|
3
3
|
from unique_sdk._api_resource import APIResource
|
|
4
4
|
from unique_sdk._request_options import RequestOptions
|
|
@@ -8,11 +8,14 @@ class MessageLog(APIResource["MessageLog"]):
|
|
|
8
8
|
OBJECT_NAME: ClassVar[Literal["message_log"]] = "message_log"
|
|
9
9
|
RESOURCE_URL = "/message-log"
|
|
10
10
|
|
|
11
|
+
StatusLiteral = Literal["RUNNING", "COMPLETED", "FAILED"]
|
|
12
|
+
|
|
11
13
|
class Reference(TypedDict):
|
|
12
14
|
name: str
|
|
13
|
-
|
|
15
|
+
description: Optional[str]
|
|
16
|
+
url: Optional[str]
|
|
14
17
|
sequenceNumber: int
|
|
15
|
-
originalIndex: list[int]
|
|
18
|
+
originalIndex: Optional[list[int]]
|
|
16
19
|
sourceId: str
|
|
17
20
|
source: str
|
|
18
21
|
|
|
@@ -23,7 +26,7 @@ class MessageLog(APIResource["MessageLog"]):
|
|
|
23
26
|
|
|
24
27
|
messageId: str
|
|
25
28
|
text: str
|
|
26
|
-
status:
|
|
29
|
+
status: "MessageLog.StatusLiteral"
|
|
27
30
|
order: int
|
|
28
31
|
details: NotRequired[dict | None]
|
|
29
32
|
uncitedReferences: NotRequired[dict | None]
|
|
@@ -35,21 +38,21 @@ class MessageLog(APIResource["MessageLog"]):
|
|
|
35
38
|
"""
|
|
36
39
|
|
|
37
40
|
text: NotRequired[str | None]
|
|
38
|
-
status: NotRequired[
|
|
41
|
+
status: NotRequired["MessageLog.StatusLiteral | None"]
|
|
39
42
|
order: NotRequired[int | None]
|
|
40
43
|
details: NotRequired[dict | None]
|
|
41
44
|
uncitedReferences: NotRequired[dict | None]
|
|
42
45
|
references: NotRequired[list["MessageLog.Reference"] | None]
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
messageId: str
|
|
46
|
-
status:
|
|
47
|
-
text: str
|
|
47
|
+
id: str
|
|
48
|
+
messageId: str
|
|
49
|
+
status: "MessageLog.StatusLiteral"
|
|
50
|
+
text: str
|
|
48
51
|
details: dict
|
|
49
52
|
uncitedReferences: dict
|
|
50
53
|
order: int
|
|
51
54
|
createdAt: str
|
|
52
|
-
updatedAt: str
|
|
55
|
+
updatedAt: str
|
|
53
56
|
|
|
54
57
|
@classmethod
|
|
55
58
|
def create(
|
|
@@ -35,9 +35,10 @@ class Space(APIResource["Space"]):
|
|
|
35
35
|
"""
|
|
36
36
|
|
|
37
37
|
name: str
|
|
38
|
-
|
|
38
|
+
description: Optional[str]
|
|
39
|
+
url: Optional[str]
|
|
39
40
|
sequenceNumber: int
|
|
40
|
-
originalIndex:
|
|
41
|
+
originalIndex: Optional[list[int]]
|
|
41
42
|
sourceId: str
|
|
42
43
|
source: str
|
|
43
44
|
|
|
@@ -69,7 +70,7 @@ class Space(APIResource["Space"]):
|
|
|
69
70
|
chatId: str
|
|
70
71
|
text: str | None
|
|
71
72
|
originalText: str | None
|
|
72
|
-
role: Literal["
|
|
73
|
+
role: Literal["SYSTEM", "USER", "ASSISTANT"]
|
|
73
74
|
debugInfo: Optional[Dict[str, Any]]
|
|
74
75
|
completedAt: str | None
|
|
75
76
|
createdAt: str | None
|
|
@@ -38,6 +38,7 @@ def upload_file(
|
|
|
38
38
|
path_to_file,
|
|
39
39
|
displayed_filename,
|
|
40
40
|
mime_type,
|
|
41
|
+
description: Optional[str] = None,
|
|
41
42
|
scope_or_unique_path=None,
|
|
42
43
|
chat_id=None,
|
|
43
44
|
ingestion_config: Optional[Content.IngestionConfig] = None,
|
|
@@ -55,6 +56,7 @@ def upload_file(
|
|
|
55
56
|
"key": displayed_filename,
|
|
56
57
|
"title": displayed_filename,
|
|
57
58
|
"mimeType": mime_type,
|
|
59
|
+
"description": description,
|
|
58
60
|
"ingestionConfig": ingestion_config,
|
|
59
61
|
"metadata": metadata,
|
|
60
62
|
},
|
|
@@ -83,6 +85,7 @@ def upload_file(
|
|
|
83
85
|
"key": displayed_filename,
|
|
84
86
|
"title": displayed_filename,
|
|
85
87
|
"mimeType": mime_type,
|
|
88
|
+
"description": description,
|
|
86
89
|
"byteSize": size,
|
|
87
90
|
"ingestionConfig": ingestion_config,
|
|
88
91
|
"metadata": metadata,
|
|
@@ -98,6 +101,7 @@ def upload_file(
|
|
|
98
101
|
"key": displayed_filename,
|
|
99
102
|
"title": displayed_filename,
|
|
100
103
|
"mimeType": mime_type,
|
|
104
|
+
"description": description,
|
|
101
105
|
"byteSize": size,
|
|
102
106
|
"ingestionConfig": ingestion_config,
|
|
103
107
|
"metadata": metadata,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|