2025-05-16 18:00:22 +04:00

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)