---
sidebar:
  label: roboto.http.http_client
  order: 2
title: roboto.http.http_client
---
## Module Contents

### HttpClient

```python
class roboto.http.http_client.HttpClient(
    base_headers: Optional[dict[str, str]] = None,
    default_endpoint: Optional[str] = None,
    default_auth: Optional[roboto.http.request.HttpRequestDecorator] = None,
    requester: Optional[roboto.http.requester.RobotoRequester] = None,
    extra_headers_provider: Optional[Callable[[], dict[str, str]]] = None,
    default_timeout: Optional[float] = None,
    options: Optional[roboto.http.options.HttpClientOptions] = None,
)
```

`from roboto.http import HttpClient`

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L110-L324)

**Parameters**

- **base_headers** (`Optional[dict[str, str]]`)
- **default_endpoint** (`Optional[str]`)
- **default_auth** (`Optional[roboto.http.request.HttpRequestDecorator]`)
- **requester** (`Optional[roboto.http.requester.RobotoRequester]`)
- **extra_headers_provider** (`Optional[Callable[[], dict[str, str]]]`)
- **default_timeout** (`Optional[float]`)
- **options** (`Optional[roboto.http.options.HttpClientOptions]`)

**Properties**

- **HttpClient.auth_decorator** (`roboto.http.request.HttpRequestDecorator | None`): Return type: `Optional[roboto.http.request.HttpRequestDecorator]`

#### HttpClient.delete()

```python
def delete(
    url: str,
    data: Any = None,
    headers: Optional[dict] = None,
    idempotent: bool = True,
    retry_wait: Optional[roboto.http.request.RetryWaitFn] = None,
    timeout: roboto.env.Timeout = NotSet,
) -> roboto.http.response.HttpResponse
```

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L139-L157)

**Parameters**

- **url** (`str`)
- **data** (`Any`)
- **headers** (`Optional[dict]`)
- **idempotent** (`bool`)
- **retry_wait** (`Optional[roboto.http.request.RetryWaitFn]`)
- **timeout** (`roboto.env.Timeout`)

**Returns**

- `roboto.http.response.HttpResponse`

#### HttpClient.get()

```python
def get(
    url: str,
    headers: Optional[dict] = None,
    retry_wait: Optional[roboto.http.request.RetryWaitFn] = None,
    idempotent: bool = True,
    timeout: roboto.env.Timeout = NotSet,
) -> roboto.http.response.HttpResponse
```

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L159-L175)

**Parameters**

- **url** (`str`)
- **headers** (`Optional[dict]`)
- **retry_wait** (`Optional[roboto.http.request.RetryWaitFn]`)
- **idempotent** (`bool`)
- **timeout** (`roboto.env.Timeout`)

**Returns**

- `roboto.http.response.HttpResponse`

#### HttpClient.patch()

```python
def patch(
    url: str,
    data: Any = None,
    headers: Optional[dict] = None,
    idempotent: bool = True,
    retry_wait: Optional[roboto.http.request.RetryWaitFn] = None,
    timeout: roboto.env.Timeout = NotSet,
) -> roboto.http.response.HttpResponse
```

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L197-L215)

**Parameters**

- **url** (`str`)
- **data** (`Any`)
- **headers** (`Optional[dict]`)
- **idempotent** (`bool`)
- **retry_wait** (`Optional[roboto.http.request.RetryWaitFn]`)
- **timeout** (`roboto.env.Timeout`)

**Returns**

- `roboto.http.response.HttpResponse`

#### HttpClient.post()

```python
def post(
    url: str,
    data: Any = None,
    headers: Optional[dict] = None,
    idempotent: bool = False,
    retry_wait: Optional[roboto.http.request.RetryWaitFn] = None,
    timeout: roboto.env.Timeout = NotSet,
) -> roboto.http.response.HttpResponse
```

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L177-L195)

**Parameters**

- **url** (`str`)
- **data** (`Any`)
- **headers** (`Optional[dict]`)
- **idempotent** (`bool`)
- **retry_wait** (`Optional[roboto.http.request.RetryWaitFn]`)
- **timeout** (`roboto.env.Timeout`)

**Returns**

- `roboto.http.response.HttpResponse`

#### HttpClient.put()

```python
def put(
    url: str,
    data: Any = None,
    headers: Optional[dict] = None,
    idempotent: bool = True,
    retry_wait: Optional[roboto.http.request.RetryWaitFn] = None,
    timeout: roboto.env.Timeout = NotSet,
) -> roboto.http.response.HttpResponse
```

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L217-L235)

**Parameters**

- **url** (`str`)
- **data** (`Any`)
- **headers** (`Optional[dict]`)
- **idempotent** (`bool`)
- **retry_wait** (`Optional[roboto.http.request.RetryWaitFn]`)
- **timeout** (`roboto.env.Timeout`)

**Returns**

- `roboto.http.response.HttpResponse`

#### HttpClient.set_requester()

```python
def set_requester(requester: roboto.http.requester.RobotoRequester)
```

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L237-L238)

**Parameters**

- **requester** (`roboto.http.requester.RobotoRequester`)

#### HttpClient.url()

```python
def url(path: str) -> str
```

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L240-L243)

**Parameters**

- **path** (`str`)

**Returns**

- `str`

### is_expected_to_be_transient()

```python
def roboto.http.http_client.is_expected_to_be_transient(
    request: roboto.http.request.HttpRequest,
    exc: BaseException,
) -> bool
```

`from roboto.http import is_expected_to_be_transient`

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L43-L81)

The default retry predicate: whether `exc` is expected to be transient for `request`.

**Parameters**

- **request** (`roboto.http.request.HttpRequest`)
- **exc** (`BaseException`)

**Returns**

- `bool`

### logger

```python
roboto.http.http_client.logger
```

`from roboto.http.http_client import logger`

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/http/http_client.py#L40-L40)
