22
33from __future__ import annotations
44
5+ from typing import Iterable
6+
57import httpx
68
79from ..._types import Body , Omit , Query , Headers , NotGiven , omit , not_given
1820from ...types .knowledge_bases import (
1921 data_source_list_params ,
2022 data_source_create_params ,
23+ data_source_create_presigned_urls_params ,
2124)
2225from ...types .knowledge_bases .aws_data_source_param import AwsDataSourceParam
2326from ...types .knowledge_bases .data_source_list_response import DataSourceListResponse
2427from ...types .knowledge_bases .data_source_create_response import DataSourceCreateResponse
2528from ...types .knowledge_bases .data_source_delete_response import DataSourceDeleteResponse
2629from ...types .knowledge_bases .api_spaces_data_source_param import APISpacesDataSourceParam
2730from ...types .knowledge_bases .api_web_crawler_data_source_param import APIWebCrawlerDataSourceParam
31+ from ...types .knowledge_bases .data_source_create_presigned_urls_response import DataSourceCreatePresignedURLsResponse
2832
2933__all__ = ["DataSourcesResource" , "AsyncDataSourcesResource" ]
3034
@@ -203,6 +207,45 @@ def delete(
203207 cast_to = DataSourceDeleteResponse ,
204208 )
205209
210+ def create_presigned_urls (
211+ self ,
212+ * ,
213+ files : Iterable [data_source_create_presigned_urls_params .File ] | Omit = omit ,
214+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
215+ # The extra values given here take precedence over values defined on the client or passed to this method.
216+ extra_headers : Headers | None = None ,
217+ extra_query : Query | None = None ,
218+ extra_body : Body | None = None ,
219+ timeout : float | httpx .Timeout | None | NotGiven = not_given ,
220+ ) -> DataSourceCreatePresignedURLsResponse :
221+ """
222+ To create presigned URLs for knowledge base data source file upload, send a POST
223+ request to `/v2/gen-ai/knowledge_bases/data_sources/file_upload_presigned_urls`.
224+
225+ Args:
226+ files: A list of files to generate presigned URLs for.
227+
228+ extra_headers: Send extra headers
229+
230+ extra_query: Add additional query parameters to the request
231+
232+ extra_body: Add additional JSON properties to the request
233+
234+ timeout: Override the client-level default timeout for this request, in seconds
235+ """
236+ return self ._post (
237+ "/v2/gen-ai/knowledge_bases/data_sources/file_upload_presigned_urls"
238+ if self ._client ._base_url_overridden
239+ else "https://api.digitalocean.com/v2/gen-ai/knowledge_bases/data_sources/file_upload_presigned_urls" ,
240+ body = maybe_transform (
241+ {"files" : files }, data_source_create_presigned_urls_params .DataSourceCreatePresignedURLsParams
242+ ),
243+ options = make_request_options (
244+ extra_headers = extra_headers , extra_query = extra_query , extra_body = extra_body , timeout = timeout
245+ ),
246+ cast_to = DataSourceCreatePresignedURLsResponse ,
247+ )
248+
206249
207250class AsyncDataSourcesResource (AsyncAPIResource ):
208251 @cached_property
@@ -378,6 +421,45 @@ async def delete(
378421 cast_to = DataSourceDeleteResponse ,
379422 )
380423
424+ async def create_presigned_urls (
425+ self ,
426+ * ,
427+ files : Iterable [data_source_create_presigned_urls_params .File ] | Omit = omit ,
428+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
429+ # The extra values given here take precedence over values defined on the client or passed to this method.
430+ extra_headers : Headers | None = None ,
431+ extra_query : Query | None = None ,
432+ extra_body : Body | None = None ,
433+ timeout : float | httpx .Timeout | None | NotGiven = not_given ,
434+ ) -> DataSourceCreatePresignedURLsResponse :
435+ """
436+ To create presigned URLs for knowledge base data source file upload, send a POST
437+ request to `/v2/gen-ai/knowledge_bases/data_sources/file_upload_presigned_urls`.
438+
439+ Args:
440+ files: A list of files to generate presigned URLs for.
441+
442+ extra_headers: Send extra headers
443+
444+ extra_query: Add additional query parameters to the request
445+
446+ extra_body: Add additional JSON properties to the request
447+
448+ timeout: Override the client-level default timeout for this request, in seconds
449+ """
450+ return await self ._post (
451+ "/v2/gen-ai/knowledge_bases/data_sources/file_upload_presigned_urls"
452+ if self ._client ._base_url_overridden
453+ else "https://api.digitalocean.com/v2/gen-ai/knowledge_bases/data_sources/file_upload_presigned_urls" ,
454+ body = await async_maybe_transform (
455+ {"files" : files }, data_source_create_presigned_urls_params .DataSourceCreatePresignedURLsParams
456+ ),
457+ options = make_request_options (
458+ extra_headers = extra_headers , extra_query = extra_query , extra_body = extra_body , timeout = timeout
459+ ),
460+ cast_to = DataSourceCreatePresignedURLsResponse ,
461+ )
462+
381463
382464class DataSourcesResourceWithRawResponse :
383465 def __init__ (self , data_sources : DataSourcesResource ) -> None :
@@ -392,6 +474,9 @@ def __init__(self, data_sources: DataSourcesResource) -> None:
392474 self .delete = to_raw_response_wrapper (
393475 data_sources .delete ,
394476 )
477+ self .create_presigned_urls = to_raw_response_wrapper (
478+ data_sources .create_presigned_urls ,
479+ )
395480
396481
397482class AsyncDataSourcesResourceWithRawResponse :
@@ -407,6 +492,9 @@ def __init__(self, data_sources: AsyncDataSourcesResource) -> None:
407492 self .delete = async_to_raw_response_wrapper (
408493 data_sources .delete ,
409494 )
495+ self .create_presigned_urls = async_to_raw_response_wrapper (
496+ data_sources .create_presigned_urls ,
497+ )
410498
411499
412500class DataSourcesResourceWithStreamingResponse :
@@ -422,6 +510,9 @@ def __init__(self, data_sources: DataSourcesResource) -> None:
422510 self .delete = to_streamed_response_wrapper (
423511 data_sources .delete ,
424512 )
513+ self .create_presigned_urls = to_streamed_response_wrapper (
514+ data_sources .create_presigned_urls ,
515+ )
425516
426517
427518class AsyncDataSourcesResourceWithStreamingResponse :
@@ -437,3 +528,6 @@ def __init__(self, data_sources: AsyncDataSourcesResource) -> None:
437528 self .delete = async_to_streamed_response_wrapper (
438529 data_sources .delete ,
439530 )
531+ self .create_presigned_urls = async_to_streamed_response_wrapper (
532+ data_sources .create_presigned_urls ,
533+ )
0 commit comments