unique_sdk 0.10.29__tar.gz → 0.10.31__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.
Files changed (43) hide show
  1. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/CHANGELOG.md +6 -0
  2. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/PKG-INFO +100 -7
  3. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/README.md +93 -6
  4. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/pyproject.toml +1 -1
  5. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_content.py +15 -2
  6. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_message_log.py +1 -1
  7. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/LICENSE +0 -0
  8. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/__init__.py +0 -0
  9. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_api_requestor.py +0 -0
  10. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_api_resource.py +0 -0
  11. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_api_version.py +0 -0
  12. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_error.py +0 -0
  13. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_http_client.py +0 -0
  14. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_list_object.py +0 -0
  15. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_object_classes.py +0 -0
  16. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_request_options.py +0 -0
  17. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_unique_object.py +0 -0
  18. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_unique_ql.py +0 -0
  19. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_unique_response.py +0 -0
  20. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_util.py +0 -0
  21. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_version.py +0 -0
  22. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/_webhook.py +0 -0
  23. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/__init__.py +0 -0
  24. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_acronyms.py +0 -0
  25. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_agentic_table.py +0 -0
  26. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_chat_completion.py +0 -0
  27. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_embedding.py +0 -0
  28. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_event.py +0 -0
  29. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_folder.py +0 -0
  30. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_integrated.py +0 -0
  31. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_mcp.py +0 -0
  32. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_message.py +0 -0
  33. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_message_assessment.py +0 -0
  34. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_message_execution.py +0 -0
  35. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_search.py +0 -0
  36. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_search_string.py +0 -0
  37. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_short_term_memory.py +0 -0
  38. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/api_resources/_space.py +0 -0
  39. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/utils/chat_history.py +0 -0
  40. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/utils/chat_in_space.py +0 -0
  41. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/utils/file_io.py +0 -0
  42. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/utils/sources.py +0 -0
  43. {unique_sdk-0.10.29 → unique_sdk-0.10.31}/unique_sdk/utils/token.py +0 -0
@@ -5,6 +5,12 @@ 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.31] - 2025-10-13
9
+ - Add readme for message log and execution.
10
+
11
+ ## [0.10.30] - 2025-10-07
12
+ - Improve types for content get infos.
13
+
8
14
  ## [0.10.29] - 2025-10-06
9
15
  - Switch default model used from `GPT-3.5-turbo (0125)` to `GPT-4o (1120)`
10
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_sdk
3
- Version: 0.10.29
3
+ Version: 0.10.31
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: Martin Fadler
@@ -18,9 +18,9 @@ Description-Content-Type: text/markdown
18
18
 
19
19
  # Unique Python SDK
20
20
 
21
- Unique Unique AI is a tailored solution for the financial industry, designed to increase productivity by automating manual workloads through AI and ChatGPT solutions.
21
+ Unique AI is a tailored solution for the financial industry, designed to increase productivity by automating manual workloads through AI and ChatGPT solutions.
22
22
 
23
- The Unique Python SDK provides access to the public API of Unique Unique AI. It also enables verification of Webhook signatures to ensure the authenticity of incoming Webhook requests.
23
+ The Unique Python SDK provides access to the public API of Unique AI. It also enables verification of Webhook signatures to ensure the authenticity of incoming Webhook requests.
24
24
 
25
25
  ## Table of Contents
26
26
 
@@ -31,6 +31,8 @@ The Unique Python SDK provides access to the public API of Unique Unique AI. It
31
31
  5. [Available API Resources](#available-api-resources)
32
32
  - [Content](#content)
33
33
  - [Message](#message)
34
+ - [Message Log](#message-log)
35
+ - [Message Execution](#message-execution)
34
36
  - [Chat Completion](#chat-completion)
35
37
  - [Embeddings](#embeddings)
36
38
  - [Acronyms](#acronyms)
@@ -226,7 +228,7 @@ This trigger can be used in combination with assistants marked as `external`. Th
226
228
  }
227
229
  ```
228
230
 
229
- This Webhook is triggered when the Unique Unique AI AI selects an external module as the best response to a user message. The module must be marked as `external` and available for the assistant used in the chat to be selected by the AI.
231
+ This Webhook is triggered when the Unique AI selects an external module as the best response to a user message. The module must be marked as `external` and available for the assistant used in the chat to be selected by the AI.
230
232
 
231
233
  Unique's UI will create an empty `assistantMessage` below the user message and update this message with status updates.
232
234
 
@@ -246,6 +248,8 @@ unique_sdk.Message.modify(
246
248
 
247
249
  - [Content](#content)
248
250
  - [Message](#message)
251
+ - [Message Log](#message-log)
252
+ - [Message Execution](#message-execution)
249
253
  - [Chat Completion](#chat-completion)
250
254
  - [Embeddings](#embeddings)
251
255
  - [Acronyms](#acronyms)
@@ -573,7 +577,7 @@ Move the file to a different folder. This can be done by specifying either the `
573
577
  - `parentFolderPath` optional, allows moving the file to a different folder. Represents the path new folder for the file.
574
578
 
575
579
  Metadata update:
576
- - `metadata` optional, allows updating the metadata of the file. Default metadata can not be ovrriden. (Available with release >.40)
580
+ - `metadata` optional, allows updating the metadata of the file. Default metadata can not be overridden. (Available with release >.40)
577
581
 
578
582
  Example of updating the title of a file specified by its path.
579
583
 
@@ -817,11 +821,94 @@ unique_sdk.Integrated.responses_stream(
817
821
 
818
822
  **Warning:** Currently, the deletion of a chat message does not automatically sync with the user UI. Users must refresh the chat page to view the updated state. This issue will be addressed in a future update of our API.
819
823
 
824
+ ### Message Log
825
+
826
+ #### `unique_sdk.MessageLog.create`
827
+
828
+ Create a message log for a provided `messageId`.
829
+
830
+ ```python
831
+ msg_log = unique_sdk.MessageLog.create(
832
+ user_id=user_id,
833
+ company_id=company_id,
834
+ messageId="msg_a0jgnt1jrqv1d3uzr450waxw",
835
+ text="Create message log text",
836
+ order=1,
837
+ status="RUNNING", # one of "RUNNING", "COMPLETED", "FAILED"
838
+ details=None, # optional, details dictionary
839
+ uncitedReferences=None, # optional, references dictionary
840
+ references=None, # optional, list of references
841
+ )
842
+ ```
843
+
844
+ #### `unique_sdk.MessageLog.update`
845
+
846
+ Update a message log for a provided `messageId`.
847
+
848
+ ```python
849
+ msg_log = unique_sdk.MessageLog.update(
850
+ user_id=user_id,
851
+ company_id=company_id,
852
+ message_log_id="message_log_fd7z7gjljo1z2wu5g6l9q7r9",
853
+ text="Update a message log text", # optional
854
+ order=1, # optional
855
+ status="RUNNING", # one of "RUNNING", "COMPLETED", "FAILED"
856
+ details=None, # optional, details dictionary
857
+ uncitedReferences=None, # optional, references dictionary
858
+ references=None,
859
+ )
860
+ ```
861
+
862
+ ### Message Execution
863
+
864
+ #### `unique_sdk.MessageExecution.create`
865
+
866
+ Create a message execution for a provided `messageId` and `chatId`.
867
+
868
+ ```python
869
+ msg_execution = unique_sdk.MessageExecution.create(
870
+ user_id=user_id,
871
+ company_id=company_id,
872
+ messageId="msg_a0jgnt1jrqv143uzr750waxw",
873
+ chatId="chat_nx21havszl1skchd7544oykh",
874
+ type="DEEP_RESEARCH"
875
+ secondsRemaining=None # optional, number defining the seconds remaining
876
+ percentageCompleted=None # optional, number defining the percentage completed
877
+ )
878
+ ```
879
+
880
+ #### `unique_sdk.MessageExecution.get`
881
+
882
+ Get a message execution for a provided `messageId`.
883
+
884
+ ```python
885
+ msg_execution = unique_sdk.MessageExecution.get(
886
+ user_id=user_id,
887
+ company_id=company_id,
888
+ messageId="msg_a0jgnt1jrqv143uzr750waxw",
889
+ )
890
+ ```
891
+
892
+ #### `unique_sdk.MessageExecution.update`
893
+
894
+ Update a message execution for a provided `messageId`.
895
+
896
+ ```python
897
+ msg_execution = unique_sdk.MessageExecution.update(
898
+ user_id=user_id,
899
+ company_id=company_id,
900
+ messageId="msg_a0jgnt1jrqv143uzr750waxw",
901
+ status="COMPLETED", # one of: COMPLETED, FAILED
902
+ secondsRemaining=55 # optional, number defining the seconds remaining
903
+ percentageCompleted=10 # optional, number defining the percentage completed
904
+ )
905
+ ```
906
+
820
907
  ### Chat Completion
821
908
 
822
909
  #### `unique_sdk.ChatCompletion.create`
823
910
 
824
- Send a prompt to an AI model supported by Unique Unique AI and receive a result. The `messages` attribute must follow the [OpenAI API format](https://platform.openai.com/docs/api-reference/chat).
911
+ Send a prompt to an AI model supported by Unique AI and receive a result. The `messages` attribute must follow the [OpenAI API format](https://platform.openai.com/docs/api-reference/chat).
825
912
 
826
913
  ```python
827
914
  chat_completion = unique_sdk.ChatCompletion.create(
@@ -871,7 +958,7 @@ print(result)
871
958
 
872
959
  #### `unique_sdk.Search.create`
873
960
 
874
- Search the Unique Unique AI Knowledge database for RAG (Retrieval-Augmented Generation). The API supports vector search and a `searchType` that combines vector and full-text search, enhancing the precision of search results.
961
+ Search the Unique AI Knowledge database for RAG (Retrieval-Augmented Generation). The API supports vector search and a `searchType` that combines vector and full-text search, enhancing the precision of search results.
875
962
 
876
963
  These are the options are available for `searchType`:
877
964
 
@@ -1662,6 +1749,12 @@ All notable changes to this project will be documented in this file.
1662
1749
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1663
1750
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
1664
1751
 
1752
+ ## [0.10.31] - 2025-10-13
1753
+ - Add readme for message log and execution.
1754
+
1755
+ ## [0.10.30] - 2025-10-07
1756
+ - Improve types for content get infos.
1757
+
1665
1758
  ## [0.10.29] - 2025-10-06
1666
1759
  - Switch default model used from `GPT-3.5-turbo (0125)` to `GPT-4o (1120)`
1667
1760
 
@@ -1,8 +1,8 @@
1
1
  # Unique Python SDK
2
2
 
3
- Unique Unique AI is a tailored solution for the financial industry, designed to increase productivity by automating manual workloads through AI and ChatGPT solutions.
3
+ Unique AI is a tailored solution for the financial industry, designed to increase productivity by automating manual workloads through AI and ChatGPT solutions.
4
4
 
5
- The Unique Python SDK provides access to the public API of Unique Unique AI. It also enables verification of Webhook signatures to ensure the authenticity of incoming Webhook requests.
5
+ The Unique Python SDK provides access to the public API of Unique AI. It also enables verification of Webhook signatures to ensure the authenticity of incoming Webhook requests.
6
6
 
7
7
  ## Table of Contents
8
8
 
@@ -13,6 +13,8 @@ The Unique Python SDK provides access to the public API of Unique Unique AI. It
13
13
  5. [Available API Resources](#available-api-resources)
14
14
  - [Content](#content)
15
15
  - [Message](#message)
16
+ - [Message Log](#message-log)
17
+ - [Message Execution](#message-execution)
16
18
  - [Chat Completion](#chat-completion)
17
19
  - [Embeddings](#embeddings)
18
20
  - [Acronyms](#acronyms)
@@ -208,7 +210,7 @@ This trigger can be used in combination with assistants marked as `external`. Th
208
210
  }
209
211
  ```
210
212
 
211
- This Webhook is triggered when the Unique Unique AI AI selects an external module as the best response to a user message. The module must be marked as `external` and available for the assistant used in the chat to be selected by the AI.
213
+ This Webhook is triggered when the Unique AI selects an external module as the best response to a user message. The module must be marked as `external` and available for the assistant used in the chat to be selected by the AI.
212
214
 
213
215
  Unique's UI will create an empty `assistantMessage` below the user message and update this message with status updates.
214
216
 
@@ -228,6 +230,8 @@ unique_sdk.Message.modify(
228
230
 
229
231
  - [Content](#content)
230
232
  - [Message](#message)
233
+ - [Message Log](#message-log)
234
+ - [Message Execution](#message-execution)
231
235
  - [Chat Completion](#chat-completion)
232
236
  - [Embeddings](#embeddings)
233
237
  - [Acronyms](#acronyms)
@@ -555,7 +559,7 @@ Move the file to a different folder. This can be done by specifying either the `
555
559
  - `parentFolderPath` optional, allows moving the file to a different folder. Represents the path new folder for the file.
556
560
 
557
561
  Metadata update:
558
- - `metadata` optional, allows updating the metadata of the file. Default metadata can not be ovrriden. (Available with release >.40)
562
+ - `metadata` optional, allows updating the metadata of the file. Default metadata can not be overridden. (Available with release >.40)
559
563
 
560
564
  Example of updating the title of a file specified by its path.
561
565
 
@@ -799,11 +803,94 @@ unique_sdk.Integrated.responses_stream(
799
803
 
800
804
  **Warning:** Currently, the deletion of a chat message does not automatically sync with the user UI. Users must refresh the chat page to view the updated state. This issue will be addressed in a future update of our API.
801
805
 
806
+ ### Message Log
807
+
808
+ #### `unique_sdk.MessageLog.create`
809
+
810
+ Create a message log for a provided `messageId`.
811
+
812
+ ```python
813
+ msg_log = unique_sdk.MessageLog.create(
814
+ user_id=user_id,
815
+ company_id=company_id,
816
+ messageId="msg_a0jgnt1jrqv1d3uzr450waxw",
817
+ text="Create message log text",
818
+ order=1,
819
+ status="RUNNING", # one of "RUNNING", "COMPLETED", "FAILED"
820
+ details=None, # optional, details dictionary
821
+ uncitedReferences=None, # optional, references dictionary
822
+ references=None, # optional, list of references
823
+ )
824
+ ```
825
+
826
+ #### `unique_sdk.MessageLog.update`
827
+
828
+ Update a message log for a provided `messageId`.
829
+
830
+ ```python
831
+ msg_log = unique_sdk.MessageLog.update(
832
+ user_id=user_id,
833
+ company_id=company_id,
834
+ message_log_id="message_log_fd7z7gjljo1z2wu5g6l9q7r9",
835
+ text="Update a message log text", # optional
836
+ order=1, # optional
837
+ status="RUNNING", # one of "RUNNING", "COMPLETED", "FAILED"
838
+ details=None, # optional, details dictionary
839
+ uncitedReferences=None, # optional, references dictionary
840
+ references=None,
841
+ )
842
+ ```
843
+
844
+ ### Message Execution
845
+
846
+ #### `unique_sdk.MessageExecution.create`
847
+
848
+ Create a message execution for a provided `messageId` and `chatId`.
849
+
850
+ ```python
851
+ msg_execution = unique_sdk.MessageExecution.create(
852
+ user_id=user_id,
853
+ company_id=company_id,
854
+ messageId="msg_a0jgnt1jrqv143uzr750waxw",
855
+ chatId="chat_nx21havszl1skchd7544oykh",
856
+ type="DEEP_RESEARCH"
857
+ secondsRemaining=None # optional, number defining the seconds remaining
858
+ percentageCompleted=None # optional, number defining the percentage completed
859
+ )
860
+ ```
861
+
862
+ #### `unique_sdk.MessageExecution.get`
863
+
864
+ Get a message execution for a provided `messageId`.
865
+
866
+ ```python
867
+ msg_execution = unique_sdk.MessageExecution.get(
868
+ user_id=user_id,
869
+ company_id=company_id,
870
+ messageId="msg_a0jgnt1jrqv143uzr750waxw",
871
+ )
872
+ ```
873
+
874
+ #### `unique_sdk.MessageExecution.update`
875
+
876
+ Update a message execution for a provided `messageId`.
877
+
878
+ ```python
879
+ msg_execution = unique_sdk.MessageExecution.update(
880
+ user_id=user_id,
881
+ company_id=company_id,
882
+ messageId="msg_a0jgnt1jrqv143uzr750waxw",
883
+ status="COMPLETED", # one of: COMPLETED, FAILED
884
+ secondsRemaining=55 # optional, number defining the seconds remaining
885
+ percentageCompleted=10 # optional, number defining the percentage completed
886
+ )
887
+ ```
888
+
802
889
  ### Chat Completion
803
890
 
804
891
  #### `unique_sdk.ChatCompletion.create`
805
892
 
806
- Send a prompt to an AI model supported by Unique Unique AI and receive a result. The `messages` attribute must follow the [OpenAI API format](https://platform.openai.com/docs/api-reference/chat).
893
+ Send a prompt to an AI model supported by Unique AI and receive a result. The `messages` attribute must follow the [OpenAI API format](https://platform.openai.com/docs/api-reference/chat).
807
894
 
808
895
  ```python
809
896
  chat_completion = unique_sdk.ChatCompletion.create(
@@ -853,7 +940,7 @@ print(result)
853
940
 
854
941
  #### `unique_sdk.Search.create`
855
942
 
856
- Search the Unique Unique AI Knowledge database for RAG (Retrieval-Augmented Generation). The API supports vector search and a `searchType` that combines vector and full-text search, enhancing the precision of search results.
943
+ Search the Unique AI Knowledge database for RAG (Retrieval-Augmented Generation). The API supports vector search and a `searchType` that combines vector and full-text search, enhancing the precision of search results.
857
944
 
858
945
  These are the options are available for `searchType`:
859
946
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_sdk"
3
- version = "0.10.29"
3
+ version = "0.10.31"
4
4
  description = ""
5
5
  authors = [
6
6
  "Martin Fadler <martin.fadler@unique.ch>",
@@ -86,6 +86,19 @@ class Content(APIResource["Content"]):
86
86
  skip: NotRequired[int | None]
87
87
  take: NotRequired[int | None]
88
88
  filePath: NotRequired[str | None]
89
+ contentId: NotRequired[str | None]
90
+ chatId: NotRequired[str | None]
91
+
92
+ class ContentInfosParams(TypedDict):
93
+ """
94
+ Parameters for the content infos endpoint.
95
+ This is used to retrieve information about contents based on various filters.
96
+ """
97
+
98
+ metadataFilter: NotRequired[dict[str, Any] | None]
99
+ skip: NotRequired[int | None]
100
+ take: NotRequired[int | None]
101
+ parentId: NotRequired[str | None]
89
102
 
90
103
  class CustomApiOptions(TypedDict):
91
104
  apiIdentifier: str
@@ -293,7 +306,7 @@ class Content(APIResource["Content"]):
293
306
  cls,
294
307
  user_id: str,
295
308
  company_id: str,
296
- **params: Unpack["Content.ContentInfoParams"],
309
+ **params: Unpack["Content.ContentInfosParams"],
297
310
  ) -> "Content.PaginatedContentInfos":
298
311
  return cast(
299
312
  Content.PaginatedContentInfos,
@@ -311,7 +324,7 @@ class Content(APIResource["Content"]):
311
324
  cls,
312
325
  user_id: str,
313
326
  company_id: str,
314
- **params: Unpack["Content.ContentInfoParams"],
327
+ **params: Unpack["Content.ContentInfosParams"],
315
328
  ) -> "Content.PaginatedContentInfos":
316
329
  return cast(
317
330
  Content.PaginatedContentInfos,
@@ -36,7 +36,7 @@ class MessageLog(APIResource["MessageLog"]):
36
36
 
37
37
  text: NotRequired[str | None]
38
38
  status: NotRequired[Literal["RUNNING", "COMPLETED", "FAILED"] | None]
39
- order: int
39
+ order: NotRequired[int | None]
40
40
  details: NotRequired[dict | None]
41
41
  uncitedReferences: NotRequired[dict | None]
42
42
  references: NotRequired[list["MessageLog.Reference"] | None]
File without changes