From 2860d514c780bd32b29ffec9ed94d2ab41db9465 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 09:58:51 +0000 Subject: [PATCH] SDK regeneration --- pyproject.toml | 2 +- reference.md | 252 ++++++++++++++++-- src/elevenlabs/__init__.py | 48 ++++ src/elevenlabs/conversational_ai/__init__.py | 11 + src/elevenlabs/conversational_ai/client.py | 120 ++++----- .../knowledge_base/__init__.py | 17 ++ .../knowledge_base/client.py | 134 ++++++++++ .../knowledge_base/documents/__init__.py | 21 +- .../knowledge_base/documents/client.py | 91 ++++++- .../knowledge_base/documents/raw_client.py | 54 +++- .../documents/summaries/__init__.py | 38 +++ .../documents/summaries/client.py | 116 ++++++++ .../documents/summaries/raw_client.py | 135 ++++++++++ .../documents/summaries/types/__init__.py | 42 +++ .../types/summaries_get_response_value.py | 49 ++++ .../documents/types/__init__.py | 6 + .../documents/types/documents_get_response.py | 34 ++- .../types/documents_update_response.py | 37 ++- .../knowledge_base/raw_client.py | 162 +++++++++++ .../knowledge_base/types/__init__.py | 46 ++++ ...et_or_create_rag_indexes_response_value.py | 49 ++++ .../conversational_ai/raw_client.py | 128 ++++----- src/elevenlabs/core/client_wrapper.py | 4 +- src/elevenlabs/types/__init__.py | 52 ++++ src/elevenlabs/types/agent_config.py | 5 + ...onfig_api_model_workflow_override_input.py | 5 + ...nfig_api_model_workflow_override_output.py | 5 + .../types/batch_call_detailed_response.py | 1 + src/elevenlabs/types/batch_call_response.py | 1 + .../types/batch_call_whats_app_params.py | 2 +- .../types/batch_failure_response_model.py | 22 ++ .../types/conversation_token_db_model.py | 5 + .../get_knowledge_base_file_response_model.py | 13 + ...et_knowledge_base_folder_response_model.py | 41 +++ ...base_list_response_model_documents_item.py | 28 ++ ...wledge_base_summary_file_response_model.py | 5 + ...edge_base_summary_folder_response_model.py | 37 +++ ...er_response_model_dependent_agents_item.py | 50 ++++ ...wledge_base_summary_text_response_model.py | 5 + ...owledge_base_summary_url_response_model.py | 5 + .../get_knowledge_base_text_response_model.py | 13 + .../get_knowledge_base_url_response_model.py | 15 +- .../get_or_create_rag_index_request_model.py | 34 +++ .../types/knowledge_base_document_type.py | 2 +- ...base_folder_path_segment_response_model.py | 21 ++ ...summary_batch_successful_response_model.py | 23 ++ ...ry_batch_successful_response_model_data.py | 118 ++++++++ ...g_index_batch_successful_response_model.py | 21 ++ src/elevenlabs/types/rag_index_status.py | 10 +- .../types/whats_app_conversation_info.py | 2 +- src/elevenlabs/types/widget_config.py | 5 + .../types/widget_config_response.py | 5 + .../types/workspace_resource_type.py | 1 + 53 files changed, 1969 insertions(+), 179 deletions(-) create mode 100644 src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/__init__.py create mode 100644 src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/client.py create mode 100644 src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/raw_client.py create mode 100644 src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/types/__init__.py create mode 100644 src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/types/summaries_get_response_value.py create mode 100644 src/elevenlabs/conversational_ai/knowledge_base/types/__init__.py create mode 100644 src/elevenlabs/conversational_ai/knowledge_base/types/knowledge_base_get_or_create_rag_indexes_response_value.py create mode 100644 src/elevenlabs/types/batch_failure_response_model.py create mode 100644 src/elevenlabs/types/get_knowledge_base_folder_response_model.py create mode 100644 src/elevenlabs/types/get_knowledge_base_summary_folder_response_model.py create mode 100644 src/elevenlabs/types/get_knowledge_base_summary_folder_response_model_dependent_agents_item.py create mode 100644 src/elevenlabs/types/get_or_create_rag_index_request_model.py create mode 100644 src/elevenlabs/types/knowledge_base_folder_path_segment_response_model.py create mode 100644 src/elevenlabs/types/knowledge_base_summary_batch_successful_response_model.py create mode 100644 src/elevenlabs/types/knowledge_base_summary_batch_successful_response_model_data.py create mode 100644 src/elevenlabs/types/rag_index_batch_successful_response_model.py diff --git a/pyproject.toml b/pyproject.toml index 0278b60a..87d88052 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ dynamic = ["version"] [tool.poetry] name = "elevenlabs" -version = "v2.26.1" +version = "v2.27.0" description = "" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md index 1c340a09..b10ed275 100644 --- a/reference.md +++ b/reference.md @@ -6477,7 +6477,7 @@ typing.Optional[core.File]` — See core.File for more documentation -
client.conversational_ai.get_document_rag_indexes(...) +
client.conversational_ai.rag_index_overview()
@@ -6489,7 +6489,7 @@ typing.Optional[core.File]` — See core.File for more documentation
-Provides information about all RAG indexes of the specified knowledgebase document. +Provides total size and other information of RAG indexes used by knowledgebase documents
@@ -6509,9 +6509,7 @@ from elevenlabs import ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", ) -client.conversational_ai.get_document_rag_indexes( - documentation_id="21m00Tcm4TlvDq8ikWAM", -) +client.conversational_ai.rag_index_overview() ``` @@ -6527,14 +6525,6 @@ client.conversational_ai.get_document_rag_indexes(
-**documentation_id:** `str` — The id of a document from the knowledge base. This is returned on document addition. - -
-
- -
-
- **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -6547,7 +6537,7 @@ client.conversational_ai.get_document_rag_indexes(
-
client.conversational_ai.delete_document_rag_index(...) +
client.conversational_ai.get_document_rag_indexes(...)
@@ -6559,7 +6549,7 @@ client.conversational_ai.get_document_rag_indexes(
-Delete RAG index for the knowledgebase document. +Provides information about all RAG indexes of the specified knowledgebase document.
@@ -6579,9 +6569,8 @@ from elevenlabs import ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", ) -client.conversational_ai.delete_document_rag_index( +client.conversational_ai.get_document_rag_indexes( documentation_id="21m00Tcm4TlvDq8ikWAM", - rag_index_id="21m00Tcm4TlvDq8ikWAM", ) ``` @@ -6606,14 +6595,6 @@ client.conversational_ai.delete_document_rag_index(
-**rag_index_id:** `str` — The id of RAG index of document from the knowledge base. - -
-
- -
-
- **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -6626,7 +6607,7 @@ client.conversational_ai.delete_document_rag_index(
-
client.conversational_ai.rag_index_overview() +
client.conversational_ai.delete_document_rag_index(...)
@@ -6638,7 +6619,7 @@ client.conversational_ai.delete_document_rag_index(
-Provides total size and other information of RAG indexes used by knowledgebase documents +Delete RAG index for the knowledgebase document.
@@ -6658,7 +6639,10 @@ from elevenlabs import ElevenLabs client = ElevenLabs( api_key="YOUR_API_KEY", ) -client.conversational_ai.rag_index_overview() +client.conversational_ai.delete_document_rag_index( + documentation_id="21m00Tcm4TlvDq8ikWAM", + rag_index_id="21m00Tcm4TlvDq8ikWAM", +) ``` @@ -6674,6 +6658,22 @@ client.conversational_ai.rag_index_overview()
+**documentation_id:** `str` — The id of a document from the knowledge base. This is returned on document addition. + +
+
+ +
+
+ +**rag_index_id:** `str` — The id of RAG index of document from the knowledge base. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -9770,6 +9770,9 @@ client.conversational_ai.knowledge_base.list( page_size=1, search="search", show_only_owned_documents=True, + parent_folder_id="parent_folder_id", + ancestor_folder_id="ancestor_folder_id", + folders_first=True, sort_direction="asc", sort_by="name", use_typesense=True, @@ -9826,6 +9829,30 @@ client.conversational_ai.knowledge_base.list(
+**parent_folder_id:** `typing.Optional[str]` — If set, the endpoint will return only documents that are direct children of the given folder. + +
+
+ +
+
+ +**ancestor_folder_id:** `typing.Optional[str]` — If set, the endpoint will return only documents that are descendants of the given folder. + +
+
+ +
+
+ +**folders_first:** `typing.Optional[bool]` — Whether folders should be returned first in the list of documents. + +
+
+ +
+
+ **sort_direction:** `typing.Optional[SortDirection]` — The direction to sort the results
@@ -9866,6 +9893,82 @@ client.conversational_ai.knowledge_base.list(
+ +
+
+ +
client.conversational_ai.knowledge_base.get_or_create_rag_indexes(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Retrieves and/or creates RAG indexes for multiple knowledge base documents in a single request. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from elevenlabs import ElevenLabs, GetOrCreateRagIndexRequestModel + +client = ElevenLabs( + api_key="YOUR_API_KEY", +) +client.conversational_ai.knowledge_base.get_or_create_rag_indexes( + items=[ + GetOrCreateRagIndexRequestModel( + document_id="document_id", + create_if_missing=True, + model="e5_mistral_7b_instruct", + ) + ], +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**items:** `typing.Sequence[GetOrCreateRagIndexRequestModel]` — List of requested RAG indexes. + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
@@ -12499,6 +12602,14 @@ client.conversational_ai.knowledge_base.documents.create_from_url(
+**parent_folder_id:** `typing.Optional[str]` — If set, the created document or folder will be placed inside the given folder. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -12577,6 +12688,14 @@ core.File` — See core.File for more documentation
+**parent_folder_id:** `typing.Optional[str]` — If set, the created document or folder will be placed inside the given folder. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -12655,6 +12774,14 @@ client.conversational_ai.knowledge_base.documents.create_from_text(
+**parent_folder_id:** `typing.Optional[str]` — If set, the created document or folder will be placed inside the given folder. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -13138,6 +13265,75 @@ client.conversational_ai.knowledge_base.document.compute_rag_index(
+ +
+
+ +## ConversationalAi KnowledgeBase Documents Summaries +
client.conversational_ai.knowledge_base.documents.summaries.get(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Gets multiple knowledge base document summaries by their IDs. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from elevenlabs import ElevenLabs + +client = ElevenLabs( + api_key="YOUR_API_KEY", +) +client.conversational_ai.knowledge_base.documents.summaries.get() + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**document_ids:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — The ids of knowledge base documents. + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
diff --git a/src/elevenlabs/__init__.py b/src/elevenlabs/__init__.py index 098cacf7..3f0ee9b1 100644 --- a/src/elevenlabs/__init__.py +++ b/src/elevenlabs/__init__.py @@ -518,6 +518,7 @@ BatchCallResponse, BatchCallStatus, BatchCallWhatsAppParams, + BatchFailureResponseModel, BillingPeriod, BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostAge, BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostGender, @@ -803,15 +804,21 @@ GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Available, GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Unknown, GetKnowledgeBaseFileResponseModel, + GetKnowledgeBaseFolderResponseModel, GetKnowledgeBaseListResponseModel, GetKnowledgeBaseListResponseModelDocumentsItem, GetKnowledgeBaseListResponseModelDocumentsItem_File, + GetKnowledgeBaseListResponseModelDocumentsItem_Folder, GetKnowledgeBaseListResponseModelDocumentsItem_Text, GetKnowledgeBaseListResponseModelDocumentsItem_Url, GetKnowledgeBaseSummaryFileResponseModel, GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem, GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Available, GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Unknown, + GetKnowledgeBaseSummaryFolderResponseModel, + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem, + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Available, + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Unknown, GetKnowledgeBaseSummaryTextResponseModel, GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem, GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem_Available, @@ -824,6 +831,7 @@ GetKnowledgeBaseUrlResponseModel, GetLibraryVoicesResponse, GetLiveCountResponse, + GetOrCreateRagIndexRequestModel, GetPhoneNumberInboundSipTrunkConfigResponseModel, GetPhoneNumberOutboundSipTrunkConfigResponseModel, GetPhoneNumberResponse, @@ -866,8 +874,15 @@ KnowledgeBaseDocumentChunkResponseModel, KnowledgeBaseDocumentMetadataResponseModel, KnowledgeBaseDocumentType, + KnowledgeBaseFolderPathSegmentResponseModel, KnowledgeBaseLocator, KnowledgeBaseSortBy, + KnowledgeBaseSummaryBatchSuccessfulResponseModel, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_File, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Folder, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Text, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Url, LanguageAddedResponse, LanguageDetectionToolConfig, LanguageDetectionToolResultModel, @@ -1059,6 +1074,7 @@ RagDocumentIndexResponseModel, RagDocumentIndexUsage, RagDocumentIndexesResponseModel, + RagIndexBatchSuccessfulResponseModel, RagIndexOverviewEmbeddingModelResponseModel, RagIndexOverviewResponseModel, RagIndexStatus, @@ -2073,6 +2089,7 @@ "BatchCallResponse": ".types", "BatchCallStatus": ".types", "BatchCallWhatsAppParams": ".types", + "BatchFailureResponseModel": ".types", "BillingPeriod": ".types", "BodyAddAPronunciationDictionaryV1PronunciationDictionariesAddFromRulesPostRulesItem": ".pronunciation_dictionaries", "BodyAddAPronunciationDictionaryV1PronunciationDictionariesAddFromRulesPostRulesItem_Alias": ".pronunciation_dictionaries", @@ -2389,15 +2406,21 @@ "GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Available": ".types", "GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Unknown": ".types", "GetKnowledgeBaseFileResponseModel": ".types", + "GetKnowledgeBaseFolderResponseModel": ".types", "GetKnowledgeBaseListResponseModel": ".types", "GetKnowledgeBaseListResponseModelDocumentsItem": ".types", "GetKnowledgeBaseListResponseModelDocumentsItem_File": ".types", + "GetKnowledgeBaseListResponseModelDocumentsItem_Folder": ".types", "GetKnowledgeBaseListResponseModelDocumentsItem_Text": ".types", "GetKnowledgeBaseListResponseModelDocumentsItem_Url": ".types", "GetKnowledgeBaseSummaryFileResponseModel": ".types", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem": ".types", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Available": ".types", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Unknown": ".types", + "GetKnowledgeBaseSummaryFolderResponseModel": ".types", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem": ".types", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Available": ".types", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Unknown": ".types", "GetKnowledgeBaseSummaryTextResponseModel": ".types", "GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem": ".types", "GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem_Available": ".types", @@ -2410,6 +2433,7 @@ "GetKnowledgeBaseUrlResponseModel": ".types", "GetLibraryVoicesResponse": ".types", "GetLiveCountResponse": ".types", + "GetOrCreateRagIndexRequestModel": ".types", "GetPhoneNumberInboundSipTrunkConfigResponseModel": ".types", "GetPhoneNumberOutboundSipTrunkConfigResponseModel": ".types", "GetPhoneNumberResponse": ".types", @@ -2454,8 +2478,15 @@ "KnowledgeBaseDocumentChunkResponseModel": ".types", "KnowledgeBaseDocumentMetadataResponseModel": ".types", "KnowledgeBaseDocumentType": ".types", + "KnowledgeBaseFolderPathSegmentResponseModel": ".types", "KnowledgeBaseLocator": ".types", "KnowledgeBaseSortBy": ".types", + "KnowledgeBaseSummaryBatchSuccessfulResponseModel": ".types", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData": ".types", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_File": ".types", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Folder": ".types", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Text": ".types", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Url": ".types", "LanguageAddedResponse": ".types", "LanguageDetectionToolConfig": ".types", "LanguageDetectionToolResultModel": ".types", @@ -2655,6 +2686,7 @@ "RagDocumentIndexResponseModel": ".types", "RagDocumentIndexUsage": ".types", "RagDocumentIndexesResponseModel": ".types", + "RagIndexBatchSuccessfulResponseModel": ".types", "RagIndexOverviewEmbeddingModelResponseModel": ".types", "RagIndexOverviewResponseModel": ".types", "RagIndexStatus": ".types", @@ -3626,6 +3658,7 @@ def __dir__(): "BatchCallResponse", "BatchCallStatus", "BatchCallWhatsAppParams", + "BatchFailureResponseModel", "BillingPeriod", "BodyAddAPronunciationDictionaryV1PronunciationDictionariesAddFromRulesPostRulesItem", "BodyAddAPronunciationDictionaryV1PronunciationDictionariesAddFromRulesPostRulesItem_Alias", @@ -3942,15 +3975,21 @@ def __dir__(): "GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Available", "GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Unknown", "GetKnowledgeBaseFileResponseModel", + "GetKnowledgeBaseFolderResponseModel", "GetKnowledgeBaseListResponseModel", "GetKnowledgeBaseListResponseModelDocumentsItem", "GetKnowledgeBaseListResponseModelDocumentsItem_File", + "GetKnowledgeBaseListResponseModelDocumentsItem_Folder", "GetKnowledgeBaseListResponseModelDocumentsItem_Text", "GetKnowledgeBaseListResponseModelDocumentsItem_Url", "GetKnowledgeBaseSummaryFileResponseModel", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Available", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Unknown", + "GetKnowledgeBaseSummaryFolderResponseModel", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Available", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Unknown", "GetKnowledgeBaseSummaryTextResponseModel", "GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem", "GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem_Available", @@ -3963,6 +4002,7 @@ def __dir__(): "GetKnowledgeBaseUrlResponseModel", "GetLibraryVoicesResponse", "GetLiveCountResponse", + "GetOrCreateRagIndexRequestModel", "GetPhoneNumberInboundSipTrunkConfigResponseModel", "GetPhoneNumberOutboundSipTrunkConfigResponseModel", "GetPhoneNumberResponse", @@ -4007,8 +4047,15 @@ def __dir__(): "KnowledgeBaseDocumentChunkResponseModel", "KnowledgeBaseDocumentMetadataResponseModel", "KnowledgeBaseDocumentType", + "KnowledgeBaseFolderPathSegmentResponseModel", "KnowledgeBaseLocator", "KnowledgeBaseSortBy", + "KnowledgeBaseSummaryBatchSuccessfulResponseModel", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_File", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Folder", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Text", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Url", "LanguageAddedResponse", "LanguageDetectionToolConfig", "LanguageDetectionToolResultModel", @@ -4208,6 +4255,7 @@ def __dir__(): "RagDocumentIndexResponseModel", "RagDocumentIndexUsage", "RagDocumentIndexesResponseModel", + "RagIndexBatchSuccessfulResponseModel", "RagIndexOverviewEmbeddingModelResponseModel", "RagIndexOverviewResponseModel", "RagIndexStatus", diff --git a/src/elevenlabs/conversational_ai/__init__.py b/src/elevenlabs/conversational_ai/__init__.py index 32850635..ebc914fb 100644 --- a/src/elevenlabs/conversational_ai/__init__.py +++ b/src/elevenlabs/conversational_ai/__init__.py @@ -24,6 +24,11 @@ twilio, ) from .conversations import ConversationsListRequestSummaryMode + from .knowledge_base import ( + KnowledgeBaseGetOrCreateRagIndexesResponseValue, + KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure, + KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success, + ) from .mcp_servers import McpServerConfigUpdateRequestModelRequestHeadersValue from .phone_numbers import ( PhoneNumbersCreateRequestBody, @@ -45,6 +50,9 @@ "BodyRegisterATwilioCallAndReturnTwiMlV1ConvaiTwilioRegisterCallPostDirection": ".twilio", "ConversationsListRequestSummaryMode": ".conversations", "CreateUnitTestRequestDynamicVariablesValue": ".tests", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue": ".knowledge_base", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure": ".knowledge_base", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success": ".knowledge_base", "McpServerConfigUpdateRequestModelRequestHeadersValue": ".mcp_servers", "PhoneNumbersCreateRequestBody": ".phone_numbers", "PhoneNumbersCreateRequestBody_SipTrunk": ".phone_numbers", @@ -102,6 +110,9 @@ def __dir__(): "BodyRegisterATwilioCallAndReturnTwiMlV1ConvaiTwilioRegisterCallPostDirection", "ConversationsListRequestSummaryMode", "CreateUnitTestRequestDynamicVariablesValue", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success", "McpServerConfigUpdateRequestModelRequestHeadersValue", "PhoneNumbersCreateRequestBody", "PhoneNumbersCreateRequestBody_SipTrunk", diff --git a/src/elevenlabs/conversational_ai/client.py b/src/elevenlabs/conversational_ai/client.py index 6d8806fd..daaa359e 100644 --- a/src/elevenlabs/conversational_ai/client.py +++ b/src/elevenlabs/conversational_ai/client.py @@ -113,6 +113,34 @@ def add_to_knowledge_base( ) return _response.data + def rag_index_overview( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> RagIndexOverviewResponseModel: + """ + Provides total size and other information of RAG indexes used by knowledgebase documents + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + RagIndexOverviewResponseModel + Successful Response + + Examples + -------- + from elevenlabs import ElevenLabs + + client = ElevenLabs( + api_key="YOUR_API_KEY", + ) + client.conversational_ai.rag_index_overview() + """ + _response = self._raw_client.rag_index_overview(request_options=request_options) + return _response.data + def get_document_rag_indexes( self, documentation_id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> RagDocumentIndexesResponseModel: @@ -185,34 +213,6 @@ def delete_document_rag_index( ) return _response.data - def rag_index_overview( - self, *, request_options: typing.Optional[RequestOptions] = None - ) -> RagIndexOverviewResponseModel: - """ - Provides total size and other information of RAG indexes used by knowledgebase documents - - Parameters - ---------- - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - RagIndexOverviewResponseModel - Successful Response - - Examples - -------- - from elevenlabs import ElevenLabs - - client = ElevenLabs( - api_key="YOUR_API_KEY", - ) - client.conversational_ai.rag_index_overview() - """ - _response = self._raw_client.rag_index_overview(request_options=request_options) - return _response.data - @property def conversations(self): if self._conversations is None: @@ -422,23 +422,20 @@ async def main() -> None: ) return _response.data - async def get_document_rag_indexes( - self, documentation_id: str, *, request_options: typing.Optional[RequestOptions] = None - ) -> RagDocumentIndexesResponseModel: + async def rag_index_overview( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> RagIndexOverviewResponseModel: """ - Provides information about all RAG indexes of the specified knowledgebase document. + Provides total size and other information of RAG indexes used by knowledgebase documents Parameters ---------- - documentation_id : str - The id of a document from the knowledge base. This is returned on document addition. - request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - RagDocumentIndexesResponseModel + RagIndexOverviewResponseModel Successful Response Examples @@ -453,36 +450,31 @@ async def get_document_rag_indexes( async def main() -> None: - await client.conversational_ai.get_document_rag_indexes( - documentation_id="21m00Tcm4TlvDq8ikWAM", - ) + await client.conversational_ai.rag_index_overview() asyncio.run(main()) """ - _response = await self._raw_client.get_document_rag_indexes(documentation_id, request_options=request_options) + _response = await self._raw_client.rag_index_overview(request_options=request_options) return _response.data - async def delete_document_rag_index( - self, documentation_id: str, rag_index_id: str, *, request_options: typing.Optional[RequestOptions] = None - ) -> RagDocumentIndexResponseModel: + async def get_document_rag_indexes( + self, documentation_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> RagDocumentIndexesResponseModel: """ - Delete RAG index for the knowledgebase document. + Provides information about all RAG indexes of the specified knowledgebase document. Parameters ---------- documentation_id : str The id of a document from the knowledge base. This is returned on document addition. - rag_index_id : str - The id of RAG index of document from the knowledge base. - request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - RagDocumentIndexResponseModel + RagDocumentIndexesResponseModel Successful Response Examples @@ -497,33 +489,36 @@ async def delete_document_rag_index( async def main() -> None: - await client.conversational_ai.delete_document_rag_index( + await client.conversational_ai.get_document_rag_indexes( documentation_id="21m00Tcm4TlvDq8ikWAM", - rag_index_id="21m00Tcm4TlvDq8ikWAM", ) asyncio.run(main()) """ - _response = await self._raw_client.delete_document_rag_index( - documentation_id, rag_index_id, request_options=request_options - ) + _response = await self._raw_client.get_document_rag_indexes(documentation_id, request_options=request_options) return _response.data - async def rag_index_overview( - self, *, request_options: typing.Optional[RequestOptions] = None - ) -> RagIndexOverviewResponseModel: + async def delete_document_rag_index( + self, documentation_id: str, rag_index_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> RagDocumentIndexResponseModel: """ - Provides total size and other information of RAG indexes used by knowledgebase documents + Delete RAG index for the knowledgebase document. Parameters ---------- + documentation_id : str + The id of a document from the knowledge base. This is returned on document addition. + + rag_index_id : str + The id of RAG index of document from the knowledge base. + request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - RagIndexOverviewResponseModel + RagDocumentIndexResponseModel Successful Response Examples @@ -538,12 +533,17 @@ async def rag_index_overview( async def main() -> None: - await client.conversational_ai.rag_index_overview() + await client.conversational_ai.delete_document_rag_index( + documentation_id="21m00Tcm4TlvDq8ikWAM", + rag_index_id="21m00Tcm4TlvDq8ikWAM", + ) asyncio.run(main()) """ - _response = await self._raw_client.rag_index_overview(request_options=request_options) + _response = await self._raw_client.delete_document_rag_index( + documentation_id, rag_index_id, request_options=request_options + ) return _response.data @property diff --git a/src/elevenlabs/conversational_ai/knowledge_base/__init__.py b/src/elevenlabs/conversational_ai/knowledge_base/__init__.py index d12df712..43d76599 100644 --- a/src/elevenlabs/conversational_ai/knowledge_base/__init__.py +++ b/src/elevenlabs/conversational_ai/knowledge_base/__init__.py @@ -6,26 +6,38 @@ from importlib import import_module if typing.TYPE_CHECKING: + from .types import ( + KnowledgeBaseGetOrCreateRagIndexesResponseValue, + KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure, + KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success, + ) from . import document, documents from .documents import ( DocumentsGetResponse, DocumentsGetResponse_File, + DocumentsGetResponse_Folder, DocumentsGetResponse_Text, DocumentsGetResponse_Url, DocumentsUpdateResponse, DocumentsUpdateResponse_File, + DocumentsUpdateResponse_Folder, DocumentsUpdateResponse_Text, DocumentsUpdateResponse_Url, ) _dynamic_imports: typing.Dict[str, str] = { "DocumentsGetResponse": ".documents", "DocumentsGetResponse_File": ".documents", + "DocumentsGetResponse_Folder": ".documents", "DocumentsGetResponse_Text": ".documents", "DocumentsGetResponse_Url": ".documents", "DocumentsUpdateResponse": ".documents", "DocumentsUpdateResponse_File": ".documents", + "DocumentsUpdateResponse_Folder": ".documents", "DocumentsUpdateResponse_Text": ".documents", "DocumentsUpdateResponse_Url": ".documents", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue": ".types", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure": ".types", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success": ".types", "document": ".document", "documents": ".documents", } @@ -55,12 +67,17 @@ def __dir__(): __all__ = [ "DocumentsGetResponse", "DocumentsGetResponse_File", + "DocumentsGetResponse_Folder", "DocumentsGetResponse_Text", "DocumentsGetResponse_Url", "DocumentsUpdateResponse", "DocumentsUpdateResponse_File", + "DocumentsUpdateResponse_Folder", "DocumentsUpdateResponse_Text", "DocumentsUpdateResponse_Url", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success", "document", "documents", ] diff --git a/src/elevenlabs/conversational_ai/knowledge_base/client.py b/src/elevenlabs/conversational_ai/knowledge_base/client.py index 557195d2..e6217789 100644 --- a/src/elevenlabs/conversational_ai/knowledge_base/client.py +++ b/src/elevenlabs/conversational_ai/knowledge_base/client.py @@ -7,14 +7,20 @@ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper from ...core.request_options import RequestOptions from ...types.get_knowledge_base_list_response_model import GetKnowledgeBaseListResponseModel +from ...types.get_or_create_rag_index_request_model import GetOrCreateRagIndexRequestModel from ...types.knowledge_base_document_type import KnowledgeBaseDocumentType from ...types.knowledge_base_sort_by import KnowledgeBaseSortBy from ...types.sort_direction import SortDirection from .raw_client import AsyncRawKnowledgeBaseClient, RawKnowledgeBaseClient +from .types.knowledge_base_get_or_create_rag_indexes_response_value import ( + KnowledgeBaseGetOrCreateRagIndexesResponseValue, +) if typing.TYPE_CHECKING: from .document.client import AsyncDocumentClient, DocumentClient from .documents.client import AsyncDocumentsClient, DocumentsClient +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) class KnowledgeBaseClient: @@ -44,6 +50,9 @@ def list( types: typing.Optional[ typing.Union[KnowledgeBaseDocumentType, typing.Sequence[KnowledgeBaseDocumentType]] ] = None, + parent_folder_id: typing.Optional[str] = None, + ancestor_folder_id: typing.Optional[str] = None, + folders_first: typing.Optional[bool] = None, sort_direction: typing.Optional[SortDirection] = None, sort_by: typing.Optional[KnowledgeBaseSortBy] = None, use_typesense: typing.Optional[bool] = None, @@ -67,6 +76,15 @@ def list( types : typing.Optional[typing.Union[KnowledgeBaseDocumentType, typing.Sequence[KnowledgeBaseDocumentType]]] If present, the endpoint will return only documents of the given types. + parent_folder_id : typing.Optional[str] + If set, the endpoint will return only documents that are direct children of the given folder. + + ancestor_folder_id : typing.Optional[str] + If set, the endpoint will return only documents that are descendants of the given folder. + + folders_first : typing.Optional[bool] + Whether folders should be returned first in the list of documents. + sort_direction : typing.Optional[SortDirection] The direction to sort the results @@ -98,6 +116,9 @@ def list( page_size=1, search="search", show_only_owned_documents=True, + parent_folder_id="parent_folder_id", + ancestor_folder_id="ancestor_folder_id", + folders_first=True, sort_direction="asc", sort_by="name", use_typesense=True, @@ -109,6 +130,9 @@ def list( search=search, show_only_owned_documents=show_only_owned_documents, types=types, + parent_folder_id=parent_folder_id, + ancestor_folder_id=ancestor_folder_id, + folders_first=folders_first, sort_direction=sort_direction, sort_by=sort_by, use_typesense=use_typesense, @@ -117,6 +141,48 @@ def list( ) return _response.data + def get_or_create_rag_indexes( + self, + *, + items: typing.Sequence[GetOrCreateRagIndexRequestModel], + request_options: typing.Optional[RequestOptions] = None, + ) -> typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue]: + """ + Retrieves and/or creates RAG indexes for multiple knowledge base documents in a single request. + + Parameters + ---------- + items : typing.Sequence[GetOrCreateRagIndexRequestModel] + List of requested RAG indexes. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue] + Successful Response + + Examples + -------- + from elevenlabs import ElevenLabs, GetOrCreateRagIndexRequestModel + + client = ElevenLabs( + api_key="YOUR_API_KEY", + ) + client.conversational_ai.knowledge_base.get_or_create_rag_indexes( + items=[ + GetOrCreateRagIndexRequestModel( + document_id="document_id", + create_if_missing=True, + model="e5_mistral_7b_instruct", + ) + ], + ) + """ + _response = self._raw_client.get_or_create_rag_indexes(items=items, request_options=request_options) + return _response.data + @property def documents(self): if self._documents is None: @@ -161,6 +227,9 @@ async def list( types: typing.Optional[ typing.Union[KnowledgeBaseDocumentType, typing.Sequence[KnowledgeBaseDocumentType]] ] = None, + parent_folder_id: typing.Optional[str] = None, + ancestor_folder_id: typing.Optional[str] = None, + folders_first: typing.Optional[bool] = None, sort_direction: typing.Optional[SortDirection] = None, sort_by: typing.Optional[KnowledgeBaseSortBy] = None, use_typesense: typing.Optional[bool] = None, @@ -184,6 +253,15 @@ async def list( types : typing.Optional[typing.Union[KnowledgeBaseDocumentType, typing.Sequence[KnowledgeBaseDocumentType]]] If present, the endpoint will return only documents of the given types. + parent_folder_id : typing.Optional[str] + If set, the endpoint will return only documents that are direct children of the given folder. + + ancestor_folder_id : typing.Optional[str] + If set, the endpoint will return only documents that are descendants of the given folder. + + folders_first : typing.Optional[bool] + Whether folders should be returned first in the list of documents. + sort_direction : typing.Optional[SortDirection] The direction to sort the results @@ -220,6 +298,9 @@ async def main() -> None: page_size=1, search="search", show_only_owned_documents=True, + parent_folder_id="parent_folder_id", + ancestor_folder_id="ancestor_folder_id", + folders_first=True, sort_direction="asc", sort_by="name", use_typesense=True, @@ -234,6 +315,9 @@ async def main() -> None: search=search, show_only_owned_documents=show_only_owned_documents, types=types, + parent_folder_id=parent_folder_id, + ancestor_folder_id=ancestor_folder_id, + folders_first=folders_first, sort_direction=sort_direction, sort_by=sort_by, use_typesense=use_typesense, @@ -242,6 +326,56 @@ async def main() -> None: ) return _response.data + async def get_or_create_rag_indexes( + self, + *, + items: typing.Sequence[GetOrCreateRagIndexRequestModel], + request_options: typing.Optional[RequestOptions] = None, + ) -> typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue]: + """ + Retrieves and/or creates RAG indexes for multiple knowledge base documents in a single request. + + Parameters + ---------- + items : typing.Sequence[GetOrCreateRagIndexRequestModel] + List of requested RAG indexes. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue] + Successful Response + + Examples + -------- + import asyncio + + from elevenlabs import AsyncElevenLabs, GetOrCreateRagIndexRequestModel + + client = AsyncElevenLabs( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.conversational_ai.knowledge_base.get_or_create_rag_indexes( + items=[ + GetOrCreateRagIndexRequestModel( + document_id="document_id", + create_if_missing=True, + model="e5_mistral_7b_instruct", + ) + ], + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.get_or_create_rag_indexes(items=items, request_options=request_options) + return _response.data + @property def documents(self): if self._documents is None: diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/__init__.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/__init__.py index f32b9ba4..eef069b5 100644 --- a/src/elevenlabs/conversational_ai/knowledge_base/documents/__init__.py +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/__init__.py @@ -9,24 +9,37 @@ from .types import ( DocumentsGetResponse, DocumentsGetResponse_File, + DocumentsGetResponse_Folder, DocumentsGetResponse_Text, DocumentsGetResponse_Url, DocumentsUpdateResponse, DocumentsUpdateResponse_File, + DocumentsUpdateResponse_Folder, DocumentsUpdateResponse_Text, DocumentsUpdateResponse_Url, ) - from . import chunk + from . import chunk, summaries + from .summaries import ( + SummariesGetResponseValue, + SummariesGetResponseValue_Failure, + SummariesGetResponseValue_Success, + ) _dynamic_imports: typing.Dict[str, str] = { "DocumentsGetResponse": ".types", "DocumentsGetResponse_File": ".types", + "DocumentsGetResponse_Folder": ".types", "DocumentsGetResponse_Text": ".types", "DocumentsGetResponse_Url": ".types", "DocumentsUpdateResponse": ".types", "DocumentsUpdateResponse_File": ".types", + "DocumentsUpdateResponse_Folder": ".types", "DocumentsUpdateResponse_Text": ".types", "DocumentsUpdateResponse_Url": ".types", + "SummariesGetResponseValue": ".summaries", + "SummariesGetResponseValue_Failure": ".summaries", + "SummariesGetResponseValue_Success": ".summaries", "chunk": ".chunk", + "summaries": ".summaries", } @@ -54,11 +67,17 @@ def __dir__(): __all__ = [ "DocumentsGetResponse", "DocumentsGetResponse_File", + "DocumentsGetResponse_Folder", "DocumentsGetResponse_Text", "DocumentsGetResponse_Url", "DocumentsUpdateResponse", "DocumentsUpdateResponse_File", + "DocumentsUpdateResponse_Folder", "DocumentsUpdateResponse_Text", "DocumentsUpdateResponse_Url", + "SummariesGetResponseValue", + "SummariesGetResponseValue_Failure", + "SummariesGetResponseValue_Success", "chunk", + "summaries", ] diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/client.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/client.py index 5079b6f5..fe922e32 100644 --- a/src/elevenlabs/conversational_ai/knowledge_base/documents/client.py +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/client.py @@ -15,6 +15,7 @@ if typing.TYPE_CHECKING: from .chunk.client import AsyncChunkClient, ChunkClient + from .summaries.client import AsyncSummariesClient, SummariesClient # this is used as the default value for optional parameters OMIT = typing.cast(typing.Any, ...) @@ -23,6 +24,7 @@ class DocumentsClient: def __init__(self, *, client_wrapper: SyncClientWrapper): self._raw_client = RawDocumentsClient(client_wrapper=client_wrapper) self._client_wrapper = client_wrapper + self._summaries: typing.Optional[SummariesClient] = None self._chunk: typing.Optional[ChunkClient] = None @property @@ -37,7 +39,12 @@ def with_raw_response(self) -> RawDocumentsClient: return self._raw_client def create_from_url( - self, *, url: str, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None + self, + *, + url: str, + name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, ) -> AddKnowledgeBaseResponseModel: """ Create a knowledge base document generated by scraping the given webpage. @@ -50,6 +57,9 @@ def create_from_url( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -69,7 +79,9 @@ def create_from_url( url="url", ) """ - _response = self._raw_client.create_from_url(url=url, name=name, request_options=request_options) + _response = self._raw_client.create_from_url( + url=url, name=name, parent_folder_id=parent_folder_id, request_options=request_options + ) return _response.data def create_from_file( @@ -77,6 +89,7 @@ def create_from_file( *, file: core.File, name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AddKnowledgeBaseResponseModel: """ @@ -90,6 +103,9 @@ def create_from_file( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -107,11 +123,18 @@ def create_from_file( ) client.conversational_ai.knowledge_base.documents.create_from_file() """ - _response = self._raw_client.create_from_file(file=file, name=name, request_options=request_options) + _response = self._raw_client.create_from_file( + file=file, name=name, parent_folder_id=parent_folder_id, request_options=request_options + ) return _response.data def create_from_text( - self, *, text: str, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None + self, + *, + text: str, + name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, ) -> AddKnowledgeBaseResponseModel: """ Create a knowledge base document containing the provided text. @@ -124,6 +147,9 @@ def create_from_text( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -143,7 +169,9 @@ def create_from_text( text="text", ) """ - _response = self._raw_client.create_from_text(text=text, name=name, request_options=request_options) + _response = self._raw_client.create_from_text( + text=text, name=name, parent_folder_id=parent_folder_id, request_options=request_options + ) return _response.data def get( @@ -342,6 +370,14 @@ def get_content(self, documentation_id: str, *, request_options: typing.Optional _response = self._raw_client.get_content(documentation_id, request_options=request_options) return _response.data + @property + def summaries(self): + if self._summaries is None: + from .summaries.client import SummariesClient # noqa: E402 + + self._summaries = SummariesClient(client_wrapper=self._client_wrapper) + return self._summaries + @property def chunk(self): if self._chunk is None: @@ -355,6 +391,7 @@ class AsyncDocumentsClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): self._raw_client = AsyncRawDocumentsClient(client_wrapper=client_wrapper) self._client_wrapper = client_wrapper + self._summaries: typing.Optional[AsyncSummariesClient] = None self._chunk: typing.Optional[AsyncChunkClient] = None @property @@ -369,7 +406,12 @@ def with_raw_response(self) -> AsyncRawDocumentsClient: return self._raw_client async def create_from_url( - self, *, url: str, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None + self, + *, + url: str, + name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, ) -> AddKnowledgeBaseResponseModel: """ Create a knowledge base document generated by scraping the given webpage. @@ -382,6 +424,9 @@ async def create_from_url( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -409,7 +454,9 @@ async def main() -> None: asyncio.run(main()) """ - _response = await self._raw_client.create_from_url(url=url, name=name, request_options=request_options) + _response = await self._raw_client.create_from_url( + url=url, name=name, parent_folder_id=parent_folder_id, request_options=request_options + ) return _response.data async def create_from_file( @@ -417,6 +464,7 @@ async def create_from_file( *, file: core.File, name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AddKnowledgeBaseResponseModel: """ @@ -430,6 +478,9 @@ async def create_from_file( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -455,11 +506,18 @@ async def main() -> None: asyncio.run(main()) """ - _response = await self._raw_client.create_from_file(file=file, name=name, request_options=request_options) + _response = await self._raw_client.create_from_file( + file=file, name=name, parent_folder_id=parent_folder_id, request_options=request_options + ) return _response.data async def create_from_text( - self, *, text: str, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None + self, + *, + text: str, + name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, ) -> AddKnowledgeBaseResponseModel: """ Create a knowledge base document containing the provided text. @@ -472,6 +530,9 @@ async def create_from_text( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -499,7 +560,9 @@ async def main() -> None: asyncio.run(main()) """ - _response = await self._raw_client.create_from_text(text=text, name=name, request_options=request_options) + _response = await self._raw_client.create_from_text( + text=text, name=name, parent_folder_id=parent_folder_id, request_options=request_options + ) return _response.data async def get( @@ -740,6 +803,14 @@ async def main() -> None: _response = await self._raw_client.get_content(documentation_id, request_options=request_options) return _response.data + @property + def summaries(self): + if self._summaries is None: + from .summaries.client import AsyncSummariesClient # noqa: E402 + + self._summaries = AsyncSummariesClient(client_wrapper=self._client_wrapper) + return self._summaries + @property def chunk(self): if self._chunk is None: diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/raw_client.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/raw_client.py index e95d4eb7..18be6543 100644 --- a/src/elevenlabs/conversational_ai/knowledge_base/documents/raw_client.py +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/raw_client.py @@ -26,7 +26,12 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): self._client_wrapper = client_wrapper def create_from_url( - self, *, url: str, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None + self, + *, + url: str, + name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[AddKnowledgeBaseResponseModel]: """ Create a knowledge base document generated by scraping the given webpage. @@ -39,6 +44,9 @@ def create_from_url( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -53,6 +61,7 @@ def create_from_url( json={ "url": url, "name": name, + "parent_folder_id": parent_folder_id, }, headers={ "content-type": "application/json", @@ -91,6 +100,7 @@ def create_from_file( *, file: core.File, name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[AddKnowledgeBaseResponseModel]: """ @@ -104,6 +114,9 @@ def create_from_file( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -117,6 +130,7 @@ def create_from_file( method="POST", data={ "name": name, + "parent_folder_id": parent_folder_id, }, files={ "file": file, @@ -152,7 +166,12 @@ def create_from_file( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) def create_from_text( - self, *, text: str, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None + self, + *, + text: str, + name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[AddKnowledgeBaseResponseModel]: """ Create a knowledge base document containing the provided text. @@ -165,6 +184,9 @@ def create_from_text( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -179,6 +201,7 @@ def create_from_text( json={ "text": text, "name": name, + "parent_folder_id": parent_folder_id, }, headers={ "content-type": "application/json", @@ -506,7 +529,12 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): self._client_wrapper = client_wrapper async def create_from_url( - self, *, url: str, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None + self, + *, + url: str, + name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[AddKnowledgeBaseResponseModel]: """ Create a knowledge base document generated by scraping the given webpage. @@ -519,6 +547,9 @@ async def create_from_url( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -533,6 +564,7 @@ async def create_from_url( json={ "url": url, "name": name, + "parent_folder_id": parent_folder_id, }, headers={ "content-type": "application/json", @@ -571,6 +603,7 @@ async def create_from_file( *, file: core.File, name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[AddKnowledgeBaseResponseModel]: """ @@ -584,6 +617,9 @@ async def create_from_file( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -597,6 +633,7 @@ async def create_from_file( method="POST", data={ "name": name, + "parent_folder_id": parent_folder_id, }, files={ "file": file, @@ -632,7 +669,12 @@ async def create_from_file( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) async def create_from_text( - self, *, text: str, name: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None + self, + *, + text: str, + name: typing.Optional[str] = OMIT, + parent_folder_id: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[AddKnowledgeBaseResponseModel]: """ Create a knowledge base document containing the provided text. @@ -645,6 +687,9 @@ async def create_from_text( name : typing.Optional[str] A custom, human-readable name for the document. + parent_folder_id : typing.Optional[str] + If set, the created document or folder will be placed inside the given folder. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -659,6 +704,7 @@ async def create_from_text( json={ "text": text, "name": name, + "parent_folder_id": parent_folder_id, }, headers={ "content-type": "application/json", diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/__init__.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/__init__.py new file mode 100644 index 00000000..a644d928 --- /dev/null +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/__init__.py @@ -0,0 +1,38 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + +import typing +from importlib import import_module + +if typing.TYPE_CHECKING: + from .types import SummariesGetResponseValue, SummariesGetResponseValue_Failure, SummariesGetResponseValue_Success +_dynamic_imports: typing.Dict[str, str] = { + "SummariesGetResponseValue": ".types", + "SummariesGetResponseValue_Failure": ".types", + "SummariesGetResponseValue_Success": ".types", +} + + +def __getattr__(attr_name: str) -> typing.Any: + module_name = _dynamic_imports.get(attr_name) + if module_name is None: + raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}") + try: + module = import_module(module_name, __package__) + if module_name == f".{attr_name}": + return module + else: + return getattr(module, attr_name) + except ImportError as e: + raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e + except AttributeError as e: + raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e + + +def __dir__(): + lazy_attrs = list(_dynamic_imports.keys()) + return sorted(lazy_attrs) + + +__all__ = ["SummariesGetResponseValue", "SummariesGetResponseValue_Failure", "SummariesGetResponseValue_Success"] diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/client.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/client.py new file mode 100644 index 00000000..914c2250 --- /dev/null +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/client.py @@ -0,0 +1,116 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from .....core.request_options import RequestOptions +from .raw_client import AsyncRawSummariesClient, RawSummariesClient +from .types.summaries_get_response_value import SummariesGetResponseValue + + +class SummariesClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._raw_client = RawSummariesClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> RawSummariesClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + RawSummariesClient + """ + return self._raw_client + + def get( + self, + *, + document_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> typing.Dict[str, SummariesGetResponseValue]: + """ + Gets multiple knowledge base document summaries by their IDs. + + Parameters + ---------- + document_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]] + The ids of knowledge base documents. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + typing.Dict[str, SummariesGetResponseValue] + Successful Response + + Examples + -------- + from elevenlabs import ElevenLabs + + client = ElevenLabs( + api_key="YOUR_API_KEY", + ) + client.conversational_ai.knowledge_base.documents.summaries.get() + """ + _response = self._raw_client.get(document_ids=document_ids, request_options=request_options) + return _response.data + + +class AsyncSummariesClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._raw_client = AsyncRawSummariesClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> AsyncRawSummariesClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + AsyncRawSummariesClient + """ + return self._raw_client + + async def get( + self, + *, + document_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> typing.Dict[str, SummariesGetResponseValue]: + """ + Gets multiple knowledge base document summaries by their IDs. + + Parameters + ---------- + document_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]] + The ids of knowledge base documents. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + typing.Dict[str, SummariesGetResponseValue] + Successful Response + + Examples + -------- + import asyncio + + from elevenlabs import AsyncElevenLabs + + client = AsyncElevenLabs( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.conversational_ai.knowledge_base.documents.summaries.get() + + + asyncio.run(main()) + """ + _response = await self._raw_client.get(document_ids=document_ids, request_options=request_options) + return _response.data diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/raw_client.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/raw_client.py new file mode 100644 index 00000000..33f36b17 --- /dev/null +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/raw_client.py @@ -0,0 +1,135 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from .....core.api_error import ApiError +from .....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from .....core.http_response import AsyncHttpResponse, HttpResponse +from .....core.request_options import RequestOptions +from .....core.unchecked_base_model import construct_type +from .....errors.unprocessable_entity_error import UnprocessableEntityError +from .....types.http_validation_error import HttpValidationError +from .types.summaries_get_response_value import SummariesGetResponseValue + + +class RawSummariesClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def get( + self, + *, + document_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[typing.Dict[str, SummariesGetResponseValue]]: + """ + Gets multiple knowledge base document summaries by their IDs. + + Parameters + ---------- + document_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]] + The ids of knowledge base documents. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[typing.Dict[str, SummariesGetResponseValue]] + Successful Response + """ + _response = self._client_wrapper.httpx_client.request( + "v1/convai/knowledge-base/summaries", + method="GET", + params={ + "document_ids": document_ids, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + typing.Dict[str, SummariesGetResponseValue], + construct_type( + type_=typing.Dict[str, SummariesGetResponseValue], # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + HttpValidationError, + construct_type( + type_=HttpValidationError, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + +class AsyncRawSummariesClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def get( + self, + *, + document_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[typing.Dict[str, SummariesGetResponseValue]]: + """ + Gets multiple knowledge base document summaries by their IDs. + + Parameters + ---------- + document_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]] + The ids of knowledge base documents. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[typing.Dict[str, SummariesGetResponseValue]] + Successful Response + """ + _response = await self._client_wrapper.httpx_client.request( + "v1/convai/knowledge-base/summaries", + method="GET", + params={ + "document_ids": document_ids, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + typing.Dict[str, SummariesGetResponseValue], + construct_type( + type_=typing.Dict[str, SummariesGetResponseValue], # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + HttpValidationError, + construct_type( + type_=HttpValidationError, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/types/__init__.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/types/__init__.py new file mode 100644 index 00000000..61ec6579 --- /dev/null +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/types/__init__.py @@ -0,0 +1,42 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + +import typing +from importlib import import_module + +if typing.TYPE_CHECKING: + from .summaries_get_response_value import ( + SummariesGetResponseValue, + SummariesGetResponseValue_Failure, + SummariesGetResponseValue_Success, + ) +_dynamic_imports: typing.Dict[str, str] = { + "SummariesGetResponseValue": ".summaries_get_response_value", + "SummariesGetResponseValue_Failure": ".summaries_get_response_value", + "SummariesGetResponseValue_Success": ".summaries_get_response_value", +} + + +def __getattr__(attr_name: str) -> typing.Any: + module_name = _dynamic_imports.get(attr_name) + if module_name is None: + raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}") + try: + module = import_module(module_name, __package__) + if module_name == f".{attr_name}": + return module + else: + return getattr(module, attr_name) + except ImportError as e: + raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e + except AttributeError as e: + raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e + + +def __dir__(): + lazy_attrs = list(_dynamic_imports.keys()) + return sorted(lazy_attrs) + + +__all__ = ["SummariesGetResponseValue", "SummariesGetResponseValue_Failure", "SummariesGetResponseValue_Success"] diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/types/summaries_get_response_value.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/types/summaries_get_response_value.py new file mode 100644 index 00000000..ffbafbfc --- /dev/null +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/summaries/types/summaries_get_response_value.py @@ -0,0 +1,49 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations + +import typing + +import pydantic +import typing_extensions +from ......core.pydantic_utilities import IS_PYDANTIC_V2 +from ......core.unchecked_base_model import UncheckedBaseModel, UnionMetadata +from ......types.knowledge_base_summary_batch_successful_response_model_data import ( + KnowledgeBaseSummaryBatchSuccessfulResponseModelData, +) + + +class SummariesGetResponseValue_Success(UncheckedBaseModel): + status: typing.Literal["success"] = "success" + data: KnowledgeBaseSummaryBatchSuccessfulResponseModelData + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class SummariesGetResponseValue_Failure(UncheckedBaseModel): + status: typing.Literal["failure"] = "failure" + error_code: int + error_status: str + error_message: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +SummariesGetResponseValue = typing_extensions.Annotated[ + typing.Union[SummariesGetResponseValue_Success, SummariesGetResponseValue_Failure], + UnionMetadata(discriminant="status"), +] diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/types/__init__.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/types/__init__.py index dc09df13..e0ab4816 100644 --- a/src/elevenlabs/conversational_ai/knowledge_base/documents/types/__init__.py +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/types/__init__.py @@ -9,22 +9,26 @@ from .documents_get_response import ( DocumentsGetResponse, DocumentsGetResponse_File, + DocumentsGetResponse_Folder, DocumentsGetResponse_Text, DocumentsGetResponse_Url, ) from .documents_update_response import ( DocumentsUpdateResponse, DocumentsUpdateResponse_File, + DocumentsUpdateResponse_Folder, DocumentsUpdateResponse_Text, DocumentsUpdateResponse_Url, ) _dynamic_imports: typing.Dict[str, str] = { "DocumentsGetResponse": ".documents_get_response", "DocumentsGetResponse_File": ".documents_get_response", + "DocumentsGetResponse_Folder": ".documents_get_response", "DocumentsGetResponse_Text": ".documents_get_response", "DocumentsGetResponse_Url": ".documents_get_response", "DocumentsUpdateResponse": ".documents_update_response", "DocumentsUpdateResponse_File": ".documents_update_response", + "DocumentsUpdateResponse_Folder": ".documents_update_response", "DocumentsUpdateResponse_Text": ".documents_update_response", "DocumentsUpdateResponse_Url": ".documents_update_response", } @@ -54,10 +58,12 @@ def __dir__(): __all__ = [ "DocumentsGetResponse", "DocumentsGetResponse_File", + "DocumentsGetResponse_Folder", "DocumentsGetResponse_Text", "DocumentsGetResponse_Url", "DocumentsUpdateResponse", "DocumentsUpdateResponse_File", + "DocumentsUpdateResponse_Folder", "DocumentsUpdateResponse_Text", "DocumentsUpdateResponse_Url", ] diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/types/documents_get_response.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/types/documents_get_response.py index 80eac3b4..f6e54d00 100644 --- a/src/elevenlabs/conversational_ai/knowledge_base/documents/types/documents_get_response.py +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/types/documents_get_response.py @@ -10,6 +10,7 @@ from .....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata from .....types.document_usage_mode_enum import DocumentUsageModeEnum from .....types.knowledge_base_document_metadata_response_model import KnowledgeBaseDocumentMetadataResponseModel +from .....types.knowledge_base_folder_path_segment_response_model import KnowledgeBaseFolderPathSegmentResponseModel from .....types.resource_access_info import ResourceAccessInfo @@ -20,8 +21,10 @@ class DocumentsGetResponse_Url(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo - extracted_inner_html: str + folder_parent_id: typing.Optional[str] = None + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = None url: str + extracted_inner_html: str if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 @@ -40,6 +43,8 @@ class DocumentsGetResponse_File(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = None extracted_inner_html: str if IS_PYDANTIC_V2: @@ -59,6 +64,8 @@ class DocumentsGetResponse_Text(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = None extracted_inner_html: str if IS_PYDANTIC_V2: @@ -71,7 +78,30 @@ class Config: extra = pydantic.Extra.allow +class DocumentsGetResponse_Folder(UncheckedBaseModel): + type: typing.Literal["folder"] = "folder" + id: str + name: str + metadata: KnowledgeBaseDocumentMetadataResponseModel + supported_usages: typing.List[DocumentUsageModeEnum] + access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = None + children_count: int + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + DocumentsGetResponse = typing_extensions.Annotated[ - typing.Union[DocumentsGetResponse_Url, DocumentsGetResponse_File, DocumentsGetResponse_Text], + typing.Union[ + DocumentsGetResponse_Url, DocumentsGetResponse_File, DocumentsGetResponse_Text, DocumentsGetResponse_Folder + ], UnionMetadata(discriminant="type"), ] diff --git a/src/elevenlabs/conversational_ai/knowledge_base/documents/types/documents_update_response.py b/src/elevenlabs/conversational_ai/knowledge_base/documents/types/documents_update_response.py index aa372528..bb602fd1 100644 --- a/src/elevenlabs/conversational_ai/knowledge_base/documents/types/documents_update_response.py +++ b/src/elevenlabs/conversational_ai/knowledge_base/documents/types/documents_update_response.py @@ -10,6 +10,7 @@ from .....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata from .....types.document_usage_mode_enum import DocumentUsageModeEnum from .....types.knowledge_base_document_metadata_response_model import KnowledgeBaseDocumentMetadataResponseModel +from .....types.knowledge_base_folder_path_segment_response_model import KnowledgeBaseFolderPathSegmentResponseModel from .....types.resource_access_info import ResourceAccessInfo @@ -20,8 +21,10 @@ class DocumentsUpdateResponse_Url(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo - extracted_inner_html: str + folder_parent_id: typing.Optional[str] = None + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = None url: str + extracted_inner_html: str if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 @@ -40,6 +43,8 @@ class DocumentsUpdateResponse_File(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = None extracted_inner_html: str if IS_PYDANTIC_V2: @@ -59,6 +64,8 @@ class DocumentsUpdateResponse_Text(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = None extracted_inner_html: str if IS_PYDANTIC_V2: @@ -71,7 +78,33 @@ class Config: extra = pydantic.Extra.allow +class DocumentsUpdateResponse_Folder(UncheckedBaseModel): + type: typing.Literal["folder"] = "folder" + id: str + name: str + metadata: KnowledgeBaseDocumentMetadataResponseModel + supported_usages: typing.List[DocumentUsageModeEnum] + access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = None + children_count: int + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + DocumentsUpdateResponse = typing_extensions.Annotated[ - typing.Union[DocumentsUpdateResponse_Url, DocumentsUpdateResponse_File, DocumentsUpdateResponse_Text], + typing.Union[ + DocumentsUpdateResponse_Url, + DocumentsUpdateResponse_File, + DocumentsUpdateResponse_Text, + DocumentsUpdateResponse_Folder, + ], UnionMetadata(discriminant="type"), ] diff --git a/src/elevenlabs/conversational_ai/knowledge_base/raw_client.py b/src/elevenlabs/conversational_ai/knowledge_base/raw_client.py index 15efdca9..bc9c0a8c 100644 --- a/src/elevenlabs/conversational_ai/knowledge_base/raw_client.py +++ b/src/elevenlabs/conversational_ai/knowledge_base/raw_client.py @@ -7,13 +7,21 @@ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper from ...core.http_response import AsyncHttpResponse, HttpResponse from ...core.request_options import RequestOptions +from ...core.serialization import convert_and_respect_annotation_metadata from ...core.unchecked_base_model import construct_type from ...errors.unprocessable_entity_error import UnprocessableEntityError from ...types.get_knowledge_base_list_response_model import GetKnowledgeBaseListResponseModel +from ...types.get_or_create_rag_index_request_model import GetOrCreateRagIndexRequestModel from ...types.http_validation_error import HttpValidationError from ...types.knowledge_base_document_type import KnowledgeBaseDocumentType from ...types.knowledge_base_sort_by import KnowledgeBaseSortBy from ...types.sort_direction import SortDirection +from .types.knowledge_base_get_or_create_rag_indexes_response_value import ( + KnowledgeBaseGetOrCreateRagIndexesResponseValue, +) + +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) class RawKnowledgeBaseClient: @@ -29,6 +37,9 @@ def list( types: typing.Optional[ typing.Union[KnowledgeBaseDocumentType, typing.Sequence[KnowledgeBaseDocumentType]] ] = None, + parent_folder_id: typing.Optional[str] = None, + ancestor_folder_id: typing.Optional[str] = None, + folders_first: typing.Optional[bool] = None, sort_direction: typing.Optional[SortDirection] = None, sort_by: typing.Optional[KnowledgeBaseSortBy] = None, use_typesense: typing.Optional[bool] = None, @@ -52,6 +63,15 @@ def list( types : typing.Optional[typing.Union[KnowledgeBaseDocumentType, typing.Sequence[KnowledgeBaseDocumentType]]] If present, the endpoint will return only documents of the given types. + parent_folder_id : typing.Optional[str] + If set, the endpoint will return only documents that are direct children of the given folder. + + ancestor_folder_id : typing.Optional[str] + If set, the endpoint will return only documents that are descendants of the given folder. + + folders_first : typing.Optional[bool] + Whether folders should be returned first in the list of documents. + sort_direction : typing.Optional[SortDirection] The direction to sort the results @@ -80,6 +100,9 @@ def list( "search": search, "show_only_owned_documents": show_only_owned_documents, "types": types, + "parent_folder_id": parent_folder_id, + "ancestor_folder_id": ancestor_folder_id, + "folders_first": folders_first, "sort_direction": sort_direction, "sort_by": sort_by, "use_typesense": use_typesense, @@ -113,6 +136,68 @@ def list( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + def get_or_create_rag_indexes( + self, + *, + items: typing.Sequence[GetOrCreateRagIndexRequestModel], + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue]]: + """ + Retrieves and/or creates RAG indexes for multiple knowledge base documents in a single request. + + Parameters + ---------- + items : typing.Sequence[GetOrCreateRagIndexRequestModel] + List of requested RAG indexes. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue]] + Successful Response + """ + _response = self._client_wrapper.httpx_client.request( + "v1/convai/knowledge-base/rag-index", + method="POST", + json={ + "items": convert_and_respect_annotation_metadata( + object_=items, annotation=typing.Sequence[GetOrCreateRagIndexRequestModel], direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue], + construct_type( + type_=typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue], # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + HttpValidationError, + construct_type( + type_=HttpValidationError, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + class AsyncRawKnowledgeBaseClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): @@ -127,6 +212,9 @@ async def list( types: typing.Optional[ typing.Union[KnowledgeBaseDocumentType, typing.Sequence[KnowledgeBaseDocumentType]] ] = None, + parent_folder_id: typing.Optional[str] = None, + ancestor_folder_id: typing.Optional[str] = None, + folders_first: typing.Optional[bool] = None, sort_direction: typing.Optional[SortDirection] = None, sort_by: typing.Optional[KnowledgeBaseSortBy] = None, use_typesense: typing.Optional[bool] = None, @@ -150,6 +238,15 @@ async def list( types : typing.Optional[typing.Union[KnowledgeBaseDocumentType, typing.Sequence[KnowledgeBaseDocumentType]]] If present, the endpoint will return only documents of the given types. + parent_folder_id : typing.Optional[str] + If set, the endpoint will return only documents that are direct children of the given folder. + + ancestor_folder_id : typing.Optional[str] + If set, the endpoint will return only documents that are descendants of the given folder. + + folders_first : typing.Optional[bool] + Whether folders should be returned first in the list of documents. + sort_direction : typing.Optional[SortDirection] The direction to sort the results @@ -178,6 +275,9 @@ async def list( "search": search, "show_only_owned_documents": show_only_owned_documents, "types": types, + "parent_folder_id": parent_folder_id, + "ancestor_folder_id": ancestor_folder_id, + "folders_first": folders_first, "sort_direction": sort_direction, "sort_by": sort_by, "use_typesense": use_typesense, @@ -210,3 +310,65 @@ async def list( except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def get_or_create_rag_indexes( + self, + *, + items: typing.Sequence[GetOrCreateRagIndexRequestModel], + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue]]: + """ + Retrieves and/or creates RAG indexes for multiple knowledge base documents in a single request. + + Parameters + ---------- + items : typing.Sequence[GetOrCreateRagIndexRequestModel] + List of requested RAG indexes. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue]] + Successful Response + """ + _response = await self._client_wrapper.httpx_client.request( + "v1/convai/knowledge-base/rag-index", + method="POST", + json={ + "items": convert_and_respect_annotation_metadata( + object_=items, annotation=typing.Sequence[GetOrCreateRagIndexRequestModel], direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue], + construct_type( + type_=typing.Dict[str, KnowledgeBaseGetOrCreateRagIndexesResponseValue], # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + HttpValidationError, + construct_type( + type_=HttpValidationError, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/elevenlabs/conversational_ai/knowledge_base/types/__init__.py b/src/elevenlabs/conversational_ai/knowledge_base/types/__init__.py new file mode 100644 index 00000000..17a5cc39 --- /dev/null +++ b/src/elevenlabs/conversational_ai/knowledge_base/types/__init__.py @@ -0,0 +1,46 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + +import typing +from importlib import import_module + +if typing.TYPE_CHECKING: + from .knowledge_base_get_or_create_rag_indexes_response_value import ( + KnowledgeBaseGetOrCreateRagIndexesResponseValue, + KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure, + KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success, + ) +_dynamic_imports: typing.Dict[str, str] = { + "KnowledgeBaseGetOrCreateRagIndexesResponseValue": ".knowledge_base_get_or_create_rag_indexes_response_value", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure": ".knowledge_base_get_or_create_rag_indexes_response_value", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success": ".knowledge_base_get_or_create_rag_indexes_response_value", +} + + +def __getattr__(attr_name: str) -> typing.Any: + module_name = _dynamic_imports.get(attr_name) + if module_name is None: + raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}") + try: + module = import_module(module_name, __package__) + if module_name == f".{attr_name}": + return module + else: + return getattr(module, attr_name) + except ImportError as e: + raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e + except AttributeError as e: + raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e + + +def __dir__(): + lazy_attrs = list(_dynamic_imports.keys()) + return sorted(lazy_attrs) + + +__all__ = [ + "KnowledgeBaseGetOrCreateRagIndexesResponseValue", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure", + "KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success", +] diff --git a/src/elevenlabs/conversational_ai/knowledge_base/types/knowledge_base_get_or_create_rag_indexes_response_value.py b/src/elevenlabs/conversational_ai/knowledge_base/types/knowledge_base_get_or_create_rag_indexes_response_value.py new file mode 100644 index 00000000..2e384b3b --- /dev/null +++ b/src/elevenlabs/conversational_ai/knowledge_base/types/knowledge_base_get_or_create_rag_indexes_response_value.py @@ -0,0 +1,49 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations + +import typing + +import pydantic +import typing_extensions +from ....core.pydantic_utilities import IS_PYDANTIC_V2 +from ....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata +from ....types.rag_document_index_response_model import RagDocumentIndexResponseModel + + +class KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success(UncheckedBaseModel): + status: typing.Literal["success"] = "success" + data: RagDocumentIndexResponseModel + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure(UncheckedBaseModel): + status: typing.Literal["failure"] = "failure" + error_code: int + error_status: str + error_message: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +KnowledgeBaseGetOrCreateRagIndexesResponseValue = typing_extensions.Annotated[ + typing.Union[ + KnowledgeBaseGetOrCreateRagIndexesResponseValue_Success, KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure + ], + UnionMetadata(discriminant="status"), +] diff --git a/src/elevenlabs/conversational_ai/raw_client.py b/src/elevenlabs/conversational_ai/raw_client.py index 32868c01..19b2f2b1 100644 --- a/src/elevenlabs/conversational_ai/raw_client.py +++ b/src/elevenlabs/conversational_ai/raw_client.py @@ -101,36 +101,33 @@ def add_to_knowledge_base( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - def get_document_rag_indexes( - self, documentation_id: str, *, request_options: typing.Optional[RequestOptions] = None - ) -> HttpResponse[RagDocumentIndexesResponseModel]: + def rag_index_overview( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[RagIndexOverviewResponseModel]: """ - Provides information about all RAG indexes of the specified knowledgebase document. + Provides total size and other information of RAG indexes used by knowledgebase documents Parameters ---------- - documentation_id : str - The id of a document from the knowledge base. This is returned on document addition. - request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - HttpResponse[RagDocumentIndexesResponseModel] + HttpResponse[RagIndexOverviewResponseModel] Successful Response """ _response = self._client_wrapper.httpx_client.request( - f"v1/convai/knowledge-base/{jsonable_encoder(documentation_id)}/rag-index", + "v1/convai/knowledge-base/rag-index", method="GET", request_options=request_options, ) try: if 200 <= _response.status_code < 300: _data = typing.cast( - RagDocumentIndexesResponseModel, + RagIndexOverviewResponseModel, construct_type( - type_=RagDocumentIndexesResponseModel, # type: ignore + type_=RagIndexOverviewResponseModel, # type: ignore object_=_response.json(), ), ) @@ -151,39 +148,36 @@ def get_document_rag_indexes( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - def delete_document_rag_index( - self, documentation_id: str, rag_index_id: str, *, request_options: typing.Optional[RequestOptions] = None - ) -> HttpResponse[RagDocumentIndexResponseModel]: + def get_document_rag_indexes( + self, documentation_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[RagDocumentIndexesResponseModel]: """ - Delete RAG index for the knowledgebase document. + Provides information about all RAG indexes of the specified knowledgebase document. Parameters ---------- documentation_id : str The id of a document from the knowledge base. This is returned on document addition. - rag_index_id : str - The id of RAG index of document from the knowledge base. - request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - HttpResponse[RagDocumentIndexResponseModel] + HttpResponse[RagDocumentIndexesResponseModel] Successful Response """ _response = self._client_wrapper.httpx_client.request( - f"v1/convai/knowledge-base/{jsonable_encoder(documentation_id)}/rag-index/{jsonable_encoder(rag_index_id)}", - method="DELETE", + f"v1/convai/knowledge-base/{jsonable_encoder(documentation_id)}/rag-index", + method="GET", request_options=request_options, ) try: if 200 <= _response.status_code < 300: _data = typing.cast( - RagDocumentIndexResponseModel, + RagDocumentIndexesResponseModel, construct_type( - type_=RagDocumentIndexResponseModel, # type: ignore + type_=RagDocumentIndexesResponseModel, # type: ignore object_=_response.json(), ), ) @@ -204,33 +198,39 @@ def delete_document_rag_index( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - def rag_index_overview( - self, *, request_options: typing.Optional[RequestOptions] = None - ) -> HttpResponse[RagIndexOverviewResponseModel]: + def delete_document_rag_index( + self, documentation_id: str, rag_index_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[RagDocumentIndexResponseModel]: """ - Provides total size and other information of RAG indexes used by knowledgebase documents + Delete RAG index for the knowledgebase document. Parameters ---------- + documentation_id : str + The id of a document from the knowledge base. This is returned on document addition. + + rag_index_id : str + The id of RAG index of document from the knowledge base. + request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - HttpResponse[RagIndexOverviewResponseModel] + HttpResponse[RagDocumentIndexResponseModel] Successful Response """ _response = self._client_wrapper.httpx_client.request( - "v1/convai/knowledge-base/rag-index", - method="GET", + f"v1/convai/knowledge-base/{jsonable_encoder(documentation_id)}/rag-index/{jsonable_encoder(rag_index_id)}", + method="DELETE", request_options=request_options, ) try: if 200 <= _response.status_code < 300: _data = typing.cast( - RagIndexOverviewResponseModel, + RagDocumentIndexResponseModel, construct_type( - type_=RagIndexOverviewResponseModel, # type: ignore + type_=RagDocumentIndexResponseModel, # type: ignore object_=_response.json(), ), ) @@ -332,36 +332,33 @@ async def add_to_knowledge_base( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - async def get_document_rag_indexes( - self, documentation_id: str, *, request_options: typing.Optional[RequestOptions] = None - ) -> AsyncHttpResponse[RagDocumentIndexesResponseModel]: + async def rag_index_overview( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[RagIndexOverviewResponseModel]: """ - Provides information about all RAG indexes of the specified knowledgebase document. + Provides total size and other information of RAG indexes used by knowledgebase documents Parameters ---------- - documentation_id : str - The id of a document from the knowledge base. This is returned on document addition. - request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - AsyncHttpResponse[RagDocumentIndexesResponseModel] + AsyncHttpResponse[RagIndexOverviewResponseModel] Successful Response """ _response = await self._client_wrapper.httpx_client.request( - f"v1/convai/knowledge-base/{jsonable_encoder(documentation_id)}/rag-index", + "v1/convai/knowledge-base/rag-index", method="GET", request_options=request_options, ) try: if 200 <= _response.status_code < 300: _data = typing.cast( - RagDocumentIndexesResponseModel, + RagIndexOverviewResponseModel, construct_type( - type_=RagDocumentIndexesResponseModel, # type: ignore + type_=RagIndexOverviewResponseModel, # type: ignore object_=_response.json(), ), ) @@ -382,39 +379,36 @@ async def get_document_rag_indexes( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - async def delete_document_rag_index( - self, documentation_id: str, rag_index_id: str, *, request_options: typing.Optional[RequestOptions] = None - ) -> AsyncHttpResponse[RagDocumentIndexResponseModel]: + async def get_document_rag_indexes( + self, documentation_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[RagDocumentIndexesResponseModel]: """ - Delete RAG index for the knowledgebase document. + Provides information about all RAG indexes of the specified knowledgebase document. Parameters ---------- documentation_id : str The id of a document from the knowledge base. This is returned on document addition. - rag_index_id : str - The id of RAG index of document from the knowledge base. - request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - AsyncHttpResponse[RagDocumentIndexResponseModel] + AsyncHttpResponse[RagDocumentIndexesResponseModel] Successful Response """ _response = await self._client_wrapper.httpx_client.request( - f"v1/convai/knowledge-base/{jsonable_encoder(documentation_id)}/rag-index/{jsonable_encoder(rag_index_id)}", - method="DELETE", + f"v1/convai/knowledge-base/{jsonable_encoder(documentation_id)}/rag-index", + method="GET", request_options=request_options, ) try: if 200 <= _response.status_code < 300: _data = typing.cast( - RagDocumentIndexResponseModel, + RagDocumentIndexesResponseModel, construct_type( - type_=RagDocumentIndexResponseModel, # type: ignore + type_=RagDocumentIndexesResponseModel, # type: ignore object_=_response.json(), ), ) @@ -435,33 +429,39 @@ async def delete_document_rag_index( raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - async def rag_index_overview( - self, *, request_options: typing.Optional[RequestOptions] = None - ) -> AsyncHttpResponse[RagIndexOverviewResponseModel]: + async def delete_document_rag_index( + self, documentation_id: str, rag_index_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[RagDocumentIndexResponseModel]: """ - Provides total size and other information of RAG indexes used by knowledgebase documents + Delete RAG index for the knowledgebase document. Parameters ---------- + documentation_id : str + The id of a document from the knowledge base. This is returned on document addition. + + rag_index_id : str + The id of RAG index of document from the knowledge base. + request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- - AsyncHttpResponse[RagIndexOverviewResponseModel] + AsyncHttpResponse[RagDocumentIndexResponseModel] Successful Response """ _response = await self._client_wrapper.httpx_client.request( - "v1/convai/knowledge-base/rag-index", - method="GET", + f"v1/convai/knowledge-base/{jsonable_encoder(documentation_id)}/rag-index/{jsonable_encoder(rag_index_id)}", + method="DELETE", request_options=request_options, ) try: if 200 <= _response.status_code < 300: _data = typing.cast( - RagIndexOverviewResponseModel, + RagDocumentIndexResponseModel, construct_type( - type_=RagIndexOverviewResponseModel, # type: ignore + type_=RagDocumentIndexResponseModel, # type: ignore object_=_response.json(), ), ) diff --git a/src/elevenlabs/core/client_wrapper.py b/src/elevenlabs/core/client_wrapper.py index 833c4f9d..6f033055 100644 --- a/src/elevenlabs/core/client_wrapper.py +++ b/src/elevenlabs/core/client_wrapper.py @@ -22,10 +22,10 @@ def __init__( def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { - "User-Agent": "elevenlabs/v2.26.1", + "User-Agent": "elevenlabs/v2.27.0", "X-Fern-Language": "Python", "X-Fern-SDK-Name": "elevenlabs", - "X-Fern-SDK-Version": "v2.26.1", + "X-Fern-SDK-Version": "v2.27.0", **(self.get_custom_headers() or {}), } if self._api_key is not None: diff --git a/src/elevenlabs/types/__init__.py b/src/elevenlabs/types/__init__.py index 9b058d4e..cdd03d5a 100644 --- a/src/elevenlabs/types/__init__.py +++ b/src/elevenlabs/types/__init__.py @@ -582,6 +582,7 @@ from .batch_call_response import BatchCallResponse from .batch_call_status import BatchCallStatus from .batch_call_whats_app_params import BatchCallWhatsAppParams + from .batch_failure_response_model import BatchFailureResponseModel from .billing_period import BillingPeriod from .body_generate_a_random_voice_v_1_voice_generation_generate_voice_post_age import ( BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostAge, @@ -951,10 +952,12 @@ GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Unknown, ) from .get_knowledge_base_file_response_model import GetKnowledgeBaseFileResponseModel + from .get_knowledge_base_folder_response_model import GetKnowledgeBaseFolderResponseModel from .get_knowledge_base_list_response_model import GetKnowledgeBaseListResponseModel from .get_knowledge_base_list_response_model_documents_item import ( GetKnowledgeBaseListResponseModelDocumentsItem, GetKnowledgeBaseListResponseModelDocumentsItem_File, + GetKnowledgeBaseListResponseModelDocumentsItem_Folder, GetKnowledgeBaseListResponseModelDocumentsItem_Text, GetKnowledgeBaseListResponseModelDocumentsItem_Url, ) @@ -964,6 +967,12 @@ GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Available, GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Unknown, ) + from .get_knowledge_base_summary_folder_response_model import GetKnowledgeBaseSummaryFolderResponseModel + from .get_knowledge_base_summary_folder_response_model_dependent_agents_item import ( + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem, + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Available, + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Unknown, + ) from .get_knowledge_base_summary_text_response_model import GetKnowledgeBaseSummaryTextResponseModel from .get_knowledge_base_summary_text_response_model_dependent_agents_item import ( GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem, @@ -980,6 +989,7 @@ from .get_knowledge_base_url_response_model import GetKnowledgeBaseUrlResponseModel from .get_library_voices_response import GetLibraryVoicesResponse from .get_live_count_response import GetLiveCountResponse + from .get_or_create_rag_index_request_model import GetOrCreateRagIndexRequestModel from .get_phone_number_inbound_sip_trunk_config_response_model import ( GetPhoneNumberInboundSipTrunkConfigResponseModel, ) @@ -1032,8 +1042,17 @@ from .knowledge_base_document_chunk_response_model import KnowledgeBaseDocumentChunkResponseModel from .knowledge_base_document_metadata_response_model import KnowledgeBaseDocumentMetadataResponseModel from .knowledge_base_document_type import KnowledgeBaseDocumentType + from .knowledge_base_folder_path_segment_response_model import KnowledgeBaseFolderPathSegmentResponseModel from .knowledge_base_locator import KnowledgeBaseLocator from .knowledge_base_sort_by import KnowledgeBaseSortBy + from .knowledge_base_summary_batch_successful_response_model import KnowledgeBaseSummaryBatchSuccessfulResponseModel + from .knowledge_base_summary_batch_successful_response_model_data import ( + KnowledgeBaseSummaryBatchSuccessfulResponseModelData, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_File, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Folder, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Text, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Url, + ) from .language_added_response import LanguageAddedResponse from .language_detection_tool_config import LanguageDetectionToolConfig from .language_detection_tool_result_model import LanguageDetectionToolResultModel @@ -1251,6 +1270,7 @@ from .rag_document_index_response_model import RagDocumentIndexResponseModel from .rag_document_index_usage import RagDocumentIndexUsage from .rag_document_indexes_response_model import RagDocumentIndexesResponseModel + from .rag_index_batch_successful_response_model import RagIndexBatchSuccessfulResponseModel from .rag_index_overview_embedding_model_response_model import RagIndexOverviewEmbeddingModelResponseModel from .rag_index_overview_response_model import RagIndexOverviewResponseModel from .rag_index_status import RagIndexStatus @@ -2183,6 +2203,7 @@ "BatchCallResponse": ".batch_call_response", "BatchCallStatus": ".batch_call_status", "BatchCallWhatsAppParams": ".batch_call_whats_app_params", + "BatchFailureResponseModel": ".batch_failure_response_model", "BillingPeriod": ".billing_period", "BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostAge": ".body_generate_a_random_voice_v_1_voice_generation_generate_voice_post_age", "BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostGender": ".body_generate_a_random_voice_v_1_voice_generation_generate_voice_post_gender", @@ -2468,15 +2489,21 @@ "GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Available": ".get_knowledge_base_dependent_agents_response_model_agents_item", "GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Unknown": ".get_knowledge_base_dependent_agents_response_model_agents_item", "GetKnowledgeBaseFileResponseModel": ".get_knowledge_base_file_response_model", + "GetKnowledgeBaseFolderResponseModel": ".get_knowledge_base_folder_response_model", "GetKnowledgeBaseListResponseModel": ".get_knowledge_base_list_response_model", "GetKnowledgeBaseListResponseModelDocumentsItem": ".get_knowledge_base_list_response_model_documents_item", "GetKnowledgeBaseListResponseModelDocumentsItem_File": ".get_knowledge_base_list_response_model_documents_item", + "GetKnowledgeBaseListResponseModelDocumentsItem_Folder": ".get_knowledge_base_list_response_model_documents_item", "GetKnowledgeBaseListResponseModelDocumentsItem_Text": ".get_knowledge_base_list_response_model_documents_item", "GetKnowledgeBaseListResponseModelDocumentsItem_Url": ".get_knowledge_base_list_response_model_documents_item", "GetKnowledgeBaseSummaryFileResponseModel": ".get_knowledge_base_summary_file_response_model", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem": ".get_knowledge_base_summary_file_response_model_dependent_agents_item", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Available": ".get_knowledge_base_summary_file_response_model_dependent_agents_item", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Unknown": ".get_knowledge_base_summary_file_response_model_dependent_agents_item", + "GetKnowledgeBaseSummaryFolderResponseModel": ".get_knowledge_base_summary_folder_response_model", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem": ".get_knowledge_base_summary_folder_response_model_dependent_agents_item", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Available": ".get_knowledge_base_summary_folder_response_model_dependent_agents_item", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Unknown": ".get_knowledge_base_summary_folder_response_model_dependent_agents_item", "GetKnowledgeBaseSummaryTextResponseModel": ".get_knowledge_base_summary_text_response_model", "GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem": ".get_knowledge_base_summary_text_response_model_dependent_agents_item", "GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem_Available": ".get_knowledge_base_summary_text_response_model_dependent_agents_item", @@ -2489,6 +2516,7 @@ "GetKnowledgeBaseUrlResponseModel": ".get_knowledge_base_url_response_model", "GetLibraryVoicesResponse": ".get_library_voices_response", "GetLiveCountResponse": ".get_live_count_response", + "GetOrCreateRagIndexRequestModel": ".get_or_create_rag_index_request_model", "GetPhoneNumberInboundSipTrunkConfigResponseModel": ".get_phone_number_inbound_sip_trunk_config_response_model", "GetPhoneNumberOutboundSipTrunkConfigResponseModel": ".get_phone_number_outbound_sip_trunk_config_response_model", "GetPhoneNumberResponse": ".get_phone_number_response", @@ -2531,8 +2559,15 @@ "KnowledgeBaseDocumentChunkResponseModel": ".knowledge_base_document_chunk_response_model", "KnowledgeBaseDocumentMetadataResponseModel": ".knowledge_base_document_metadata_response_model", "KnowledgeBaseDocumentType": ".knowledge_base_document_type", + "KnowledgeBaseFolderPathSegmentResponseModel": ".knowledge_base_folder_path_segment_response_model", "KnowledgeBaseLocator": ".knowledge_base_locator", "KnowledgeBaseSortBy": ".knowledge_base_sort_by", + "KnowledgeBaseSummaryBatchSuccessfulResponseModel": ".knowledge_base_summary_batch_successful_response_model", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData": ".knowledge_base_summary_batch_successful_response_model_data", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_File": ".knowledge_base_summary_batch_successful_response_model_data", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Folder": ".knowledge_base_summary_batch_successful_response_model_data", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Text": ".knowledge_base_summary_batch_successful_response_model_data", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Url": ".knowledge_base_summary_batch_successful_response_model_data", "LanguageAddedResponse": ".language_added_response", "LanguageDetectionToolConfig": ".language_detection_tool_config", "LanguageDetectionToolResultModel": ".language_detection_tool_result_model", @@ -2724,6 +2759,7 @@ "RagDocumentIndexResponseModel": ".rag_document_index_response_model", "RagDocumentIndexUsage": ".rag_document_index_usage", "RagDocumentIndexesResponseModel": ".rag_document_indexes_response_model", + "RagIndexBatchSuccessfulResponseModel": ".rag_index_batch_successful_response_model", "RagIndexOverviewEmbeddingModelResponseModel": ".rag_index_overview_embedding_model_response_model", "RagIndexOverviewResponseModel": ".rag_index_overview_response_model", "RagIndexStatus": ".rag_index_status", @@ -3632,6 +3668,7 @@ def __dir__(): "BatchCallResponse", "BatchCallStatus", "BatchCallWhatsAppParams", + "BatchFailureResponseModel", "BillingPeriod", "BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostAge", "BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostGender", @@ -3917,15 +3954,21 @@ def __dir__(): "GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Available", "GetKnowledgeBaseDependentAgentsResponseModelAgentsItem_Unknown", "GetKnowledgeBaseFileResponseModel", + "GetKnowledgeBaseFolderResponseModel", "GetKnowledgeBaseListResponseModel", "GetKnowledgeBaseListResponseModelDocumentsItem", "GetKnowledgeBaseListResponseModelDocumentsItem_File", + "GetKnowledgeBaseListResponseModelDocumentsItem_Folder", "GetKnowledgeBaseListResponseModelDocumentsItem_Text", "GetKnowledgeBaseListResponseModelDocumentsItem_Url", "GetKnowledgeBaseSummaryFileResponseModel", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Available", "GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem_Unknown", + "GetKnowledgeBaseSummaryFolderResponseModel", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Available", + "GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Unknown", "GetKnowledgeBaseSummaryTextResponseModel", "GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem", "GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem_Available", @@ -3938,6 +3981,7 @@ def __dir__(): "GetKnowledgeBaseUrlResponseModel", "GetLibraryVoicesResponse", "GetLiveCountResponse", + "GetOrCreateRagIndexRequestModel", "GetPhoneNumberInboundSipTrunkConfigResponseModel", "GetPhoneNumberOutboundSipTrunkConfigResponseModel", "GetPhoneNumberResponse", @@ -3980,8 +4024,15 @@ def __dir__(): "KnowledgeBaseDocumentChunkResponseModel", "KnowledgeBaseDocumentMetadataResponseModel", "KnowledgeBaseDocumentType", + "KnowledgeBaseFolderPathSegmentResponseModel", "KnowledgeBaseLocator", "KnowledgeBaseSortBy", + "KnowledgeBaseSummaryBatchSuccessfulResponseModel", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_File", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Folder", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Text", + "KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Url", "LanguageAddedResponse", "LanguageDetectionToolConfig", "LanguageDetectionToolResultModel", @@ -4173,6 +4224,7 @@ def __dir__(): "RagDocumentIndexResponseModel", "RagDocumentIndexUsage", "RagDocumentIndexesResponseModel", + "RagIndexBatchSuccessfulResponseModel", "RagIndexOverviewEmbeddingModelResponseModel", "RagIndexOverviewResponseModel", "RagIndexStatus", diff --git a/src/elevenlabs/types/agent_config.py b/src/elevenlabs/types/agent_config.py index ade3cdc6..7cddb38d 100644 --- a/src/elevenlabs/types/agent_config.py +++ b/src/elevenlabs/types/agent_config.py @@ -22,6 +22,11 @@ class AgentConfig(UncheckedBaseModel): Language of the agent - used for ASR and TTS """ + hinglish_mode: typing.Optional[bool] = pydantic.Field(default=None) + """ + When enabled and language is Hindi, the agent will respond in Hinglish + """ + dynamic_variables: typing.Optional[DynamicVariablesConfig] = pydantic.Field(default=None) """ Configuration for dynamic variables diff --git a/src/elevenlabs/types/agent_config_api_model_workflow_override_input.py b/src/elevenlabs/types/agent_config_api_model_workflow_override_input.py index eb2f6f56..db970b88 100644 --- a/src/elevenlabs/types/agent_config_api_model_workflow_override_input.py +++ b/src/elevenlabs/types/agent_config_api_model_workflow_override_input.py @@ -22,6 +22,11 @@ class AgentConfigApiModelWorkflowOverrideInput(UncheckedBaseModel): Language of the agent - used for ASR and TTS """ + hinglish_mode: typing.Optional[bool] = pydantic.Field(default=None) + """ + When enabled and language is Hindi, the agent will respond in Hinglish + """ + dynamic_variables: typing.Optional[DynamicVariablesConfigWorkflowOverride] = pydantic.Field(default=None) """ Configuration for dynamic variables diff --git a/src/elevenlabs/types/agent_config_api_model_workflow_override_output.py b/src/elevenlabs/types/agent_config_api_model_workflow_override_output.py index 14e49df1..2ea34275 100644 --- a/src/elevenlabs/types/agent_config_api_model_workflow_override_output.py +++ b/src/elevenlabs/types/agent_config_api_model_workflow_override_output.py @@ -22,6 +22,11 @@ class AgentConfigApiModelWorkflowOverrideOutput(UncheckedBaseModel): Language of the agent - used for ASR and TTS """ + hinglish_mode: typing.Optional[bool] = pydantic.Field(default=None) + """ + When enabled and language is Hindi, the agent will respond in Hinglish + """ + dynamic_variables: typing.Optional[DynamicVariablesConfigWorkflowOverride] = pydantic.Field(default=None) """ Configuration for dynamic variables diff --git a/src/elevenlabs/types/batch_call_detailed_response.py b/src/elevenlabs/types/batch_call_detailed_response.py index a1643cab..396ffb8c 100644 --- a/src/elevenlabs/types/batch_call_detailed_response.py +++ b/src/elevenlabs/types/batch_call_detailed_response.py @@ -26,6 +26,7 @@ class BatchCallDetailedResponse(UncheckedBaseModel): total_calls_scheduled: int last_updated_at_unix: int status: BatchCallStatus + retry_count: typing.Optional[int] = None agent_name: str recipients: typing.List[OutboundCallRecipientResponseModel] diff --git a/src/elevenlabs/types/batch_call_response.py b/src/elevenlabs/types/batch_call_response.py index 4d55d7de..81f6ddb3 100644 --- a/src/elevenlabs/types/batch_call_response.py +++ b/src/elevenlabs/types/batch_call_response.py @@ -21,6 +21,7 @@ class BatchCallResponse(UncheckedBaseModel): total_calls_scheduled: int last_updated_at_unix: int status: BatchCallStatus + retry_count: typing.Optional[int] = None agent_name: str if IS_PYDANTIC_V2: diff --git a/src/elevenlabs/types/batch_call_whats_app_params.py b/src/elevenlabs/types/batch_call_whats_app_params.py index e816bdb6..e9635fa6 100644 --- a/src/elevenlabs/types/batch_call_whats_app_params.py +++ b/src/elevenlabs/types/batch_call_whats_app_params.py @@ -8,7 +8,7 @@ class BatchCallWhatsAppParams(UncheckedBaseModel): - whatsapp_business_account_id: str + whatsapp_phone_number_id: typing.Optional[str] = None whatsapp_call_permission_request_template_name: str whatsapp_call_permission_request_template_language_code: str diff --git a/src/elevenlabs/types/batch_failure_response_model.py b/src/elevenlabs/types/batch_failure_response_model.py new file mode 100644 index 00000000..7ca10097 --- /dev/null +++ b/src/elevenlabs/types/batch_failure_response_model.py @@ -0,0 +1,22 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel + + +class BatchFailureResponseModel(UncheckedBaseModel): + error_code: int + error_status: str + error_message: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/conversation_token_db_model.py b/src/elevenlabs/types/conversation_token_db_model.py index 8b8d6475..7b4eb9ef 100644 --- a/src/elevenlabs/types/conversation_token_db_model.py +++ b/src/elevenlabs/types/conversation_token_db_model.py @@ -34,6 +34,11 @@ class ConversationTokenDbModel(UncheckedBaseModel): The purpose of the token """ + token_requester_user_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The user ID of the entity who requested the token + """ + if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 else: diff --git a/src/elevenlabs/types/get_knowledge_base_file_response_model.py b/src/elevenlabs/types/get_knowledge_base_file_response_model.py index 971375d7..b0543050 100644 --- a/src/elevenlabs/types/get_knowledge_base_file_response_model.py +++ b/src/elevenlabs/types/get_knowledge_base_file_response_model.py @@ -7,6 +7,7 @@ from ..core.unchecked_base_model import UncheckedBaseModel from .document_usage_mode_enum import DocumentUsageModeEnum from .knowledge_base_document_metadata_response_model import KnowledgeBaseDocumentMetadataResponseModel +from .knowledge_base_folder_path_segment_response_model import KnowledgeBaseFolderPathSegmentResponseModel from .resource_access_info import ResourceAccessInfo @@ -16,6 +17,18 @@ class GetKnowledgeBaseFileResponseModel(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The ID of the parent folder, or null if the document is at the root level. + """ + + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = pydantic.Field( + default=None + ) + """ + The folder path segments leading to this entity, from root to parent folder. + """ + extracted_inner_html: str if IS_PYDANTIC_V2: diff --git a/src/elevenlabs/types/get_knowledge_base_folder_response_model.py b/src/elevenlabs/types/get_knowledge_base_folder_response_model.py new file mode 100644 index 00000000..ac1dd471 --- /dev/null +++ b/src/elevenlabs/types/get_knowledge_base_folder_response_model.py @@ -0,0 +1,41 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .document_usage_mode_enum import DocumentUsageModeEnum +from .knowledge_base_document_metadata_response_model import KnowledgeBaseDocumentMetadataResponseModel +from .knowledge_base_folder_path_segment_response_model import KnowledgeBaseFolderPathSegmentResponseModel +from .resource_access_info import ResourceAccessInfo + + +class GetKnowledgeBaseFolderResponseModel(UncheckedBaseModel): + id: str + name: str + metadata: KnowledgeBaseDocumentMetadataResponseModel + supported_usages: typing.List[DocumentUsageModeEnum] + access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The ID of the parent folder, or null if the document is at the root level. + """ + + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = pydantic.Field( + default=None + ) + """ + The folder path segments leading to this entity, from root to parent folder. + """ + + children_count: int + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/get_knowledge_base_list_response_model_documents_item.py b/src/elevenlabs/types/get_knowledge_base_list_response_model_documents_item.py index d767c13b..1fa06911 100644 --- a/src/elevenlabs/types/get_knowledge_base_list_response_model_documents_item.py +++ b/src/elevenlabs/types/get_knowledge_base_list_response_model_documents_item.py @@ -12,6 +12,9 @@ from .get_knowledge_base_summary_file_response_model_dependent_agents_item import ( GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem, ) +from .get_knowledge_base_summary_folder_response_model_dependent_agents_item import ( + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem, +) from .get_knowledge_base_summary_text_response_model_dependent_agents_item import ( GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem, ) @@ -29,6 +32,7 @@ class GetKnowledgeBaseListResponseModelDocumentsItem_File(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None dependent_agents: typing.List[GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem] if IS_PYDANTIC_V2: @@ -41,6 +45,27 @@ class Config: extra = pydantic.Extra.allow +class GetKnowledgeBaseListResponseModelDocumentsItem_Folder(UncheckedBaseModel): + type: typing.Literal["folder"] = "folder" + id: str + name: str + metadata: KnowledgeBaseDocumentMetadataResponseModel + supported_usages: typing.List[DocumentUsageModeEnum] + access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + dependent_agents: typing.List[GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem] + children_count: int + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + class GetKnowledgeBaseListResponseModelDocumentsItem_Text(UncheckedBaseModel): type: typing.Literal["text"] = "text" id: str @@ -48,6 +73,7 @@ class GetKnowledgeBaseListResponseModelDocumentsItem_Text(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None dependent_agents: typing.List[GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem] if IS_PYDANTIC_V2: @@ -67,6 +93,7 @@ class GetKnowledgeBaseListResponseModelDocumentsItem_Url(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None dependent_agents: typing.List[GetKnowledgeBaseSummaryUrlResponseModelDependentAgentsItem] url: str @@ -83,6 +110,7 @@ class Config: GetKnowledgeBaseListResponseModelDocumentsItem = typing_extensions.Annotated[ typing.Union[ GetKnowledgeBaseListResponseModelDocumentsItem_File, + GetKnowledgeBaseListResponseModelDocumentsItem_Folder, GetKnowledgeBaseListResponseModelDocumentsItem_Text, GetKnowledgeBaseListResponseModelDocumentsItem_Url, ], diff --git a/src/elevenlabs/types/get_knowledge_base_summary_file_response_model.py b/src/elevenlabs/types/get_knowledge_base_summary_file_response_model.py index c199c8e3..da08e620 100644 --- a/src/elevenlabs/types/get_knowledge_base_summary_file_response_model.py +++ b/src/elevenlabs/types/get_knowledge_base_summary_file_response_model.py @@ -19,6 +19,11 @@ class GetKnowledgeBaseSummaryFileResponseModel(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The ID of the parent folder, or null if the document is at the root level. + """ + dependent_agents: typing.List[GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem] if IS_PYDANTIC_V2: diff --git a/src/elevenlabs/types/get_knowledge_base_summary_folder_response_model.py b/src/elevenlabs/types/get_knowledge_base_summary_folder_response_model.py new file mode 100644 index 00000000..8c0219e3 --- /dev/null +++ b/src/elevenlabs/types/get_knowledge_base_summary_folder_response_model.py @@ -0,0 +1,37 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .document_usage_mode_enum import DocumentUsageModeEnum +from .get_knowledge_base_summary_folder_response_model_dependent_agents_item import ( + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem, +) +from .knowledge_base_document_metadata_response_model import KnowledgeBaseDocumentMetadataResponseModel +from .resource_access_info import ResourceAccessInfo + + +class GetKnowledgeBaseSummaryFolderResponseModel(UncheckedBaseModel): + id: str + name: str + metadata: KnowledgeBaseDocumentMetadataResponseModel + supported_usages: typing.List[DocumentUsageModeEnum] + access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The ID of the parent folder, or null if the document is at the root level. + """ + + dependent_agents: typing.List[GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem] + children_count: int + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/get_knowledge_base_summary_folder_response_model_dependent_agents_item.py b/src/elevenlabs/types/get_knowledge_base_summary_folder_response_model_dependent_agents_item.py new file mode 100644 index 00000000..a45c6708 --- /dev/null +++ b/src/elevenlabs/types/get_knowledge_base_summary_folder_response_model_dependent_agents_item.py @@ -0,0 +1,50 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata +from .dependent_available_agent_identifier_access_level import DependentAvailableAgentIdentifierAccessLevel + + +class GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Available(UncheckedBaseModel): + type: typing.Literal["available"] = "available" + id: str + name: str + created_at_unix_secs: int + access_level: DependentAvailableAgentIdentifierAccessLevel + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Unknown(UncheckedBaseModel): + type: typing.Literal["unknown"] = "unknown" + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem = typing_extensions.Annotated[ + typing.Union[ + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Available, + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem_Unknown, + ], + UnionMetadata(discriminant="type"), +] diff --git a/src/elevenlabs/types/get_knowledge_base_summary_text_response_model.py b/src/elevenlabs/types/get_knowledge_base_summary_text_response_model.py index f24d31e8..e73dc9d8 100644 --- a/src/elevenlabs/types/get_knowledge_base_summary_text_response_model.py +++ b/src/elevenlabs/types/get_knowledge_base_summary_text_response_model.py @@ -19,6 +19,11 @@ class GetKnowledgeBaseSummaryTextResponseModel(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The ID of the parent folder, or null if the document is at the root level. + """ + dependent_agents: typing.List[GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem] if IS_PYDANTIC_V2: diff --git a/src/elevenlabs/types/get_knowledge_base_summary_url_response_model.py b/src/elevenlabs/types/get_knowledge_base_summary_url_response_model.py index ff287d1c..9a17f7ef 100644 --- a/src/elevenlabs/types/get_knowledge_base_summary_url_response_model.py +++ b/src/elevenlabs/types/get_knowledge_base_summary_url_response_model.py @@ -19,6 +19,11 @@ class GetKnowledgeBaseSummaryUrlResponseModel(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The ID of the parent folder, or null if the document is at the root level. + """ + dependent_agents: typing.List[GetKnowledgeBaseSummaryUrlResponseModelDependentAgentsItem] url: str diff --git a/src/elevenlabs/types/get_knowledge_base_text_response_model.py b/src/elevenlabs/types/get_knowledge_base_text_response_model.py index 9d3fd2bb..ccb5a12f 100644 --- a/src/elevenlabs/types/get_knowledge_base_text_response_model.py +++ b/src/elevenlabs/types/get_knowledge_base_text_response_model.py @@ -7,6 +7,7 @@ from ..core.unchecked_base_model import UncheckedBaseModel from .document_usage_mode_enum import DocumentUsageModeEnum from .knowledge_base_document_metadata_response_model import KnowledgeBaseDocumentMetadataResponseModel +from .knowledge_base_folder_path_segment_response_model import KnowledgeBaseFolderPathSegmentResponseModel from .resource_access_info import ResourceAccessInfo @@ -16,6 +17,18 @@ class GetKnowledgeBaseTextResponseModel(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The ID of the parent folder, or null if the document is at the root level. + """ + + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = pydantic.Field( + default=None + ) + """ + The folder path segments leading to this entity, from root to parent folder. + """ + extracted_inner_html: str if IS_PYDANTIC_V2: diff --git a/src/elevenlabs/types/get_knowledge_base_url_response_model.py b/src/elevenlabs/types/get_knowledge_base_url_response_model.py index 30fab8ac..b5777b11 100644 --- a/src/elevenlabs/types/get_knowledge_base_url_response_model.py +++ b/src/elevenlabs/types/get_knowledge_base_url_response_model.py @@ -7,6 +7,7 @@ from ..core.unchecked_base_model import UncheckedBaseModel from .document_usage_mode_enum import DocumentUsageModeEnum from .knowledge_base_document_metadata_response_model import KnowledgeBaseDocumentMetadataResponseModel +from .knowledge_base_folder_path_segment_response_model import KnowledgeBaseFolderPathSegmentResponseModel from .resource_access_info import ResourceAccessInfo @@ -16,8 +17,20 @@ class GetKnowledgeBaseUrlResponseModel(UncheckedBaseModel): metadata: KnowledgeBaseDocumentMetadataResponseModel supported_usages: typing.List[DocumentUsageModeEnum] access_info: ResourceAccessInfo - extracted_inner_html: str + folder_parent_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The ID of the parent folder, or null if the document is at the root level. + """ + + folder_path: typing.Optional[typing.List[KnowledgeBaseFolderPathSegmentResponseModel]] = pydantic.Field( + default=None + ) + """ + The folder path segments leading to this entity, from root to parent folder. + """ + url: str + extracted_inner_html: str if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/elevenlabs/types/get_or_create_rag_index_request_model.py b/src/elevenlabs/types/get_or_create_rag_index_request_model.py new file mode 100644 index 00000000..efceed5b --- /dev/null +++ b/src/elevenlabs/types/get_or_create_rag_index_request_model.py @@ -0,0 +1,34 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .embedding_model_enum import EmbeddingModelEnum + + +class GetOrCreateRagIndexRequestModel(UncheckedBaseModel): + document_id: str = pydantic.Field() + """ + ID of the knowledgebase document for which to retrieve the index + """ + + create_if_missing: bool = pydantic.Field() + """ + Whether to create the RAG index if it does not exist + """ + + model: EmbeddingModelEnum = pydantic.Field() + """ + Embedding model to use for the RAG index + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/knowledge_base_document_type.py b/src/elevenlabs/types/knowledge_base_document_type.py index 521e8e22..06a0713f 100644 --- a/src/elevenlabs/types/knowledge_base_document_type.py +++ b/src/elevenlabs/types/knowledge_base_document_type.py @@ -2,4 +2,4 @@ import typing -KnowledgeBaseDocumentType = typing.Union[typing.Literal["file", "url", "text"], typing.Any] +KnowledgeBaseDocumentType = typing.Union[typing.Literal["file", "url", "text", "folder"], typing.Any] diff --git a/src/elevenlabs/types/knowledge_base_folder_path_segment_response_model.py b/src/elevenlabs/types/knowledge_base_folder_path_segment_response_model.py new file mode 100644 index 00000000..c2231241 --- /dev/null +++ b/src/elevenlabs/types/knowledge_base_folder_path_segment_response_model.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel + + +class KnowledgeBaseFolderPathSegmentResponseModel(UncheckedBaseModel): + id: str + name: typing.Optional[str] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/knowledge_base_summary_batch_successful_response_model.py b/src/elevenlabs/types/knowledge_base_summary_batch_successful_response_model.py new file mode 100644 index 00000000..bb7c6460 --- /dev/null +++ b/src/elevenlabs/types/knowledge_base_summary_batch_successful_response_model.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .knowledge_base_summary_batch_successful_response_model_data import ( + KnowledgeBaseSummaryBatchSuccessfulResponseModelData, +) + + +class KnowledgeBaseSummaryBatchSuccessfulResponseModel(UncheckedBaseModel): + data: KnowledgeBaseSummaryBatchSuccessfulResponseModelData + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/knowledge_base_summary_batch_successful_response_model_data.py b/src/elevenlabs/types/knowledge_base_summary_batch_successful_response_model_data.py new file mode 100644 index 00000000..d5a035ab --- /dev/null +++ b/src/elevenlabs/types/knowledge_base_summary_batch_successful_response_model_data.py @@ -0,0 +1,118 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata +from .document_usage_mode_enum import DocumentUsageModeEnum +from .get_knowledge_base_summary_file_response_model_dependent_agents_item import ( + GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem, +) +from .get_knowledge_base_summary_folder_response_model_dependent_agents_item import ( + GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem, +) +from .get_knowledge_base_summary_text_response_model_dependent_agents_item import ( + GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem, +) +from .get_knowledge_base_summary_url_response_model_dependent_agents_item import ( + GetKnowledgeBaseSummaryUrlResponseModelDependentAgentsItem, +) +from .knowledge_base_document_metadata_response_model import KnowledgeBaseDocumentMetadataResponseModel +from .resource_access_info import ResourceAccessInfo + + +class KnowledgeBaseSummaryBatchSuccessfulResponseModelData_File(UncheckedBaseModel): + type: typing.Literal["file"] = "file" + id: str + name: str + metadata: KnowledgeBaseDocumentMetadataResponseModel + supported_usages: typing.List[DocumentUsageModeEnum] + access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + dependent_agents: typing.List[GetKnowledgeBaseSummaryFileResponseModelDependentAgentsItem] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Folder(UncheckedBaseModel): + type: typing.Literal["folder"] = "folder" + id: str + name: str + metadata: KnowledgeBaseDocumentMetadataResponseModel + supported_usages: typing.List[DocumentUsageModeEnum] + access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + dependent_agents: typing.List[GetKnowledgeBaseSummaryFolderResponseModelDependentAgentsItem] + children_count: int + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Text(UncheckedBaseModel): + type: typing.Literal["text"] = "text" + id: str + name: str + metadata: KnowledgeBaseDocumentMetadataResponseModel + supported_usages: typing.List[DocumentUsageModeEnum] + access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + dependent_agents: typing.List[GetKnowledgeBaseSummaryTextResponseModelDependentAgentsItem] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Url(UncheckedBaseModel): + type: typing.Literal["url"] = "url" + id: str + name: str + metadata: KnowledgeBaseDocumentMetadataResponseModel + supported_usages: typing.List[DocumentUsageModeEnum] + access_info: ResourceAccessInfo + folder_parent_id: typing.Optional[str] = None + dependent_agents: typing.List[GetKnowledgeBaseSummaryUrlResponseModelDependentAgentsItem] + url: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +KnowledgeBaseSummaryBatchSuccessfulResponseModelData = typing_extensions.Annotated[ + typing.Union[ + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_File, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Folder, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Text, + KnowledgeBaseSummaryBatchSuccessfulResponseModelData_Url, + ], + UnionMetadata(discriminant="type"), +] diff --git a/src/elevenlabs/types/rag_index_batch_successful_response_model.py b/src/elevenlabs/types/rag_index_batch_successful_response_model.py new file mode 100644 index 00000000..a4cae16b --- /dev/null +++ b/src/elevenlabs/types/rag_index_batch_successful_response_model.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .rag_document_index_response_model import RagDocumentIndexResponseModel + + +class RagIndexBatchSuccessfulResponseModel(UncheckedBaseModel): + data: RagDocumentIndexResponseModel + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/elevenlabs/types/rag_index_status.py b/src/elevenlabs/types/rag_index_status.py index 8df03401..db05947a 100644 --- a/src/elevenlabs/types/rag_index_status.py +++ b/src/elevenlabs/types/rag_index_status.py @@ -3,6 +3,14 @@ import typing RagIndexStatus = typing.Union[ - typing.Literal["created", "processing", "failed", "succeeded", "rag_limit_exceeded", "document_too_small"], + typing.Literal[ + "created", + "processing", + "failed", + "succeeded", + "rag_limit_exceeded", + "document_too_small", + "cannot_index_folder", + ], typing.Any, ] diff --git a/src/elevenlabs/types/whats_app_conversation_info.py b/src/elevenlabs/types/whats_app_conversation_info.py index b3942313..734c55d9 100644 --- a/src/elevenlabs/types/whats_app_conversation_info.py +++ b/src/elevenlabs/types/whats_app_conversation_info.py @@ -10,7 +10,7 @@ class WhatsAppConversationInfo(UncheckedBaseModel): direction: typing.Optional[WhatsAppConversationInfoDirection] = None - whatsapp_business_account_id: str + whatsapp_phone_number_id: typing.Optional[str] = None whatsapp_user_id: str if IS_PYDANTIC_V2: diff --git a/src/elevenlabs/types/widget_config.py b/src/elevenlabs/types/widget_config.py index 9396e3b0..174c1b95 100644 --- a/src/elevenlabs/types/widget_config.py +++ b/src/elevenlabs/types/widget_config.py @@ -172,6 +172,11 @@ class WidgetConfig(UncheckedBaseModel): Whether the user should be able to send text messages """ + conversation_mode_toggle_enabled: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether to enable the conversation mode toggle in the widget + """ + default_expanded: typing.Optional[bool] = pydantic.Field(default=None) """ Whether the widget should be expanded by default diff --git a/src/elevenlabs/types/widget_config_response.py b/src/elevenlabs/types/widget_config_response.py index 57594c47..da5d205f 100644 --- a/src/elevenlabs/types/widget_config_response.py +++ b/src/elevenlabs/types/widget_config_response.py @@ -172,6 +172,11 @@ class WidgetConfigResponse(UncheckedBaseModel): Whether the user should be able to send text messages """ + conversation_mode_toggle_enabled: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether to enable the conversation mode toggle in the widget + """ + default_expanded: typing.Optional[bool] = pydantic.Field(default=None) """ Whether the widget should be expanded by default diff --git a/src/elevenlabs/types/workspace_resource_type.py b/src/elevenlabs/types/workspace_resource_type.py index 214bcaf1..295221d8 100644 --- a/src/elevenlabs/types/workspace_resource_type.py +++ b/src/elevenlabs/types/workspace_resource_type.py @@ -30,6 +30,7 @@ "convai_agent_versions_deployments", "dashboard", "dashboard_configuration", + "convai_agent_drafts", ], typing.Any, ]