2357 lines
89 KiB
Python
2357 lines
89 KiB
Python
# This file was auto-generated by Fern from our API Definition.
|
|
|
|
import typing
|
|
from ..core.client_wrapper import SyncClientWrapper
|
|
from ..core.request_options import RequestOptions
|
|
from ..types.list_connectors_response import ListConnectorsResponse
|
|
from ..core.unchecked_base_model import construct_type
|
|
from ..errors.bad_request_error import BadRequestError
|
|
from ..errors.unauthorized_error import UnauthorizedError
|
|
from ..errors.forbidden_error import ForbiddenError
|
|
from ..errors.not_found_error import NotFoundError
|
|
from ..errors.unprocessable_entity_error import UnprocessableEntityError
|
|
from ..errors.too_many_requests_error import TooManyRequestsError
|
|
from ..errors.invalid_token_error import InvalidTokenError
|
|
from ..errors.client_closed_request_error import ClientClosedRequestError
|
|
from ..errors.internal_server_error import InternalServerError
|
|
from ..errors.not_implemented_error import NotImplementedError
|
|
from ..errors.service_unavailable_error import ServiceUnavailableError
|
|
from ..errors.gateway_timeout_error import GatewayTimeoutError
|
|
from json.decoder import JSONDecodeError
|
|
from ..core.api_error import ApiError
|
|
from ..types.create_connector_o_auth import CreateConnectorOAuth
|
|
from ..types.create_connector_service_auth import CreateConnectorServiceAuth
|
|
from ..types.create_connector_response import CreateConnectorResponse
|
|
from ..core.serialization import convert_and_respect_annotation_metadata
|
|
from ..types.get_connector_response import GetConnectorResponse
|
|
from ..core.jsonable_encoder import jsonable_encoder
|
|
from ..types.delete_connector_response import DeleteConnectorResponse
|
|
from ..types.update_connector_response import UpdateConnectorResponse
|
|
from ..types.o_auth_authorize_response import OAuthAuthorizeResponse
|
|
from ..core.client_wrapper import AsyncClientWrapper
|
|
|
|
# this is used as the default value for optional parameters
|
|
OMIT = typing.cast(typing.Any, ...)
|
|
|
|
|
|
class ConnectorsClient:
|
|
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
self._client_wrapper = client_wrapper
|
|
|
|
def list(
|
|
self,
|
|
*,
|
|
limit: typing.Optional[float] = None,
|
|
offset: typing.Optional[float] = None,
|
|
request_options: typing.Optional[RequestOptions] = None,
|
|
) -> ListConnectorsResponse:
|
|
"""
|
|
Returns a list of connectors ordered by descending creation date (newer first). See ['Managing your Connector'](https://docs.cohere.com/docs/managing-your-connector) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
limit : typing.Optional[float]
|
|
Maximum number of connectors to return [0, 100].
|
|
|
|
offset : typing.Optional[float]
|
|
Number of connectors to skip before returning results [0, inf].
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
ListConnectorsResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
from cohere import Client
|
|
|
|
client = Client(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
client.connectors.list()
|
|
"""
|
|
_response = self._client_wrapper.httpx_client.request(
|
|
"v1/connectors",
|
|
method="GET",
|
|
params={
|
|
"limit": limit,
|
|
"offset": offset,
|
|
},
|
|
request_options=request_options,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
ListConnectorsResponse,
|
|
construct_type(
|
|
type_=ListConnectorsResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
def create(
|
|
self,
|
|
*,
|
|
name: str,
|
|
url: str,
|
|
description: typing.Optional[str] = OMIT,
|
|
excludes: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
oauth: typing.Optional[CreateConnectorOAuth] = OMIT,
|
|
active: typing.Optional[bool] = OMIT,
|
|
continue_on_failure: typing.Optional[bool] = OMIT,
|
|
service_auth: typing.Optional[CreateConnectorServiceAuth] = OMIT,
|
|
request_options: typing.Optional[RequestOptions] = None,
|
|
) -> CreateConnectorResponse:
|
|
"""
|
|
Creates a new connector. The connector is tested during registration and will cancel registration when the test is unsuccessful. See ['Creating and Deploying a Connector'](https://docs.cohere.com/v1/docs/creating-and-deploying-a-connector) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
name : str
|
|
A human-readable name for the connector.
|
|
|
|
url : str
|
|
The URL of the connector that will be used to search for documents.
|
|
|
|
description : typing.Optional[str]
|
|
A description of the connector.
|
|
|
|
excludes : typing.Optional[typing.Sequence[str]]
|
|
A list of fields to exclude from the prompt (fields remain in the document).
|
|
|
|
oauth : typing.Optional[CreateConnectorOAuth]
|
|
The OAuth 2.0 configuration for the connector. Cannot be specified if service_auth is specified.
|
|
|
|
active : typing.Optional[bool]
|
|
Whether the connector is active or not.
|
|
|
|
continue_on_failure : typing.Optional[bool]
|
|
Whether a chat request should continue or not if the request to this connector fails.
|
|
|
|
service_auth : typing.Optional[CreateConnectorServiceAuth]
|
|
The service to service authentication configuration for the connector. Cannot be specified if oauth is specified.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
CreateConnectorResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
from cohere import Client
|
|
|
|
client = Client(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
client.connectors.create(
|
|
name="name",
|
|
url="url",
|
|
)
|
|
"""
|
|
_response = self._client_wrapper.httpx_client.request(
|
|
"v1/connectors",
|
|
method="POST",
|
|
json={
|
|
"name": name,
|
|
"description": description,
|
|
"url": url,
|
|
"excludes": excludes,
|
|
"oauth": convert_and_respect_annotation_metadata(
|
|
object_=oauth, annotation=CreateConnectorOAuth, direction="write"
|
|
),
|
|
"active": active,
|
|
"continue_on_failure": continue_on_failure,
|
|
"service_auth": convert_and_respect_annotation_metadata(
|
|
object_=service_auth, annotation=CreateConnectorServiceAuth, direction="write"
|
|
),
|
|
},
|
|
headers={
|
|
"content-type": "application/json",
|
|
},
|
|
request_options=request_options,
|
|
omit=OMIT,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
CreateConnectorResponse,
|
|
construct_type(
|
|
type_=CreateConnectorResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> GetConnectorResponse:
|
|
"""
|
|
Retrieve a connector by ID. See ['Connectors'](https://docs.cohere.com/docs/connectors) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
id : str
|
|
The ID of the connector to retrieve.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
GetConnectorResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
from cohere import Client
|
|
|
|
client = Client(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
client.connectors.get(
|
|
id="id",
|
|
)
|
|
"""
|
|
_response = self._client_wrapper.httpx_client.request(
|
|
f"v1/connectors/{jsonable_encoder(id)}",
|
|
method="GET",
|
|
request_options=request_options,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
GetConnectorResponse,
|
|
construct_type(
|
|
type_=GetConnectorResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> DeleteConnectorResponse:
|
|
"""
|
|
Delete a connector by ID. See ['Connectors'](https://docs.cohere.com/docs/connectors) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
id : str
|
|
The ID of the connector to delete.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
DeleteConnectorResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
from cohere import Client
|
|
|
|
client = Client(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
client.connectors.delete(
|
|
id="id",
|
|
)
|
|
"""
|
|
_response = self._client_wrapper.httpx_client.request(
|
|
f"v1/connectors/{jsonable_encoder(id)}",
|
|
method="DELETE",
|
|
request_options=request_options,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
DeleteConnectorResponse,
|
|
construct_type(
|
|
type_=DeleteConnectorResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
def update(
|
|
self,
|
|
id: str,
|
|
*,
|
|
name: typing.Optional[str] = OMIT,
|
|
url: typing.Optional[str] = OMIT,
|
|
excludes: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
oauth: typing.Optional[CreateConnectorOAuth] = OMIT,
|
|
active: typing.Optional[bool] = OMIT,
|
|
continue_on_failure: typing.Optional[bool] = OMIT,
|
|
service_auth: typing.Optional[CreateConnectorServiceAuth] = OMIT,
|
|
request_options: typing.Optional[RequestOptions] = None,
|
|
) -> UpdateConnectorResponse:
|
|
"""
|
|
Update a connector by ID. Omitted fields will not be updated. See ['Managing your Connector'](https://docs.cohere.com/docs/managing-your-connector) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
id : str
|
|
The ID of the connector to update.
|
|
|
|
name : typing.Optional[str]
|
|
A human-readable name for the connector.
|
|
|
|
url : typing.Optional[str]
|
|
The URL of the connector that will be used to search for documents.
|
|
|
|
excludes : typing.Optional[typing.Sequence[str]]
|
|
A list of fields to exclude from the prompt (fields remain in the document).
|
|
|
|
oauth : typing.Optional[CreateConnectorOAuth]
|
|
The OAuth 2.0 configuration for the connector. Cannot be specified if service_auth is specified.
|
|
|
|
active : typing.Optional[bool]
|
|
|
|
continue_on_failure : typing.Optional[bool]
|
|
|
|
service_auth : typing.Optional[CreateConnectorServiceAuth]
|
|
The service to service authentication configuration for the connector. Cannot be specified if oauth is specified.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
UpdateConnectorResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
from cohere import Client
|
|
|
|
client = Client(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
client.connectors.update(
|
|
id="id",
|
|
)
|
|
"""
|
|
_response = self._client_wrapper.httpx_client.request(
|
|
f"v1/connectors/{jsonable_encoder(id)}",
|
|
method="PATCH",
|
|
json={
|
|
"name": name,
|
|
"url": url,
|
|
"excludes": excludes,
|
|
"oauth": convert_and_respect_annotation_metadata(
|
|
object_=oauth, annotation=CreateConnectorOAuth, direction="write"
|
|
),
|
|
"active": active,
|
|
"continue_on_failure": continue_on_failure,
|
|
"service_auth": convert_and_respect_annotation_metadata(
|
|
object_=service_auth, annotation=CreateConnectorServiceAuth, direction="write"
|
|
),
|
|
},
|
|
headers={
|
|
"content-type": "application/json",
|
|
},
|
|
request_options=request_options,
|
|
omit=OMIT,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
UpdateConnectorResponse,
|
|
construct_type(
|
|
type_=UpdateConnectorResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
def o_auth_authorize(
|
|
self,
|
|
id: str,
|
|
*,
|
|
after_token_redirect: typing.Optional[str] = None,
|
|
request_options: typing.Optional[RequestOptions] = None,
|
|
) -> OAuthAuthorizeResponse:
|
|
"""
|
|
Authorize the connector with the given ID for the connector oauth app. See ['Connector Authentication'](https://docs.cohere.com/docs/connector-authentication) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
id : str
|
|
The ID of the connector to authorize.
|
|
|
|
after_token_redirect : typing.Optional[str]
|
|
The URL to redirect to after the connector has been authorized.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
OAuthAuthorizeResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
from cohere import Client
|
|
|
|
client = Client(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
client.connectors.o_auth_authorize(
|
|
id="id",
|
|
)
|
|
"""
|
|
_response = self._client_wrapper.httpx_client.request(
|
|
f"v1/connectors/{jsonable_encoder(id)}/oauth/authorize",
|
|
method="POST",
|
|
params={
|
|
"after_token_redirect": after_token_redirect,
|
|
},
|
|
request_options=request_options,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
OAuthAuthorizeResponse,
|
|
construct_type(
|
|
type_=OAuthAuthorizeResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
|
|
class AsyncConnectorsClient:
|
|
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
self._client_wrapper = client_wrapper
|
|
|
|
async def list(
|
|
self,
|
|
*,
|
|
limit: typing.Optional[float] = None,
|
|
offset: typing.Optional[float] = None,
|
|
request_options: typing.Optional[RequestOptions] = None,
|
|
) -> ListConnectorsResponse:
|
|
"""
|
|
Returns a list of connectors ordered by descending creation date (newer first). See ['Managing your Connector'](https://docs.cohere.com/docs/managing-your-connector) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
limit : typing.Optional[float]
|
|
Maximum number of connectors to return [0, 100].
|
|
|
|
offset : typing.Optional[float]
|
|
Number of connectors to skip before returning results [0, inf].
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
ListConnectorsResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
import asyncio
|
|
|
|
from cohere import AsyncClient
|
|
|
|
client = AsyncClient(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
|
|
|
|
async def main() -> None:
|
|
await client.connectors.list()
|
|
|
|
|
|
asyncio.run(main())
|
|
"""
|
|
_response = await self._client_wrapper.httpx_client.request(
|
|
"v1/connectors",
|
|
method="GET",
|
|
params={
|
|
"limit": limit,
|
|
"offset": offset,
|
|
},
|
|
request_options=request_options,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
ListConnectorsResponse,
|
|
construct_type(
|
|
type_=ListConnectorsResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
async def create(
|
|
self,
|
|
*,
|
|
name: str,
|
|
url: str,
|
|
description: typing.Optional[str] = OMIT,
|
|
excludes: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
oauth: typing.Optional[CreateConnectorOAuth] = OMIT,
|
|
active: typing.Optional[bool] = OMIT,
|
|
continue_on_failure: typing.Optional[bool] = OMIT,
|
|
service_auth: typing.Optional[CreateConnectorServiceAuth] = OMIT,
|
|
request_options: typing.Optional[RequestOptions] = None,
|
|
) -> CreateConnectorResponse:
|
|
"""
|
|
Creates a new connector. The connector is tested during registration and will cancel registration when the test is unsuccessful. See ['Creating and Deploying a Connector'](https://docs.cohere.com/v1/docs/creating-and-deploying-a-connector) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
name : str
|
|
A human-readable name for the connector.
|
|
|
|
url : str
|
|
The URL of the connector that will be used to search for documents.
|
|
|
|
description : typing.Optional[str]
|
|
A description of the connector.
|
|
|
|
excludes : typing.Optional[typing.Sequence[str]]
|
|
A list of fields to exclude from the prompt (fields remain in the document).
|
|
|
|
oauth : typing.Optional[CreateConnectorOAuth]
|
|
The OAuth 2.0 configuration for the connector. Cannot be specified if service_auth is specified.
|
|
|
|
active : typing.Optional[bool]
|
|
Whether the connector is active or not.
|
|
|
|
continue_on_failure : typing.Optional[bool]
|
|
Whether a chat request should continue or not if the request to this connector fails.
|
|
|
|
service_auth : typing.Optional[CreateConnectorServiceAuth]
|
|
The service to service authentication configuration for the connector. Cannot be specified if oauth is specified.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
CreateConnectorResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
import asyncio
|
|
|
|
from cohere import AsyncClient
|
|
|
|
client = AsyncClient(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
|
|
|
|
async def main() -> None:
|
|
await client.connectors.create(
|
|
name="name",
|
|
url="url",
|
|
)
|
|
|
|
|
|
asyncio.run(main())
|
|
"""
|
|
_response = await self._client_wrapper.httpx_client.request(
|
|
"v1/connectors",
|
|
method="POST",
|
|
json={
|
|
"name": name,
|
|
"description": description,
|
|
"url": url,
|
|
"excludes": excludes,
|
|
"oauth": convert_and_respect_annotation_metadata(
|
|
object_=oauth, annotation=CreateConnectorOAuth, direction="write"
|
|
),
|
|
"active": active,
|
|
"continue_on_failure": continue_on_failure,
|
|
"service_auth": convert_and_respect_annotation_metadata(
|
|
object_=service_auth, annotation=CreateConnectorServiceAuth, direction="write"
|
|
),
|
|
},
|
|
headers={
|
|
"content-type": "application/json",
|
|
},
|
|
request_options=request_options,
|
|
omit=OMIT,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
CreateConnectorResponse,
|
|
construct_type(
|
|
type_=CreateConnectorResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
async def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> GetConnectorResponse:
|
|
"""
|
|
Retrieve a connector by ID. See ['Connectors'](https://docs.cohere.com/docs/connectors) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
id : str
|
|
The ID of the connector to retrieve.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
GetConnectorResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
import asyncio
|
|
|
|
from cohere import AsyncClient
|
|
|
|
client = AsyncClient(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
|
|
|
|
async def main() -> None:
|
|
await client.connectors.get(
|
|
id="id",
|
|
)
|
|
|
|
|
|
asyncio.run(main())
|
|
"""
|
|
_response = await self._client_wrapper.httpx_client.request(
|
|
f"v1/connectors/{jsonable_encoder(id)}",
|
|
method="GET",
|
|
request_options=request_options,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
GetConnectorResponse,
|
|
construct_type(
|
|
type_=GetConnectorResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
async def delete(
|
|
self, id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
) -> DeleteConnectorResponse:
|
|
"""
|
|
Delete a connector by ID. See ['Connectors'](https://docs.cohere.com/docs/connectors) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
id : str
|
|
The ID of the connector to delete.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
DeleteConnectorResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
import asyncio
|
|
|
|
from cohere import AsyncClient
|
|
|
|
client = AsyncClient(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
|
|
|
|
async def main() -> None:
|
|
await client.connectors.delete(
|
|
id="id",
|
|
)
|
|
|
|
|
|
asyncio.run(main())
|
|
"""
|
|
_response = await self._client_wrapper.httpx_client.request(
|
|
f"v1/connectors/{jsonable_encoder(id)}",
|
|
method="DELETE",
|
|
request_options=request_options,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
DeleteConnectorResponse,
|
|
construct_type(
|
|
type_=DeleteConnectorResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
async def update(
|
|
self,
|
|
id: str,
|
|
*,
|
|
name: typing.Optional[str] = OMIT,
|
|
url: typing.Optional[str] = OMIT,
|
|
excludes: typing.Optional[typing.Sequence[str]] = OMIT,
|
|
oauth: typing.Optional[CreateConnectorOAuth] = OMIT,
|
|
active: typing.Optional[bool] = OMIT,
|
|
continue_on_failure: typing.Optional[bool] = OMIT,
|
|
service_auth: typing.Optional[CreateConnectorServiceAuth] = OMIT,
|
|
request_options: typing.Optional[RequestOptions] = None,
|
|
) -> UpdateConnectorResponse:
|
|
"""
|
|
Update a connector by ID. Omitted fields will not be updated. See ['Managing your Connector'](https://docs.cohere.com/docs/managing-your-connector) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
id : str
|
|
The ID of the connector to update.
|
|
|
|
name : typing.Optional[str]
|
|
A human-readable name for the connector.
|
|
|
|
url : typing.Optional[str]
|
|
The URL of the connector that will be used to search for documents.
|
|
|
|
excludes : typing.Optional[typing.Sequence[str]]
|
|
A list of fields to exclude from the prompt (fields remain in the document).
|
|
|
|
oauth : typing.Optional[CreateConnectorOAuth]
|
|
The OAuth 2.0 configuration for the connector. Cannot be specified if service_auth is specified.
|
|
|
|
active : typing.Optional[bool]
|
|
|
|
continue_on_failure : typing.Optional[bool]
|
|
|
|
service_auth : typing.Optional[CreateConnectorServiceAuth]
|
|
The service to service authentication configuration for the connector. Cannot be specified if oauth is specified.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
UpdateConnectorResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
import asyncio
|
|
|
|
from cohere import AsyncClient
|
|
|
|
client = AsyncClient(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
|
|
|
|
async def main() -> None:
|
|
await client.connectors.update(
|
|
id="id",
|
|
)
|
|
|
|
|
|
asyncio.run(main())
|
|
"""
|
|
_response = await self._client_wrapper.httpx_client.request(
|
|
f"v1/connectors/{jsonable_encoder(id)}",
|
|
method="PATCH",
|
|
json={
|
|
"name": name,
|
|
"url": url,
|
|
"excludes": excludes,
|
|
"oauth": convert_and_respect_annotation_metadata(
|
|
object_=oauth, annotation=CreateConnectorOAuth, direction="write"
|
|
),
|
|
"active": active,
|
|
"continue_on_failure": continue_on_failure,
|
|
"service_auth": convert_and_respect_annotation_metadata(
|
|
object_=service_auth, annotation=CreateConnectorServiceAuth, direction="write"
|
|
),
|
|
},
|
|
headers={
|
|
"content-type": "application/json",
|
|
},
|
|
request_options=request_options,
|
|
omit=OMIT,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
UpdateConnectorResponse,
|
|
construct_type(
|
|
type_=UpdateConnectorResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
|
|
async def o_auth_authorize(
|
|
self,
|
|
id: str,
|
|
*,
|
|
after_token_redirect: typing.Optional[str] = None,
|
|
request_options: typing.Optional[RequestOptions] = None,
|
|
) -> OAuthAuthorizeResponse:
|
|
"""
|
|
Authorize the connector with the given ID for the connector oauth app. See ['Connector Authentication'](https://docs.cohere.com/docs/connector-authentication) for more information.
|
|
|
|
Parameters
|
|
----------
|
|
id : str
|
|
The ID of the connector to authorize.
|
|
|
|
after_token_redirect : typing.Optional[str]
|
|
The URL to redirect to after the connector has been authorized.
|
|
|
|
request_options : typing.Optional[RequestOptions]
|
|
Request-specific configuration.
|
|
|
|
Returns
|
|
-------
|
|
OAuthAuthorizeResponse
|
|
OK
|
|
|
|
Examples
|
|
--------
|
|
import asyncio
|
|
|
|
from cohere import AsyncClient
|
|
|
|
client = AsyncClient(
|
|
client_name="YOUR_CLIENT_NAME",
|
|
token="YOUR_TOKEN",
|
|
)
|
|
|
|
|
|
async def main() -> None:
|
|
await client.connectors.o_auth_authorize(
|
|
id="id",
|
|
)
|
|
|
|
|
|
asyncio.run(main())
|
|
"""
|
|
_response = await self._client_wrapper.httpx_client.request(
|
|
f"v1/connectors/{jsonable_encoder(id)}/oauth/authorize",
|
|
method="POST",
|
|
params={
|
|
"after_token_redirect": after_token_redirect,
|
|
},
|
|
request_options=request_options,
|
|
)
|
|
try:
|
|
if 200 <= _response.status_code < 300:
|
|
return typing.cast(
|
|
OAuthAuthorizeResponse,
|
|
construct_type(
|
|
type_=OAuthAuthorizeResponse, # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
if _response.status_code == 400:
|
|
raise BadRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 401:
|
|
raise UnauthorizedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 403:
|
|
raise ForbiddenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 404:
|
|
raise NotFoundError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 422:
|
|
raise UnprocessableEntityError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 429:
|
|
raise TooManyRequestsError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 498:
|
|
raise InvalidTokenError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 499:
|
|
raise ClientClosedRequestError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 500:
|
|
raise InternalServerError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 501:
|
|
raise NotImplementedError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 503:
|
|
raise ServiceUnavailableError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
if _response.status_code == 504:
|
|
raise GatewayTimeoutError(
|
|
typing.cast(
|
|
typing.Optional[typing.Any],
|
|
construct_type(
|
|
type_=typing.Optional[typing.Any], # type: ignore
|
|
object_=_response.json(),
|
|
),
|
|
)
|
|
)
|
|
_response_json = _response.json()
|
|
except JSONDecodeError:
|
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|