unique-search-proxy-sdk 2026.44.0.dev1__tar.gz → 2026.44.0.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/PKG-INFO +2 -2
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/pyproject.toml +2 -2
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/search/search_v1_search_post.py +31 -9
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/__init__.py +4 -0
- unique_search_proxy_sdk-2026.44.0.dev3/unique_search_proxy_sdk/_generated/models/custom_api_request_method.py +9 -0
- unique_search_proxy_sdk-2026.44.0.dev3/unique_search_proxy_sdk/_generated/models/custom_api_search_request.py +144 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/vertex_ai_agent_search_request.py +9 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_typed_endpoints.py +31 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/search_client.py +16 -1
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/README.md +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/__init__.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_endpoint.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/__init__.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/__init__.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/agent_search/__init__.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/agent_search/agent_search_stream_v1_agent_search_stream_post.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/agent_search/agent_search_v1_agent_search_post.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/configuration/__init__.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/configuration/list_providers_v1_configuration_providers_get.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/crawl/__init__.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/crawl/crawl_v1_crawl_post.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/health/__init__.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/health/health_health_get.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/health/ready_ready_get.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/api/search/__init__.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/client.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/errors.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/agent_search_response.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/basic_crawl_request.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/bing_agent_search_request.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/bing_agent_search_request_freshness_type_0.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/bing_agent_search_request_market_type_0.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/brave_search_request.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/brave_search_request_country_type_0.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/brave_search_request_result_filter_type_0_item.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/brave_search_request_safe_search.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/brave_search_request_search_lang_type_0.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/brave_search_request_ui_language.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/brave_search_request_units_type_0.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/content_types.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/crawl_response.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/crawl_url_result.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/firecrawl_crawl_request.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/firecrawl_crawl_request_proxy_mode.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/firecrawl_crawl_request_scrape_headers_type_0.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/google_search_request.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/google_search_request_safe_search.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/google_search_request_site_search_filter_type_0.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/health_health_get_response_health_health_get.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/http_validation_error.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/jina_crawl_request.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/jina_crawl_request_engine.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/jina_crawl_request_retain_images_type_0.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/jina_crawl_request_return_format.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/per_url_error.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/perplexity_search_request.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/perplexity_search_request_search_context_size.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/perplexity_search_request_search_recency_filter_type_0.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/providers_list_response.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/ready_ready_get_response_ready_ready_get.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/search_response.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/tavily_crawl_request.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/tavily_crawl_request_extract_depth.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/tavily_crawl_request_output_format.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/validation_error.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/validation_error_context.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/models/web_search_result.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_generated/types.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_http.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/_transport.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/agent_search_client.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/client.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/converters.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/crawl_client.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/errors.py +0 -0
- {unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/unique_search_proxy_sdk/typing_checks.py +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-search-proxy-sdk
|
|
3
|
-
Version: 2026.44.0.
|
|
3
|
+
Version: 2026.44.0.dev3
|
|
4
4
|
Summary: Async HTTP client for the Unique Search Proxy API
|
|
5
5
|
Author: ThePhilAz
|
|
6
6
|
Author-email: ThePhilAz <rami.azouz@philico.com>
|
|
7
7
|
Requires-Dist: attrs>=24.3.0,<26
|
|
8
8
|
Requires-Dist: httpx>=0.28.0,<0.29.0
|
|
9
9
|
Requires-Dist: pydantic>=2.12.5,<3.0.0
|
|
10
|
-
Requires-Dist: unique-search-proxy-core>=2026.44.0.
|
|
10
|
+
Requires-Dist: unique-search-proxy-core>=2026.44.0.dev5,<2026.44.0rc0
|
|
11
11
|
Requires-Python: >=3.12
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
|
{unique_search_proxy_sdk-2026.44.0.dev1 → unique_search_proxy_sdk-2026.44.0.dev3}/pyproject.toml
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "unique-search-proxy-sdk"
|
|
3
|
-
version = "2026.44.0.
|
|
3
|
+
version = "2026.44.0.dev3"
|
|
4
4
|
description = "Async HTTP client for the Unique Search Proxy API"
|
|
5
5
|
authors = [{ name = "ThePhilAz", email = "rami.azouz@philico.com" }]
|
|
6
6
|
readme = "README.md"
|
|
@@ -9,7 +9,7 @@ dependencies = [
|
|
|
9
9
|
"attrs>=24.3.0,<26",
|
|
10
10
|
"httpx>=0.28.0,<0.29.0",
|
|
11
11
|
"pydantic>=2.12.5,<3.0.0",
|
|
12
|
-
"unique-search-proxy-core>=2026.44.0.
|
|
12
|
+
"unique-search-proxy-core>=2026.44.0.dev5,<2026.44.0rc0",
|
|
13
13
|
]
|
|
14
14
|
|
|
15
15
|
[dependency-groups]
|
|
@@ -6,6 +6,7 @@ import httpx
|
|
|
6
6
|
from ... import errors
|
|
7
7
|
from ...client import AuthenticatedClient, Client
|
|
8
8
|
from ...models.brave_search_request import BraveSearchRequest
|
|
9
|
+
from ...models.custom_api_search_request import CustomApiSearchRequest
|
|
9
10
|
from ...models.google_search_request import GoogleSearchRequest
|
|
10
11
|
from ...models.http_validation_error import HTTPValidationError
|
|
11
12
|
from ...models.perplexity_search_request import PerplexitySearchRequest
|
|
@@ -15,7 +16,10 @@ from ...types import Response, Unset
|
|
|
15
16
|
|
|
16
17
|
def _get_kwargs(
|
|
17
18
|
*,
|
|
18
|
-
body: BraveSearchRequest
|
|
19
|
+
body: BraveSearchRequest
|
|
20
|
+
| CustomApiSearchRequest
|
|
21
|
+
| GoogleSearchRequest
|
|
22
|
+
| PerplexitySearchRequest,
|
|
19
23
|
x_unique_company_id: str | Unset = "local",
|
|
20
24
|
x_unique_user_id: str | Unset = "local",
|
|
21
25
|
x_unique_chat_id: str | Unset = "local",
|
|
@@ -39,6 +43,8 @@ def _get_kwargs(
|
|
|
39
43
|
_kwargs["json"] = body.to_dict()
|
|
40
44
|
elif isinstance(body, BraveSearchRequest):
|
|
41
45
|
_kwargs["json"] = body.to_dict()
|
|
46
|
+
elif isinstance(body, PerplexitySearchRequest):
|
|
47
|
+
_kwargs["json"] = body.to_dict()
|
|
42
48
|
else:
|
|
43
49
|
_kwargs["json"] = body.to_dict()
|
|
44
50
|
|
|
@@ -81,7 +87,10 @@ def _build_response(
|
|
|
81
87
|
def sync_detailed(
|
|
82
88
|
*,
|
|
83
89
|
client: AuthenticatedClient | Client,
|
|
84
|
-
body: BraveSearchRequest
|
|
90
|
+
body: BraveSearchRequest
|
|
91
|
+
| CustomApiSearchRequest
|
|
92
|
+
| GoogleSearchRequest
|
|
93
|
+
| PerplexitySearchRequest,
|
|
85
94
|
x_unique_company_id: str | Unset = "local",
|
|
86
95
|
x_unique_user_id: str | Unset = "local",
|
|
87
96
|
x_unique_chat_id: str | Unset = "local",
|
|
@@ -92,7 +101,8 @@ def sync_detailed(
|
|
|
92
101
|
x_unique_company_id (str | Unset): Tenant company identifier. Default: 'local'.
|
|
93
102
|
x_unique_user_id (str | Unset): Tenant user identifier. Default: 'local'.
|
|
94
103
|
x_unique_chat_id (str | Unset): Tenant chat or session identifier. Default: 'local'.
|
|
95
|
-
body (BraveSearchRequest | GoogleSearchRequest |
|
|
104
|
+
body (BraveSearchRequest | CustomApiSearchRequest | GoogleSearchRequest |
|
|
105
|
+
PerplexitySearchRequest):
|
|
96
106
|
|
|
97
107
|
Raises:
|
|
98
108
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -119,7 +129,10 @@ def sync_detailed(
|
|
|
119
129
|
def sync(
|
|
120
130
|
*,
|
|
121
131
|
client: AuthenticatedClient | Client,
|
|
122
|
-
body: BraveSearchRequest
|
|
132
|
+
body: BraveSearchRequest
|
|
133
|
+
| CustomApiSearchRequest
|
|
134
|
+
| GoogleSearchRequest
|
|
135
|
+
| PerplexitySearchRequest,
|
|
123
136
|
x_unique_company_id: str | Unset = "local",
|
|
124
137
|
x_unique_user_id: str | Unset = "local",
|
|
125
138
|
x_unique_chat_id: str | Unset = "local",
|
|
@@ -130,7 +143,8 @@ def sync(
|
|
|
130
143
|
x_unique_company_id (str | Unset): Tenant company identifier. Default: 'local'.
|
|
131
144
|
x_unique_user_id (str | Unset): Tenant user identifier. Default: 'local'.
|
|
132
145
|
x_unique_chat_id (str | Unset): Tenant chat or session identifier. Default: 'local'.
|
|
133
|
-
body (BraveSearchRequest | GoogleSearchRequest |
|
|
146
|
+
body (BraveSearchRequest | CustomApiSearchRequest | GoogleSearchRequest |
|
|
147
|
+
PerplexitySearchRequest):
|
|
134
148
|
|
|
135
149
|
Raises:
|
|
136
150
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -152,7 +166,10 @@ def sync(
|
|
|
152
166
|
async def asyncio_detailed(
|
|
153
167
|
*,
|
|
154
168
|
client: AuthenticatedClient | Client,
|
|
155
|
-
body: BraveSearchRequest
|
|
169
|
+
body: BraveSearchRequest
|
|
170
|
+
| CustomApiSearchRequest
|
|
171
|
+
| GoogleSearchRequest
|
|
172
|
+
| PerplexitySearchRequest,
|
|
156
173
|
x_unique_company_id: str | Unset = "local",
|
|
157
174
|
x_unique_user_id: str | Unset = "local",
|
|
158
175
|
x_unique_chat_id: str | Unset = "local",
|
|
@@ -163,7 +180,8 @@ async def asyncio_detailed(
|
|
|
163
180
|
x_unique_company_id (str | Unset): Tenant company identifier. Default: 'local'.
|
|
164
181
|
x_unique_user_id (str | Unset): Tenant user identifier. Default: 'local'.
|
|
165
182
|
x_unique_chat_id (str | Unset): Tenant chat or session identifier. Default: 'local'.
|
|
166
|
-
body (BraveSearchRequest | GoogleSearchRequest |
|
|
183
|
+
body (BraveSearchRequest | CustomApiSearchRequest | GoogleSearchRequest |
|
|
184
|
+
PerplexitySearchRequest):
|
|
167
185
|
|
|
168
186
|
Raises:
|
|
169
187
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -188,7 +206,10 @@ async def asyncio_detailed(
|
|
|
188
206
|
async def asyncio(
|
|
189
207
|
*,
|
|
190
208
|
client: AuthenticatedClient | Client,
|
|
191
|
-
body: BraveSearchRequest
|
|
209
|
+
body: BraveSearchRequest
|
|
210
|
+
| CustomApiSearchRequest
|
|
211
|
+
| GoogleSearchRequest
|
|
212
|
+
| PerplexitySearchRequest,
|
|
192
213
|
x_unique_company_id: str | Unset = "local",
|
|
193
214
|
x_unique_user_id: str | Unset = "local",
|
|
194
215
|
x_unique_chat_id: str | Unset = "local",
|
|
@@ -199,7 +220,8 @@ async def asyncio(
|
|
|
199
220
|
x_unique_company_id (str | Unset): Tenant company identifier. Default: 'local'.
|
|
200
221
|
x_unique_user_id (str | Unset): Tenant user identifier. Default: 'local'.
|
|
201
222
|
x_unique_chat_id (str | Unset): Tenant chat or session identifier. Default: 'local'.
|
|
202
|
-
body (BraveSearchRequest | GoogleSearchRequest |
|
|
223
|
+
body (BraveSearchRequest | CustomApiSearchRequest | GoogleSearchRequest |
|
|
224
|
+
PerplexitySearchRequest):
|
|
203
225
|
|
|
204
226
|
Raises:
|
|
205
227
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -19,6 +19,8 @@ from .brave_search_request_units_type_0 import BraveSearchRequestUnitsType0
|
|
|
19
19
|
from .content_types import ContentTypes
|
|
20
20
|
from .crawl_response import CrawlResponse
|
|
21
21
|
from .crawl_url_result import CrawlUrlResult
|
|
22
|
+
from .custom_api_request_method import CustomApiRequestMethod
|
|
23
|
+
from .custom_api_search_request import CustomApiSearchRequest
|
|
22
24
|
from .firecrawl_crawl_request import FirecrawlCrawlRequest
|
|
23
25
|
from .firecrawl_crawl_request_proxy_mode import FirecrawlCrawlRequestProxyMode
|
|
24
26
|
from .firecrawl_crawl_request_scrape_headers_type_0 import (
|
|
@@ -72,6 +74,8 @@ __all__ = (
|
|
|
72
74
|
"ContentTypes",
|
|
73
75
|
"CrawlResponse",
|
|
74
76
|
"CrawlUrlResult",
|
|
77
|
+
"CustomApiRequestMethod",
|
|
78
|
+
"CustomApiSearchRequest",
|
|
75
79
|
"FirecrawlCrawlRequest",
|
|
76
80
|
"FirecrawlCrawlRequestProxyMode",
|
|
77
81
|
"FirecrawlCrawlRequestScrapeHeadersType0",
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import (
|
|
5
|
+
Any,
|
|
6
|
+
Literal,
|
|
7
|
+
TypeVar,
|
|
8
|
+
cast,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
from attrs import define as _attrs_define
|
|
12
|
+
from attrs import field as _attrs_field
|
|
13
|
+
|
|
14
|
+
from ..models.custom_api_request_method import CustomApiRequestMethod
|
|
15
|
+
from ..types import UNSET, Unset
|
|
16
|
+
|
|
17
|
+
T = TypeVar("T", bound="CustomApiSearchRequest")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@_attrs_define
|
|
21
|
+
class CustomApiSearchRequest:
|
|
22
|
+
r"""
|
|
23
|
+
Attributes:
|
|
24
|
+
query (str): Search query string
|
|
25
|
+
engine (Literal['custom_api'] | Unset): Provider discriminator; must be `custom_api` for this config. Default:
|
|
26
|
+
'custom_api'.
|
|
27
|
+
api_endpoint (str | Unset): HTTP(S) endpoint called by Search Proxy. Default: 'https://api.example.com/search'.
|
|
28
|
+
api_headers (str | Unset): JSON object containing headers sent to the custom API. Default: '{\\"Content-Type\\":
|
|
29
|
+
\\"application/json\\"}'.
|
|
30
|
+
api_additional_query_params (str | Unset): JSON object merged into the custom API query parameters. Default:
|
|
31
|
+
'{}'.
|
|
32
|
+
api_additional_body_params (str | Unset): JSON object merged into the custom API JSON body. Default: '{}'.
|
|
33
|
+
api_request_method (CustomApiRequestMethod | Unset):
|
|
34
|
+
timeout (int | Unset): Custom API request timeout in seconds. Default: 120.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
query: str
|
|
38
|
+
engine: Literal["custom_api"] | Unset = "custom_api"
|
|
39
|
+
api_endpoint: str | Unset = "https://api.example.com/search"
|
|
40
|
+
api_headers: str | Unset = '{\\"Content-Type\\": \\"application/json\\"}'
|
|
41
|
+
api_additional_query_params: str | Unset = "{}"
|
|
42
|
+
api_additional_body_params: str | Unset = "{}"
|
|
43
|
+
api_request_method: CustomApiRequestMethod | Unset = UNSET
|
|
44
|
+
timeout: int | Unset = 120
|
|
45
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
46
|
+
|
|
47
|
+
def to_dict(self) -> dict[str, Any]:
|
|
48
|
+
query = self.query
|
|
49
|
+
|
|
50
|
+
engine = self.engine
|
|
51
|
+
|
|
52
|
+
api_endpoint = self.api_endpoint
|
|
53
|
+
|
|
54
|
+
api_headers = self.api_headers
|
|
55
|
+
|
|
56
|
+
api_additional_query_params = self.api_additional_query_params
|
|
57
|
+
|
|
58
|
+
api_additional_body_params = self.api_additional_body_params
|
|
59
|
+
|
|
60
|
+
api_request_method: str | Unset = UNSET
|
|
61
|
+
if not isinstance(self.api_request_method, Unset):
|
|
62
|
+
api_request_method = self.api_request_method.value
|
|
63
|
+
|
|
64
|
+
timeout = self.timeout
|
|
65
|
+
|
|
66
|
+
field_dict: dict[str, Any] = {}
|
|
67
|
+
field_dict.update(self.additional_properties)
|
|
68
|
+
field_dict.update(
|
|
69
|
+
{
|
|
70
|
+
"query": query,
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
if engine is not UNSET:
|
|
74
|
+
field_dict["engine"] = engine
|
|
75
|
+
if api_endpoint is not UNSET:
|
|
76
|
+
field_dict["apiEndpoint"] = api_endpoint
|
|
77
|
+
if api_headers is not UNSET:
|
|
78
|
+
field_dict["apiHeaders"] = api_headers
|
|
79
|
+
if api_additional_query_params is not UNSET:
|
|
80
|
+
field_dict["apiAdditionalQueryParams"] = api_additional_query_params
|
|
81
|
+
if api_additional_body_params is not UNSET:
|
|
82
|
+
field_dict["apiAdditionalBodyParams"] = api_additional_body_params
|
|
83
|
+
if api_request_method is not UNSET:
|
|
84
|
+
field_dict["apiRequestMethod"] = api_request_method
|
|
85
|
+
if timeout is not UNSET:
|
|
86
|
+
field_dict["timeout"] = timeout
|
|
87
|
+
|
|
88
|
+
return field_dict
|
|
89
|
+
|
|
90
|
+
@classmethod
|
|
91
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
92
|
+
d = dict(src_dict)
|
|
93
|
+
query = d.pop("query")
|
|
94
|
+
|
|
95
|
+
engine = cast(Literal["custom_api"] | Unset, d.pop("engine", UNSET))
|
|
96
|
+
if engine != "custom_api" and not isinstance(engine, Unset):
|
|
97
|
+
raise ValueError(f"engine must match const 'custom_api', got '{engine}'")
|
|
98
|
+
|
|
99
|
+
api_endpoint = d.pop("apiEndpoint", UNSET)
|
|
100
|
+
|
|
101
|
+
api_headers = d.pop("apiHeaders", UNSET)
|
|
102
|
+
|
|
103
|
+
api_additional_query_params = d.pop("apiAdditionalQueryParams", UNSET)
|
|
104
|
+
|
|
105
|
+
api_additional_body_params = d.pop("apiAdditionalBodyParams", UNSET)
|
|
106
|
+
|
|
107
|
+
_api_request_method = d.pop("apiRequestMethod", UNSET)
|
|
108
|
+
api_request_method: CustomApiRequestMethod | Unset
|
|
109
|
+
if isinstance(_api_request_method, Unset):
|
|
110
|
+
api_request_method = UNSET
|
|
111
|
+
else:
|
|
112
|
+
api_request_method = CustomApiRequestMethod(_api_request_method)
|
|
113
|
+
|
|
114
|
+
timeout = d.pop("timeout", UNSET)
|
|
115
|
+
|
|
116
|
+
custom_api_search_request = cls(
|
|
117
|
+
query=query,
|
|
118
|
+
engine=engine,
|
|
119
|
+
api_endpoint=api_endpoint,
|
|
120
|
+
api_headers=api_headers,
|
|
121
|
+
api_additional_query_params=api_additional_query_params,
|
|
122
|
+
api_additional_body_params=api_additional_body_params,
|
|
123
|
+
api_request_method=api_request_method,
|
|
124
|
+
timeout=timeout,
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
custom_api_search_request.additional_properties = d
|
|
128
|
+
return custom_api_search_request
|
|
129
|
+
|
|
130
|
+
@property
|
|
131
|
+
def additional_keys(self) -> list[str]:
|
|
132
|
+
return list(self.additional_properties.keys())
|
|
133
|
+
|
|
134
|
+
def __getitem__(self, key: str) -> Any:
|
|
135
|
+
return self.additional_properties[key]
|
|
136
|
+
|
|
137
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
138
|
+
self.additional_properties[key] = value
|
|
139
|
+
|
|
140
|
+
def __delitem__(self, key: str) -> None:
|
|
141
|
+
del self.additional_properties[key]
|
|
142
|
+
|
|
143
|
+
def __contains__(self, key: str) -> bool:
|
|
144
|
+
return key in self.additional_properties
|
|
@@ -35,6 +35,7 @@ class VertexAiAgentSearchRequest:
|
|
|
35
35
|
timeout (int | Unset): Request timeout in seconds (agent runs can be slow). Default: 120.
|
|
36
36
|
vertexai_model_name (str | Unset): Gemini model name for grounded generation Default: 'gemini-3-flash-preview'.
|
|
37
37
|
enable_enterprise_search (bool | Unset): Default: False.
|
|
38
|
+
enable_redirect_resolution (bool | Unset): Whether to enable redirect resolution. Default: True.
|
|
38
39
|
"""
|
|
39
40
|
|
|
40
41
|
query: str
|
|
@@ -45,6 +46,7 @@ class VertexAiAgentSearchRequest:
|
|
|
45
46
|
timeout: int | Unset = 120
|
|
46
47
|
vertexai_model_name: str | Unset = "gemini-3-flash-preview"
|
|
47
48
|
enable_enterprise_search: bool | Unset = False
|
|
49
|
+
enable_redirect_resolution: bool | Unset = True
|
|
48
50
|
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
49
51
|
|
|
50
52
|
def to_dict(self) -> dict[str, Any]:
|
|
@@ -60,6 +62,8 @@ class VertexAiAgentSearchRequest:
|
|
|
60
62
|
|
|
61
63
|
enable_enterprise_search = self.enable_enterprise_search
|
|
62
64
|
|
|
65
|
+
enable_redirect_resolution = self.enable_redirect_resolution
|
|
66
|
+
|
|
63
67
|
field_dict: dict[str, Any] = {}
|
|
64
68
|
field_dict.update(self.additional_properties)
|
|
65
69
|
field_dict.update(
|
|
@@ -77,6 +81,8 @@ class VertexAiAgentSearchRequest:
|
|
|
77
81
|
field_dict["vertexaiModelName"] = vertexai_model_name
|
|
78
82
|
if enable_enterprise_search is not UNSET:
|
|
79
83
|
field_dict["enableEnterpriseSearch"] = enable_enterprise_search
|
|
84
|
+
if enable_redirect_resolution is not UNSET:
|
|
85
|
+
field_dict["enableRedirectResolution"] = enable_redirect_resolution
|
|
80
86
|
|
|
81
87
|
return field_dict
|
|
82
88
|
|
|
@@ -97,6 +103,8 @@ class VertexAiAgentSearchRequest:
|
|
|
97
103
|
|
|
98
104
|
enable_enterprise_search = d.pop("enableEnterpriseSearch", UNSET)
|
|
99
105
|
|
|
106
|
+
enable_redirect_resolution = d.pop("enableRedirectResolution", UNSET)
|
|
107
|
+
|
|
100
108
|
vertex_ai_agent_search_request = cls(
|
|
101
109
|
query=query,
|
|
102
110
|
engine=engine,
|
|
@@ -104,6 +112,7 @@ class VertexAiAgentSearchRequest:
|
|
|
104
112
|
timeout=timeout,
|
|
105
113
|
vertexai_model_name=vertexai_model_name,
|
|
106
114
|
enable_enterprise_search=enable_enterprise_search,
|
|
115
|
+
enable_redirect_resolution=enable_redirect_resolution,
|
|
107
116
|
)
|
|
108
117
|
|
|
109
118
|
vertex_ai_agent_search_request.additional_properties = d
|
|
@@ -24,6 +24,9 @@ from unique_search_proxy_core.search_engines.brave.schema import (
|
|
|
24
24
|
BraveSafesearch,
|
|
25
25
|
BraveUnits,
|
|
26
26
|
)
|
|
27
|
+
from unique_search_proxy_core.search_engines.custom_api.schema import (
|
|
28
|
+
CustomApiRequestMethod,
|
|
29
|
+
)
|
|
27
30
|
from unique_search_proxy_core.search_engines.google.schema import (
|
|
28
31
|
GoogleSafeDefault,
|
|
29
32
|
GoogleSiteSearchFilter,
|
|
@@ -174,6 +177,31 @@ class PerplexitySearchEndpoint(_TypedPostEndpoint[SearchResponse]):
|
|
|
174
177
|
)
|
|
175
178
|
|
|
176
179
|
|
|
180
|
+
class CustomApiSearchEndpoint(_TypedPostEndpoint[SearchResponse]):
|
|
181
|
+
async def __call__(
|
|
182
|
+
self,
|
|
183
|
+
*,
|
|
184
|
+
query: str,
|
|
185
|
+
api_endpoint: str,
|
|
186
|
+
engine: Literal["custom_api"] = "custom_api",
|
|
187
|
+
timeout: int = 120,
|
|
188
|
+
api_headers: str = '{"Content-Type": "application/json"}',
|
|
189
|
+
api_additional_query_params: str = "{}",
|
|
190
|
+
api_additional_body_params: str = "{}",
|
|
191
|
+
api_request_method: CustomApiRequestMethod = CustomApiRequestMethod.GET,
|
|
192
|
+
) -> SearchResponse:
|
|
193
|
+
return await self._call(
|
|
194
|
+
query=query,
|
|
195
|
+
api_endpoint=api_endpoint,
|
|
196
|
+
engine=engine,
|
|
197
|
+
timeout=timeout,
|
|
198
|
+
api_headers=api_headers,
|
|
199
|
+
api_additional_query_params=api_additional_query_params,
|
|
200
|
+
api_additional_body_params=api_additional_body_params,
|
|
201
|
+
api_request_method=api_request_method,
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
|
|
177
205
|
class BingAgentSearchEndpoint(_TypedPostEndpoint[AgentSearchResponse]):
|
|
178
206
|
async def __call__(
|
|
179
207
|
self,
|
|
@@ -207,6 +235,7 @@ class VertexAIAgentSearchEndpoint(_TypedPostEndpoint[AgentSearchResponse]):
|
|
|
207
235
|
timeout: int = 120,
|
|
208
236
|
vertexai_model_name: str = "gemini-3-flash-preview",
|
|
209
237
|
enable_enterprise_search: bool = False,
|
|
238
|
+
enable_redirect_resolution: bool = True,
|
|
210
239
|
) -> AgentSearchResponse:
|
|
211
240
|
return await self._call(
|
|
212
241
|
query=query,
|
|
@@ -215,6 +244,7 @@ class VertexAIAgentSearchEndpoint(_TypedPostEndpoint[AgentSearchResponse]):
|
|
|
215
244
|
timeout=timeout,
|
|
216
245
|
vertexai_model_name=vertexai_model_name,
|
|
217
246
|
enable_enterprise_search=enable_enterprise_search,
|
|
247
|
+
enable_redirect_resolution=enable_redirect_resolution,
|
|
218
248
|
)
|
|
219
249
|
|
|
220
250
|
|
|
@@ -417,6 +447,7 @@ __all__ = [
|
|
|
417
447
|
"BingAgentSearchEndpoint",
|
|
418
448
|
"BingAgentSearchStreamEndpoint",
|
|
419
449
|
"BraveSearchEndpoint",
|
|
450
|
+
"CustomApiSearchEndpoint",
|
|
420
451
|
"FirecrawlCrawlEndpoint",
|
|
421
452
|
"GoogleSearchEndpoint",
|
|
422
453
|
"JinaCrawlEndpoint",
|
|
@@ -6,6 +6,9 @@ from typing import Any
|
|
|
6
6
|
|
|
7
7
|
from unique_search_proxy_core.search_engines.brave.schema import BraveSearchRequest
|
|
8
8
|
from unique_search_proxy_core.search_engines.config_types import parse_search_request
|
|
9
|
+
from unique_search_proxy_core.search_engines.custom_api.schema import (
|
|
10
|
+
CustomApiSearchRequest,
|
|
11
|
+
)
|
|
9
12
|
from unique_search_proxy_core.search_engines.google.schema import GoogleSearchRequest
|
|
10
13
|
from unique_search_proxy_core.search_engines.perplexity.schema import (
|
|
11
14
|
PerplexitySearchRequest,
|
|
@@ -17,12 +20,13 @@ from unique_search_proxy_sdk._generated.models.search_response import SearchResp
|
|
|
17
20
|
from unique_search_proxy_sdk._transport import OpenapiTransport
|
|
18
21
|
from unique_search_proxy_sdk._typed_endpoints import (
|
|
19
22
|
BraveSearchEndpoint,
|
|
23
|
+
CustomApiSearchEndpoint,
|
|
20
24
|
GoogleSearchEndpoint,
|
|
21
25
|
PerplexitySearchEndpoint,
|
|
22
26
|
)
|
|
23
27
|
from unique_search_proxy_sdk.converters import to_sdk_search_request
|
|
24
28
|
|
|
25
|
-
_SEARCH_PROVIDERS = frozenset({"google", "brave", "perplexity"})
|
|
29
|
+
_SEARCH_PROVIDERS = frozenset({"google", "brave", "perplexity", "custom_api"})
|
|
26
30
|
|
|
27
31
|
|
|
28
32
|
class SearchClient:
|
|
@@ -31,6 +35,7 @@ class SearchClient:
|
|
|
31
35
|
google: GoogleSearchEndpoint
|
|
32
36
|
brave: BraveSearchEndpoint
|
|
33
37
|
perplexity: PerplexitySearchEndpoint
|
|
38
|
+
custom_api: CustomApiSearchEndpoint
|
|
34
39
|
|
|
35
40
|
def __init__(self, transport: OpenapiTransport) -> None:
|
|
36
41
|
self._transport = transport
|
|
@@ -64,6 +69,16 @@ class SearchClient:
|
|
|
64
69
|
response_type=SearchResponse,
|
|
65
70
|
),
|
|
66
71
|
)
|
|
72
|
+
self.custom_api = CustomApiSearchEndpoint(
|
|
73
|
+
async_post_endpoint(
|
|
74
|
+
transport,
|
|
75
|
+
CustomApiSearchRequest,
|
|
76
|
+
parse=parse_search_request,
|
|
77
|
+
to_sdk=to_sdk_search_request,
|
|
78
|
+
post=search_v1_search_post.asyncio_detailed,
|
|
79
|
+
response_type=SearchResponse,
|
|
80
|
+
),
|
|
81
|
+
)
|
|
67
82
|
|
|
68
83
|
async def search(
|
|
69
84
|
self,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|