diff --git a/pyproject.toml b/pyproject.toml index 6aa9126..f194200 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "credal" [tool.poetry] name = "credal" -version = "0.1.1" +version = "0.1.2" description = "" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md index 5af2d78..e500058 100644 --- a/reference.md +++ b/reference.md @@ -1332,6 +1332,80 @@ client.document_collections.remove_documents_from_collection( + + + + +
client.document_collections.list_documents_in_collection(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +List documents in a collection +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +import uuid + +from credal import CredalApi + +client = CredalApi( + api_key="YOUR_API_KEY", +) +client.document_collections.list_documents_in_collection( + collection_id=uuid.UUID( + "82e4b12a-6990-45d4-8ebd-85c00e030c24", + ), +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**collection_id:** `uuid.UUID` — The ID of the document collection to list documents from. + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
diff --git a/src/credal/__init__.py b/src/credal/__init__.py index 7db149c..f1485e9 100644 --- a/src/credal/__init__.py +++ b/src/credal/__init__.py @@ -71,6 +71,7 @@ from .document_collections import ( CreateCollectionResponse, DeleteCollectionResponse, + ListDocumentsInCollectionResponse, MongoCollectionSyncConfig, MongoCollectionSyncResponse, MongoSourceFieldsConfig, @@ -142,6 +143,7 @@ "InitialChunk", "InputVariable", "InsertedAuditLog", + "ListDocumentsInCollectionResponse", "MessageBlocked", "MessageFeedback", "MessageReply", diff --git a/src/credal/core/client_wrapper.py b/src/credal/core/client_wrapper.py index d5c399c..3d0b4b5 100644 --- a/src/credal/core/client_wrapper.py +++ b/src/credal/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": "credal/0.1.1", + "User-Agent": "credal/0.1.2", "X-Fern-Language": "Python", "X-Fern-SDK-Name": "credal", - "X-Fern-SDK-Version": "0.1.1", + "X-Fern-SDK-Version": "0.1.2", **(self.get_custom_headers() or {}), } headers["Authorization"] = f"Bearer {self._get_api_key()}" diff --git a/src/credal/document_collections/__init__.py b/src/credal/document_collections/__init__.py index 78eac6e..b8aa34e 100644 --- a/src/credal/document_collections/__init__.py +++ b/src/credal/document_collections/__init__.py @@ -5,6 +5,7 @@ from .types import ( CreateCollectionResponse, DeleteCollectionResponse, + ListDocumentsInCollectionResponse, MongoCollectionSyncConfig, MongoCollectionSyncResponse, MongoSourceFieldsConfig, @@ -13,6 +14,7 @@ __all__ = [ "CreateCollectionResponse", "DeleteCollectionResponse", + "ListDocumentsInCollectionResponse", "MongoCollectionSyncConfig", "MongoCollectionSyncResponse", "MongoSourceFieldsConfig", diff --git a/src/credal/document_collections/client.py b/src/credal/document_collections/client.py index 2be7e83..586551e 100644 --- a/src/credal/document_collections/client.py +++ b/src/credal/document_collections/client.py @@ -10,6 +10,7 @@ from .raw_client import AsyncRawDocumentCollectionsClient, RawDocumentCollectionsClient from .types.create_collection_response import CreateCollectionResponse from .types.delete_collection_response import DeleteCollectionResponse +from .types.list_documents_in_collection_response import ListDocumentsInCollectionResponse from .types.mongo_collection_sync_config import MongoCollectionSyncConfig from .types.mongo_collection_sync_response import MongoCollectionSyncResponse @@ -144,6 +145,44 @@ def remove_documents_from_collection( ) return _response.data + def list_documents_in_collection( + self, *, collection_id: uuid.UUID, request_options: typing.Optional[RequestOptions] = None + ) -> ListDocumentsInCollectionResponse: + """ + List documents in a collection + + Parameters + ---------- + collection_id : uuid.UUID + The ID of the document collection to list documents from. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ListDocumentsInCollectionResponse + + Examples + -------- + import uuid + + from credal import CredalApi + + client = CredalApi( + api_key="YOUR_API_KEY", + ) + client.document_collections.list_documents_in_collection( + collection_id=uuid.UUID( + "82e4b12a-6990-45d4-8ebd-85c00e030c24", + ), + ) + """ + _response = self._raw_client.list_documents_in_collection( + collection_id=collection_id, request_options=request_options + ) + return _response.data + def create_collection( self, *, @@ -500,6 +539,51 @@ async def main() -> None: ) return _response.data + async def list_documents_in_collection( + self, *, collection_id: uuid.UUID, request_options: typing.Optional[RequestOptions] = None + ) -> ListDocumentsInCollectionResponse: + """ + List documents in a collection + + Parameters + ---------- + collection_id : uuid.UUID + The ID of the document collection to list documents from. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ListDocumentsInCollectionResponse + + Examples + -------- + import asyncio + import uuid + + from credal import AsyncCredalApi + + client = AsyncCredalApi( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.document_collections.list_documents_in_collection( + collection_id=uuid.UUID( + "82e4b12a-6990-45d4-8ebd-85c00e030c24", + ), + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.list_documents_in_collection( + collection_id=collection_id, request_options=request_options + ) + return _response.data + async def create_collection( self, *, diff --git a/src/credal/document_collections/raw_client.py b/src/credal/document_collections/raw_client.py index 58d8373..aa478bc 100644 --- a/src/credal/document_collections/raw_client.py +++ b/src/credal/document_collections/raw_client.py @@ -14,6 +14,7 @@ from ..core.serialization import convert_and_respect_annotation_metadata from .types.create_collection_response import CreateCollectionResponse from .types.delete_collection_response import DeleteCollectionResponse +from .types.list_documents_in_collection_response import ListDocumentsInCollectionResponse from .types.mongo_collection_sync_config import MongoCollectionSyncConfig from .types.mongo_collection_sync_response import MongoCollectionSyncResponse @@ -115,6 +116,47 @@ def remove_documents_from_collection( 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 list_documents_in_collection( + self, *, collection_id: uuid.UUID, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[ListDocumentsInCollectionResponse]: + """ + List documents in a collection + + Parameters + ---------- + collection_id : uuid.UUID + The ID of the document collection to list documents from. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[ListDocumentsInCollectionResponse] + """ + _response = self._client_wrapper.httpx_client.request( + "v0/documentCollections/listDocumentsInCollection", + method="GET", + params={ + "collectionId": collection_id, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ListDocumentsInCollectionResponse, + parse_obj_as( + type_=ListDocumentsInCollectionResponse, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + _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) + def create_collection( self, *, @@ -416,6 +458,47 @@ async def remove_documents_from_collection( 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 list_documents_in_collection( + self, *, collection_id: uuid.UUID, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[ListDocumentsInCollectionResponse]: + """ + List documents in a collection + + Parameters + ---------- + collection_id : uuid.UUID + The ID of the document collection to list documents from. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[ListDocumentsInCollectionResponse] + """ + _response = await self._client_wrapper.httpx_client.request( + "v0/documentCollections/listDocumentsInCollection", + method="GET", + params={ + "collectionId": collection_id, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ListDocumentsInCollectionResponse, + parse_obj_as( + type_=ListDocumentsInCollectionResponse, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + _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) + async def create_collection( self, *, diff --git a/src/credal/document_collections/types/__init__.py b/src/credal/document_collections/types/__init__.py index e264feb..60e6521 100644 --- a/src/credal/document_collections/types/__init__.py +++ b/src/credal/document_collections/types/__init__.py @@ -4,6 +4,7 @@ from .create_collection_response import CreateCollectionResponse from .delete_collection_response import DeleteCollectionResponse +from .list_documents_in_collection_response import ListDocumentsInCollectionResponse from .mongo_collection_sync_config import MongoCollectionSyncConfig from .mongo_collection_sync_response import MongoCollectionSyncResponse from .mongo_source_fields_config import MongoSourceFieldsConfig @@ -11,6 +12,7 @@ __all__ = [ "CreateCollectionResponse", "DeleteCollectionResponse", + "ListDocumentsInCollectionResponse", "MongoCollectionSyncConfig", "MongoCollectionSyncResponse", "MongoSourceFieldsConfig", diff --git a/src/credal/document_collections/types/list_documents_in_collection_response.py b/src/credal/document_collections/types/list_documents_in_collection_response.py new file mode 100644 index 0000000..e0b5c39 --- /dev/null +++ b/src/credal/document_collections/types/list_documents_in_collection_response.py @@ -0,0 +1,24 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ...common.types.resource_identifier import ResourceIdentifier +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ...core.serialization import FieldMetadata + + +class ListDocumentsInCollectionResponse(UniversalBaseModel): + resource_identifiers: typing_extensions.Annotated[ + typing.List[ResourceIdentifier], FieldMetadata(alias="resourceIdentifiers") + ] + + 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