airia 0.1.36__py3-none-any.whl → 0.1.38__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,7 @@ from ._request_handler import AsyncRequestHandler
11
11
  from .attachments import AsyncAttachments
12
12
  from .base_client import AiriaBaseClient
13
13
  from .conversations import AsyncConversations
14
+ from .data_store import AsyncDataStore
14
15
  from .data_vector_search import AsyncDataVectorSearch
15
16
  from .deployments import AsyncDeployments
16
17
  from .library import AsyncLibrary
@@ -70,6 +71,7 @@ class AiriaAsyncClient(AiriaBaseClient):
70
71
  self.project = AsyncProject(self._request_handler)
71
72
  self.conversations = AsyncConversations(self._request_handler)
72
73
  self.store = AsyncStore(self._request_handler)
74
+ self.data_store = AsyncDataStore(self._request_handler)
73
75
  self.deployments = AsyncDeployments(self._request_handler)
74
76
  self.data_vector_search = AsyncDataVectorSearch(self._request_handler)
75
77
  self.library = AsyncLibrary(self._request_handler)
@@ -0,0 +1,4 @@
1
+ from .async_data_store import AsyncDataStore
2
+ from .sync_data_store import DataStore
3
+
4
+ __all__ = ["DataStore", "AsyncDataStore"]
@@ -0,0 +1,15 @@
1
+ from .._request_handler import AsyncRequestHandler
2
+ from .store import AsyncStore
3
+
4
+
5
+ class AsyncDataStore:
6
+ """Async Data Store client for browsing files and folders in store connectors."""
7
+
8
+ def __init__(self, request_handler: AsyncRequestHandler):
9
+ """
10
+ Initialize the AsyncDataStore client.
11
+
12
+ Args:
13
+ request_handler: The async request handler for making API calls
14
+ """
15
+ self.store = AsyncStore(request_handler)
@@ -0,0 +1,4 @@
1
+ from .async_store import AsyncStore
2
+ from .sync_store import Store
3
+
4
+ __all__ = ["Store", "AsyncStore"]
@@ -0,0 +1,114 @@
1
+ from typing import Optional
2
+
3
+ from ....types.api.data_store.store import GetFilesAndFoldersResponse
4
+ from ..._request_handler import AsyncRequestHandler
5
+ from .base_store import BaseStore
6
+
7
+
8
+ class AsyncStore(BaseStore):
9
+ """Async Store client for browsing files and folders."""
10
+
11
+ def __init__(self, request_handler: AsyncRequestHandler):
12
+ super().__init__(request_handler)
13
+
14
+ async def get_files_and_folders(
15
+ self,
16
+ store_connector_id: str,
17
+ project_id: str,
18
+ folder_id: Optional[str] = None,
19
+ page_number: Optional[int] = None,
20
+ page_size: Optional[int] = None,
21
+ sort_by: Optional[str] = None,
22
+ sort_order: Optional[str] = None,
23
+ filter_by: Optional[str] = None,
24
+ filter_value: Optional[str] = None,
25
+ correlation_id: Optional[str] = None,
26
+ ) -> GetFilesAndFoldersResponse:
27
+ """
28
+ Retrieve files and folders from a store connector in the Airia data store.
29
+
30
+ This method retrieves information about files and folders in the specified
31
+ store connector, with optional navigation into specific folders and support
32
+ for pagination, sorting, and filtering.
33
+
34
+ Args:
35
+ store_connector_id: The unique identifier of the store connector (GUID format)
36
+ project_id: The unique identifier of the project (GUID format)
37
+ folder_id: Optional folder ID to browse within a specific folder (GUID format).
38
+ If not provided, retrieves items from the root level.
39
+ page_number: Page number for pagination (1-indexed)
40
+ page_size: Number of items per page
41
+ sort_by: Field to sort by (e.g., "lastSyncAt", "name")
42
+ sort_order: Sort order ("ASC" or "DESC")
43
+ filter_by: Field to filter by
44
+ filter_value: Value to filter by
45
+ correlation_id: Optional correlation ID for request tracing
46
+
47
+ Returns:
48
+ GetFilesAndFoldersResponse: List of files and folders with metadata and total count
49
+
50
+ Raises:
51
+ AiriaAPIError: If the API request fails, including cases where:
52
+ - The store_connector_id doesn't exist (404)
53
+ - The project_id doesn't exist (404)
54
+ - The folder_id is invalid (404)
55
+ - Authentication fails (401)
56
+ - Access is forbidden (403)
57
+ - Server errors (5xx)
58
+ ValueError: If required parameters are missing or invalid
59
+
60
+ Example:
61
+ ```python
62
+ from airia import AiriaAsyncClient
63
+
64
+ async with AiriaAsyncClient(api_key="your_api_key") as client:
65
+ # Get files and folders from root level
66
+ response = await client.data_store.store.get_files_and_folders(
67
+ store_connector_id="02b2ef8b-8bff-42c3-9ddb-e325c893176e",
68
+ project_id="0196162b-1553-71b2-8ebf-44594717936e"
69
+ )
70
+
71
+ # Browse a specific folder with pagination and sorting
72
+ response = await client.data_store.store.get_files_and_folders(
73
+ store_connector_id="02b2ef8b-8bff-42c3-9ddb-e325c893176e",
74
+ project_id="0196162b-1553-71b2-8ebf-44594717936e",
75
+ folder_id="3292db69-f365-4bb6-a2b6-a017a187fb77",
76
+ page_number=1,
77
+ page_size=50,
78
+ sort_by="lastSyncAt",
79
+ sort_order="DESC"
80
+ )
81
+
82
+ # Access the results
83
+ if response.files_and_folders:
84
+ for item in response.files_and_folders:
85
+ print(f"{item.name} ({item.type})")
86
+ if item.type == "folder":
87
+ print(f" Contains {item.file_count} files, {item.folder_count} folders")
88
+
89
+ print(f"Total items: {response.total_count}")
90
+ ```
91
+
92
+ Note:
93
+ The response includes:
94
+ - files_and_folders: List of file and folder objects with metadata
95
+ - total_count: Total number of items (useful for pagination)
96
+ """
97
+ request_data = self._pre_get_files_and_folders(
98
+ store_connector_id=store_connector_id,
99
+ project_id=project_id,
100
+ folder_id=folder_id,
101
+ page_number=page_number,
102
+ page_size=page_size,
103
+ sort_by=sort_by,
104
+ sort_order=sort_order,
105
+ filter_by=filter_by,
106
+ filter_value=filter_value,
107
+ correlation_id=correlation_id,
108
+ )
109
+
110
+ response = await self._request_handler.make_request(
111
+ "GET", request_data, return_json=True
112
+ )
113
+
114
+ return GetFilesAndFoldersResponse(**response)
@@ -0,0 +1,73 @@
1
+ from typing import Optional, Union
2
+ from urllib.parse import urljoin
3
+
4
+ from ..._request_handler import AsyncRequestHandler, RequestHandler
5
+
6
+
7
+ class BaseStore:
8
+ def __init__(self, request_handler: Union[RequestHandler, AsyncRequestHandler]):
9
+ self._request_handler = request_handler
10
+
11
+ def _pre_get_files_and_folders(
12
+ self,
13
+ store_connector_id: str,
14
+ project_id: str,
15
+ folder_id: Optional[str] = None,
16
+ page_number: Optional[int] = None,
17
+ page_size: Optional[int] = None,
18
+ sort_by: Optional[str] = None,
19
+ sort_order: Optional[str] = None,
20
+ filter_by: Optional[str] = None,
21
+ filter_value: Optional[str] = None,
22
+ correlation_id: Optional[str] = None,
23
+ ):
24
+ """
25
+ Prepare request data for get files and folders endpoint.
26
+
27
+ This internal method constructs the URL and query parameters for
28
+ retrieving files and folders from a store connector.
29
+
30
+ Args:
31
+ store_connector_id: ID of the store connector
32
+ project_id: ID of the project
33
+ folder_id: Optional folder ID to browse within a specific folder
34
+ page_number: Page number for pagination
35
+ page_size: Number of items per page
36
+ sort_by: Field to sort by
37
+ sort_order: Sort order (ASC or DESC)
38
+ filter_by: Field to filter by
39
+ filter_value: Value to filter by
40
+ correlation_id: Optional correlation ID for tracing
41
+
42
+ Returns:
43
+ RequestData: Prepared request data for the get files and folders endpoint
44
+ """
45
+ # Build URL with optional folder_id
46
+ if folder_id:
47
+ url_path = f"datastore/v1/store/{store_connector_id}/folders/{folder_id}"
48
+ else:
49
+ url_path = f"datastore/v1/store/{store_connector_id}/folders/"
50
+
51
+ url = urljoin(self._request_handler.base_url, url_path)
52
+
53
+ # Build query parameters
54
+ params = {"projectId": project_id}
55
+
56
+ if page_number is not None:
57
+ params["pagingParameters.pageNumber"] = page_number
58
+ if page_size is not None:
59
+ params["pagingParameters.pageSize"] = page_size
60
+ if sort_by is not None:
61
+ params["sortingParameters.sortBy"] = sort_by
62
+ if sort_order is not None:
63
+ params["sortingParameters.sortOrder"] = sort_order
64
+ if filter_by is not None:
65
+ params["filteringParameters.filterBy"] = filter_by
66
+ if filter_value is not None:
67
+ params["filteringParameters.filterValue"] = filter_value
68
+
69
+ request_data = self._request_handler.prepare_request(
70
+ url, params=params, payload=None, correlation_id=correlation_id
71
+ )
72
+
73
+ return request_data
@@ -0,0 +1,114 @@
1
+ from typing import Optional
2
+
3
+ from ....types.api.data_store.store import GetFilesAndFoldersResponse
4
+ from ..._request_handler import RequestHandler
5
+ from .base_store import BaseStore
6
+
7
+
8
+ class Store(BaseStore):
9
+ """Store client for browsing files and folders."""
10
+ def __init__(self, request_handler: RequestHandler):
11
+ super().__init__(request_handler)
12
+
13
+ def get_files_and_folders(
14
+ self,
15
+ store_connector_id: str,
16
+ project_id: str,
17
+ folder_id: Optional[str] = None,
18
+ page_number: Optional[int] = None,
19
+ page_size: Optional[int] = None,
20
+ sort_by: Optional[str] = None,
21
+ sort_order: Optional[str] = None,
22
+ filter_by: Optional[str] = None,
23
+ filter_value: Optional[str] = None,
24
+ correlation_id: Optional[str] = None,
25
+ ) -> GetFilesAndFoldersResponse:
26
+ """
27
+ Retrieve files and folders from a store connector in the Airia data store.
28
+
29
+ This method retrieves information about files and folders in the specified
30
+ store connector, with optional navigation into specific folders and support
31
+ for pagination, sorting, and filtering.
32
+
33
+ Args:
34
+ store_connector_id: The unique identifier of the store connector (GUID format)
35
+ project_id: The unique identifier of the project (GUID format)
36
+ folder_id: Optional folder ID to browse within a specific folder (GUID format).
37
+ If not provided, retrieves items from the root level.
38
+ page_number: Page number for pagination (1-indexed)
39
+ page_size: Number of items per page
40
+ sort_by: Field to sort by (e.g., "lastSyncAt", "name")
41
+ sort_order: Sort order ("ASC" or "DESC")
42
+ filter_by: Field to filter by
43
+ filter_value: Value to filter by
44
+ correlation_id: Optional correlation ID for request tracing
45
+
46
+ Returns:
47
+ GetFilesAndFoldersResponse: List of files and folders with metadata and total count
48
+
49
+ Raises:
50
+ AiriaAPIError: If the API request fails, including cases where:
51
+ - The store_connector_id doesn't exist (404)
52
+ - The project_id doesn't exist (404)
53
+ - The folder_id is invalid (404)
54
+ - Authentication fails (401)
55
+ - Access is forbidden (403)
56
+ - Server errors (5xx)
57
+ ValueError: If required parameters are missing or invalid
58
+
59
+ Example:
60
+ ```python
61
+ from airia import AiriaClient
62
+
63
+ client = AiriaClient(api_key="your_api_key")
64
+
65
+ # Get files and folders from root level
66
+ response = client.data_store.store.get_files_and_folders(
67
+ store_connector_id="02b2ef8b-8bff-42c3-9ddb-e325c893176e",
68
+ project_id="0196162b-1553-71b2-8ebf-44594717936e"
69
+ )
70
+
71
+ # Browse a specific folder with pagination and sorting
72
+ response = client.data_store.store.get_files_and_folders(
73
+ store_connector_id="02b2ef8b-8bff-42c3-9ddb-e325c893176e",
74
+ project_id="0196162b-1553-71b2-8ebf-44594717936e",
75
+ folder_id="3292db69-f365-4bb6-a2b6-a017a187fb77",
76
+ page_number=1,
77
+ page_size=50,
78
+ sort_by="lastSyncAt",
79
+ sort_order="DESC"
80
+ )
81
+
82
+ # Access the results
83
+ if response.files_and_folders:
84
+ for item in response.files_and_folders:
85
+ print(f"{item.name} ({item.type})")
86
+ if item.type == "folder":
87
+ print(f" Contains {item.file_count} files, {item.folder_count} folders")
88
+
89
+ print(f"Total items: {response.total_count}")
90
+ ```
91
+
92
+ Note:
93
+ The response includes:
94
+ - files_and_folders: List of file and folder objects with metadata
95
+ - total_count: Total number of items (useful for pagination)
96
+ """
97
+ request_data = self._pre_get_files_and_folders(
98
+ store_connector_id=store_connector_id,
99
+ project_id=project_id,
100
+ folder_id=folder_id,
101
+ page_number=page_number,
102
+ page_size=page_size,
103
+ sort_by=sort_by,
104
+ sort_order=sort_order,
105
+ filter_by=filter_by,
106
+ filter_value=filter_value,
107
+ correlation_id=correlation_id,
108
+ )
109
+
110
+ response = self._request_handler.make_request(
111
+ "GET", request_data, return_json=True
112
+ )
113
+
114
+ return GetFilesAndFoldersResponse(**response)
@@ -0,0 +1,15 @@
1
+ from .._request_handler import RequestHandler
2
+ from .store import Store
3
+
4
+
5
+ class DataStore:
6
+ """Data Store client for browsing files and folders in store connectors."""
7
+
8
+ def __init__(self, request_handler: RequestHandler):
9
+ """
10
+ Initialize the DataStore client.
11
+
12
+ Args:
13
+ request_handler: The request handler for making API calls
14
+ """
15
+ self.store = Store(request_handler)
@@ -95,6 +95,74 @@ class AsyncModels(BaseModels):
95
95
 
96
96
  return [ModelItem(**item) for item in resp["items"]]
97
97
 
98
+ async def get_model(
99
+ self,
100
+ model_id: str,
101
+ correlation_id: Optional[str] = None,
102
+ ) -> ModelItem:
103
+ """
104
+ Retrieve a model by its ID.
105
+
106
+ This method fetches detailed information about a specific model, including
107
+ its configuration, pricing, capabilities, and associated project details.
108
+
109
+ Args:
110
+ model_id (str): The unique identifier of the model to retrieve.
111
+ correlation_id (str, optional): A unique identifier for request tracing
112
+ and logging. If not provided, one will be automatically generated.
113
+
114
+ Returns:
115
+ ModelItem: A ModelItem object containing comprehensive model information
116
+ including configuration, pricing, capabilities, and project associations.
117
+
118
+ Raises:
119
+ AiriaAPIError: If the API request fails, including cases where:
120
+ - Model not found (404)
121
+ - Authentication fails (401)
122
+ - Access is forbidden (403)
123
+ - Server errors (5xx)
124
+
125
+ Example:
126
+ ```python
127
+ from airia import AiriaAsyncClient
128
+
129
+ client = AiriaAsyncClient(api_key="your_api_key")
130
+
131
+ # Get a specific model
132
+ model = await client.models.get_model(
133
+ model_id="447589d8-f82f-4a0c-ad15-215a2eaee7b8"
134
+ )
135
+
136
+ print(f"Model: {model.display_name}")
137
+ print(f"Provider: {model.provider}")
138
+ print(f"Model Name: {model.model_name}")
139
+ print(f"Has tool support: {model.has_tool_support}")
140
+ print(f"Has stream support: {model.has_stream_support}")
141
+
142
+ # Access pricing information
143
+ if model.user_provided_details:
144
+ print(f"Input token price: {model.user_provided_details.input_token_price}")
145
+ print(f"Output token price: {model.user_provided_details.output_token_price}")
146
+
147
+ # Get model with correlation ID for tracking
148
+ model = await client.models.get_model(
149
+ model_id="447589d8-f82f-4a0c-ad15-215a2eaee7b8",
150
+ correlation_id="my-correlation-id"
151
+ )
152
+ ```
153
+
154
+ Note:
155
+ The model must be accessible to the authenticated user. Users will only
156
+ be able to retrieve models they have been granted access to.
157
+ """
158
+ request_data = self._pre_get_model(
159
+ model_id=model_id,
160
+ correlation_id=correlation_id,
161
+ api_version=ApiVersion.V1.value,
162
+ )
163
+ resp = await self._request_handler.make_request("GET", request_data)
164
+ return ModelItem(**resp)
165
+
98
166
  async def delete_model(
99
167
  self,
100
168
  model_id: str,
@@ -67,6 +67,40 @@ class BaseModels:
67
67
 
68
68
  return request_data
69
69
 
70
+ def _pre_get_model(
71
+ self,
72
+ model_id: str,
73
+ correlation_id: Optional[str] = None,
74
+ api_version: str = ApiVersion.V1.value,
75
+ ):
76
+ """
77
+ Prepare request data for retrieving a single model.
78
+
79
+ Args:
80
+ model_id: The ID of the model to retrieve
81
+ correlation_id: Optional correlation ID for tracing
82
+ api_version: API version to use for the request
83
+
84
+ Returns:
85
+ RequestData: Prepared request data for the get endpoint
86
+
87
+ Raises:
88
+ ValueError: If an invalid API version is provided
89
+ """
90
+ if api_version not in ApiVersion.as_list():
91
+ raise ValueError(
92
+ f"Invalid API version: {api_version}. Valid versions are: {', '.join(ApiVersion.as_list())}"
93
+ )
94
+
95
+ url = urljoin(
96
+ self._request_handler.base_url,
97
+ f"{api_version}/Models/{model_id}",
98
+ )
99
+ request_data = self._request_handler.prepare_request(
100
+ url, correlation_id=correlation_id
101
+ )
102
+ return request_data
103
+
70
104
  def _pre_delete_model(
71
105
  self,
72
106
  model_id: str,
@@ -95,6 +95,74 @@ class Models(BaseModels):
95
95
 
96
96
  return [ModelItem(**item) for item in resp["items"]]
97
97
 
98
+ def get_model(
99
+ self,
100
+ model_id: str,
101
+ correlation_id: Optional[str] = None,
102
+ ) -> ModelItem:
103
+ """
104
+ Retrieve a model by its ID.
105
+
106
+ This method fetches detailed information about a specific model, including
107
+ its configuration, pricing, capabilities, and associated project details.
108
+
109
+ Args:
110
+ model_id (str): The unique identifier of the model to retrieve.
111
+ correlation_id (str, optional): A unique identifier for request tracing
112
+ and logging. If not provided, one will be automatically generated.
113
+
114
+ Returns:
115
+ ModelItem: A ModelItem object containing comprehensive model information
116
+ including configuration, pricing, capabilities, and project associations.
117
+
118
+ Raises:
119
+ AiriaAPIError: If the API request fails, including cases where:
120
+ - Model not found (404)
121
+ - Authentication fails (401)
122
+ - Access is forbidden (403)
123
+ - Server errors (5xx)
124
+
125
+ Example:
126
+ ```python
127
+ from airia import AiriaClient
128
+
129
+ client = AiriaClient(api_key="your_api_key")
130
+
131
+ # Get a specific model
132
+ model = client.models.get_model(
133
+ model_id="447589d8-f82f-4a0c-ad15-215a2eaee7b8"
134
+ )
135
+
136
+ print(f"Model: {model.display_name}")
137
+ print(f"Provider: {model.provider}")
138
+ print(f"Model Name: {model.model_name}")
139
+ print(f"Has tool support: {model.has_tool_support}")
140
+ print(f"Has stream support: {model.has_stream_support}")
141
+
142
+ # Access pricing information
143
+ if model.user_provided_details:
144
+ print(f"Input token price: {model.user_provided_details.input_token_price}")
145
+ print(f"Output token price: {model.user_provided_details.output_token_price}")
146
+
147
+ # Get model with correlation ID for tracking
148
+ model = client.models.get_model(
149
+ model_id="447589d8-f82f-4a0c-ad15-215a2eaee7b8",
150
+ correlation_id="my-correlation-id"
151
+ )
152
+ ```
153
+
154
+ Note:
155
+ The model must be accessible to the authenticated user. Users will only
156
+ be able to retrieve models they have been granted access to.
157
+ """
158
+ request_data = self._pre_get_model(
159
+ model_id=model_id,
160
+ correlation_id=correlation_id,
161
+ api_version=ApiVersion.V1.value,
162
+ )
163
+ resp = self._request_handler.make_request("GET", request_data)
164
+ return ModelItem(**resp)
165
+
98
166
  def delete_model(
99
167
  self,
100
168
  model_id: str,
@@ -11,6 +11,7 @@ from ._request_handler import RequestHandler
11
11
  from .attachments import Attachments
12
12
  from .base_client import AiriaBaseClient
13
13
  from .conversations import Conversations
14
+ from .data_store import DataStore
14
15
  from .data_vector_search import DataVectorSearch
15
16
  from .deployments import Deployments
16
17
  from .library import Library
@@ -70,6 +71,7 @@ class AiriaClient(AiriaBaseClient):
70
71
  self.project = Project(self._request_handler)
71
72
  self.conversations = Conversations(self._request_handler)
72
73
  self.store = Store(self._request_handler)
74
+ self.data_store = DataStore(self._request_handler)
73
75
  self.deployments = Deployments(self._request_handler)
74
76
  self.data_vector_search = DataVectorSearch(self._request_handler)
75
77
  self.library = Library(self._request_handler)
@@ -1,4 +1,5 @@
1
1
  from . import attachments as attachments
2
+ from . import data_store as data_store
2
3
  from . import models as models
3
4
  from . import pipeline_import as pipeline_import
4
5
  from . import tools as tools
@@ -0,0 +1,3 @@
1
+ from . import store as store
2
+
3
+ __all__ = ["store"]
@@ -0,0 +1,11 @@
1
+ from ._get_files_and_folders import (
2
+ FileOrFolder,
3
+ GetFilesAndFoldersResponse,
4
+ IngestionProcessingStatus,
5
+ )
6
+
7
+ __all__ = [
8
+ "GetFilesAndFoldersResponse",
9
+ "FileOrFolder",
10
+ "IngestionProcessingStatus",
11
+ ]
@@ -0,0 +1,80 @@
1
+ """
2
+ Pydantic models for data store file and folder listing API responses.
3
+
4
+ This module defines data structures for browsing files and folders within
5
+ store connectors on the Airia platform.
6
+ """
7
+
8
+ from typing import List, Optional
9
+
10
+ from pydantic import BaseModel, Field
11
+
12
+
13
+ class IngestionProcessingStatus(BaseModel):
14
+ """Status information for file ingestion processing.
15
+
16
+ Contains details about how a file is being processed during ingestion,
17
+ including processing mode, status, and any errors encountered.
18
+
19
+ Attributes:
20
+ table_document_processing_mode: Mode used for processing table documents
21
+ user_errors: List of user-facing error messages
22
+ system_errors: List of system error messages
23
+ status: Current processing status
24
+ """
25
+
26
+ table_document_processing_mode: Optional[str] = Field(
27
+ None, alias="tableDocumentProcessingMode"
28
+ )
29
+ user_errors: Optional[List[str]] = Field(None, alias="userErrors")
30
+ system_errors: Optional[List[str]] = Field(None, alias="systemErrors")
31
+ status: Optional[str] = None
32
+
33
+
34
+ class FileOrFolder(BaseModel):
35
+ """Individual file or folder entry in a store connector.
36
+
37
+ Represents a single item (file or folder) within the data store,
38
+ including metadata, status, and nested content counts for folders.
39
+
40
+ Attributes:
41
+ id: Unique identifier for the file or folder
42
+ name: Name of the file or folder
43
+ type: Type of the item (e.g., 'file' or 'folder')
44
+ size: Size in bytes (for files)
45
+ mime_type: MIME type (for files)
46
+ file_count: Number of files (for folders)
47
+ folder_count: Number of subfolders (for folders)
48
+ file_last_updated_at: Timestamp of last update (ISO format)
49
+ status: Current status of the file or folder
50
+ ingestion_processing_statuses: List of ingestion processing status information
51
+ additional_metadata_json: Additional metadata as JSON string
52
+ """
53
+
54
+ id: Optional[str] = None
55
+ name: Optional[str] = None
56
+ type: Optional[str] = None
57
+ size: Optional[int] = None
58
+ mime_type: Optional[str] = Field(None, alias="mimeType")
59
+ file_count: Optional[int] = Field(None, alias="fileCount")
60
+ folder_count: Optional[int] = Field(None, alias="folderCount")
61
+ file_last_updated_at: Optional[str] = Field(None, alias="fileLastUpdatedAt")
62
+ status: Optional[str] = None
63
+ ingestion_processing_statuses: Optional[List[IngestionProcessingStatus]] = Field(
64
+ None, alias="ingestionProcessingStatuses"
65
+ )
66
+ additional_metadata_json: Optional[str] = Field(None, alias="additionalMetadataJson")
67
+
68
+
69
+ class GetFilesAndFoldersResponse(BaseModel):
70
+ """Response model for getting files and folders from a store connector.
71
+
72
+ Contains a list of files and folders along with pagination information.
73
+
74
+ Attributes:
75
+ files_and_folders: List of file and folder objects
76
+ total_count: Total number of items available (may be greater than items returned)
77
+ """
78
+
79
+ files_and_folders: Optional[List[FileOrFolder]] = Field(None, alias="filesAndFolders")
80
+ total_count: Optional[int] = Field(None, alias="totalCount")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airia
3
- Version: 0.1.36
3
+ Version: 0.1.38
4
4
  Summary: Python SDK for Airia API
5
5
  Author-email: Airia LLC <support@airia.com>
6
6
  License: MIT
@@ -3,9 +3,9 @@ airia/constants.py,sha256=oKABowOTsJPIQ1AgtVpNN73oKuhh1DekBC5axYSm8lY,647
3
3
  airia/exceptions.py,sha256=l1FCKlWC6tONvAxSxv4YEAXjpHEM-eQQQ3mEtSkJvhc,1233
4
4
  airia/logs.py,sha256=V5YSAq6TPGT0AxOUCwIxy69Zu8jQubzhhjf8deC0rSw,8370
5
5
  airia/client/__init__.py,sha256=6gSQ9bl7j79q1HPE0o5py3IRdkwWWuU_7J4h05Dd2o8,127
6
- airia/client/async_client.py,sha256=am58aQ-VGgu7GYAo4aJfyNOmULQy2FgzvqzfEzx5S0A,7529
6
+ airia/client/async_client.py,sha256=gPNSgsKwkimMEKjUvEJqMH_aXqZ32hzHtCW0O7H5yog,7632
7
7
  airia/client/base_client.py,sha256=bEs75GIUZ2DSfV2JLcRTq0VGGgf0HjcgsDeuBLYhuq0,3181
8
- airia/client/sync_client.py,sha256=C7UA9_AWcSAgVEMpznLzScuPm5LefH-_RB6bQzTUvHk,7338
8
+ airia/client/sync_client.py,sha256=YqyeoT9l8ypiRri7SrieR8U7yclazoe8u_XHuTNd6LQ,7431
9
9
  airia/client/_request_handler/__init__.py,sha256=FOdJMfzjN0Tw0TeD8mDJwHgte70Fw_j08EljtfulCvw,157
10
10
  airia/client/_request_handler/async_request_handler.py,sha256=TqjiyMG88PCsXL0lzIFpXkzP-GljtDvNpp8KSR_7d7Q,11556
11
11
  airia/client/_request_handler/base_request_handler.py,sha256=-_RhSb0nAKZf5-oNZM9jyeIcnbqX58Ht1a66qmlPuGA,3515
@@ -18,6 +18,13 @@ airia/client/conversations/__init__.py,sha256=5gbcHEYLHOn5cK95tlM52GPOmar8gpyK-B
18
18
  airia/client/conversations/async_conversations.py,sha256=XbSErt_6RKcQwDdGHKr_roSf2EkxhR6ogBiN3oMFNhk,7448
19
19
  airia/client/conversations/base_conversations.py,sha256=YpIvA66xFZbOC4L8P17pISCqyWlJvju34FHX7Pcj8Aw,4848
20
20
  airia/client/conversations/sync_conversations.py,sha256=IelRpGuoV0sBwOfZd44igV3i5P35Hv-zzZwCC7y6mlA,7200
21
+ airia/client/data_store/__init__.py,sha256=MqbqpIQE2OaUQjCb8wJJbxuShfzhNwBmRc7AXhpdSPE,127
22
+ airia/client/data_store/async_data_store.py,sha256=R_iYEuztOL6lojlNekyiF9ZfNlRxbPoxSge0Oxzme24,464
23
+ airia/client/data_store/sync_data_store.py,sha256=2aCb8RRqRSMSHQgIjLy-mK1mp2a8X58HRA4nQtcSIwY,422
24
+ airia/client/data_store/store/__init__.py,sha256=-rbtYQ8PTaFA6Fs2dm7Db2C3RDNvagaK3iE4PpLRcjg,101
25
+ airia/client/data_store/store/async_store.py,sha256=iqYrsAkR9c6PA_uTDkT7HQQzrL-EfSGpL_J1-TYAqLA,4744
26
+ airia/client/data_store/store/base_store.py,sha256=R7wn29Ch9oaXdxx8Xn2JB1vMYXI8UadBoCFB5AcdPHI,2746
27
+ airia/client/data_store/store/sync_store.py,sha256=9y_MMcIuK7hAICcR4-AW1Xj5PMJhtNcYvFAWh8sdGEE,4588
21
28
  airia/client/data_vector_search/__init__.py,sha256=RmeB9wdIWubjnmoco321dx0T2h5tV0-rTsuHQdXOwI0,171
22
29
  airia/client/data_vector_search/async_data_vector_search.py,sha256=aeI963entUS3hSZGfKwFOYl2fKMWLHn74P4EQUHh4v8,3347
23
30
  airia/client/data_vector_search/base_data_vector_search.py,sha256=bMKsi90zHGFR74ckKInORJtdvrrAmJZmzuChMSgeDhQ,1889
@@ -31,9 +38,9 @@ airia/client/library/async_library.py,sha256=fRG3eUxZkXDMnDTAt18KxD1LQMC5VB6cssW
31
38
  airia/client/library/base_library.py,sha256=VkcWr25fp2es2sRB97tORQmtAi59NZ6YRzwLymlQHIk,4664
32
39
  airia/client/library/sync_library.py,sha256=u_oBscUTYRNcsDbxCgpx_UvY5UAGgum2DW7eWt8y_i8,4191
33
40
  airia/client/models/__init__.py,sha256=YbxGLwMb7RQKfPo_2L_O_W9j8Szwnb0vtWiUNxkScfs,107
34
- airia/client/models/async_models.py,sha256=gwW3tWwzSZ9_3JmGlwryY48w9KrFXoLET6Jpsj0hX0I,5853
35
- airia/client/models/base_models.py,sha256=FchsA7P-Fc7fxzlN88jJ3BEVXPWDcIHSzci6wtSArqg,3439
36
- airia/client/models/sync_models.py,sha256=FQLM4xCoxcBk1NuLf6z7jVVejlDKx5KpMRBz2tQm71o,5748
41
+ airia/client/models/async_models.py,sha256=GihX15MjqH-XUUl141aae0fbHG-FVH9SdNenIAY9mFU,8505
42
+ airia/client/models/base_models.py,sha256=NNe24dcCirraVzpWJR5nNdPA3_nGwj98Ga1bk1f-TMI,4522
43
+ airia/client/models/sync_models.py,sha256=36-ejKBLJ6FCB4RWXCSdBy84VpOmVYaK9PdoUJMVgCg,8366
37
44
  airia/client/pipeline_execution/__init__.py,sha256=7qEZsPRTLySC71zlwYioBuJs6B4BwRCgFL3TQyFWXmc,175
38
45
  airia/client/pipeline_execution/async_pipeline_execution.py,sha256=EH9EexSYjhSxWAB5kOLQSh5Sfl5Qn5lQGyJrU72wFLw,23824
39
46
  airia/client/pipeline_execution/base_pipeline_execution.py,sha256=8x99rm8cPq-i9-UA97-XLNo1qAwdEPkmZ815fRSceFE,11168
@@ -62,11 +69,14 @@ airia/types/__init__.py,sha256=fbNw1eto8l-qgz-W2QG32i-zQY7WiWZY3JR6fL2HsKM,235
62
69
  airia/types/_api_version.py,sha256=Uzom6O2ZG92HN_Z2h-lTydmO2XYX9RVs4Yi4DJmXytE,255
63
70
  airia/types/_request_data.py,sha256=q8t7KfO2WvgbPVYPvPWiwYb8LyP0kovlOgHFhZIU6ns,1278
64
71
  airia/types/_structured_output.py,sha256=j_uqBMl5SmDNv0v_FrAli0ugQoLzhZKT_YGLHvWc2A0,5357
65
- airia/types/api/__init__.py,sha256=hAkcgB07FFdYUqGAP9-7CUFTBTYUOn6DFRH4wMo2PoM,150
72
+ airia/types/api/__init__.py,sha256=9ORtzlH5iQRbO72EbIPaOwi10G2uvuxTnh4WhuQu6Ps,189
66
73
  airia/types/api/attachments/__init__.py,sha256=zFSCwsmPr05I7NJRG6MCWME3AKhBpL0MhgOBOaF7rok,78
67
74
  airia/types/api/attachments/upload_file.py,sha256=XBCm1lZJAloFxmyp_3fbtuJ9Y28O-mbAfwy6D0EvTgQ,457
68
75
  airia/types/api/conversations/__init__.py,sha256=W6GlNVZCAY5eViJOoPl1bY9_etRBWeUnYZJJt7WHtfI,269
69
76
  airia/types/api/conversations/_conversations.py,sha256=O7VHs2_Ykg0s6Phe0sAVvbO7YVu6d6R2M2-JkWAipxI,4845
77
+ airia/types/api/data_store/__init__.py,sha256=Kv5Vle9HNrCQv0bXRfFZ6zp4BHzGtmwy1slycJKo7jw,50
78
+ airia/types/api/data_store/store/__init__.py,sha256=wmdNMDUUsIGy8SWOrvH_QS9_cniSPvZt5re4OuIPp7k,223
79
+ airia/types/api/data_store/store/_get_files_and_folders.py,sha256=xUYoyS9c2RwCXiwX3g4EZZfRmKorOMqr94WIsqWDAsw,3133
70
80
  airia/types/api/data_vector_search/__init__.py,sha256=TXomyrDRlsFmiBWUNoSyD3-dSK5ahYHvn9-s8CIS5xI,112
71
81
  airia/types/api/data_vector_search/get_file_chunks.py,sha256=ywP1zH_OXnyP5ZyJ_epaZWRLvOxC72RnL235ySYSZA0,1597
72
82
  airia/types/api/deployments/__init__.py,sha256=ONQgkKr_8i6FhcBsHyzT4mYOP_H0OPUAsxvxroZWBMU,538
@@ -95,8 +105,8 @@ airia/types/api/tools/_tools.py,sha256=PSJYFok7yQdE4it55iQmbryFzKN54nT6N161X1Rkp
95
105
  airia/types/sse/__init__.py,sha256=KWnNTfsQnthfrU128pUX6ounvSS7DvjC-Y21FE-OdMk,1863
96
106
  airia/types/sse/sse_messages.py,sha256=asq9KG5plT2XSgQMz-Nqo0WcKlXvE8UT3E-WLhCegPk,30244
97
107
  airia/utils/sse_parser.py,sha256=XCTkuaroYWaVQOgBq8VpbseQYSAVruF69AvKUwZQKTA,4251
98
- airia-0.1.36.dist-info/licenses/LICENSE,sha256=R3ClUMMKPRItIcZ0svzyj2taZZnFYw568YDNzN9KQ1Q,1066
99
- airia-0.1.36.dist-info/METADATA,sha256=y-Qw5v6SJTdKg1-5E1hmSay-dhoIqE0Dpxctm48Ju7E,4949
100
- airia-0.1.36.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
101
- airia-0.1.36.dist-info/top_level.txt,sha256=qUQEKfs_hdOYTwjKj1JZbRhS5YeXDNaKQaVTrzabS6w,6
102
- airia-0.1.36.dist-info/RECORD,,
108
+ airia-0.1.38.dist-info/licenses/LICENSE,sha256=R3ClUMMKPRItIcZ0svzyj2taZZnFYw568YDNzN9KQ1Q,1066
109
+ airia-0.1.38.dist-info/METADATA,sha256=drM4OiFstWRw5ZxssTKT6flE1-GsJXyLaqEA795PmLw,4949
110
+ airia-0.1.38.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
111
+ airia-0.1.38.dist-info/top_level.txt,sha256=qUQEKfs_hdOYTwjKj1JZbRhS5YeXDNaKQaVTrzabS6w,6
112
+ airia-0.1.38.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5