> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encord.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configs

## BaseConfig Objects

```python theme={"dark"}
class BaseConfig(ABC)
```

Abstract base class for configuration.

**Arguments**:

* `endpoint` *str* - The API endpoint URL.
* `requests_settings` *RequestsSettings* - Settings for HTTP requests.

**Attributes**:

* `read_timeout` *int* - Timeout for read operations.
* `write_timeout` *int* - Timeout for write operations.
* `connect_timeout` *int* - Timeout for connection operations.
* `endpoint` *str* - The API endpoint URL.
* `requests_settings` *RequestsSettings* - Settings for HTTP requests.

#### define\_headers

```python theme={"dark"}
@abstractmethod
def define_headers(resource_id: Optional[str], resource_type: Optional[str],
                   data: str) -> Dict[str, Any]
```

Define headers for a request.

**Arguments**:

* `resource_id` *Optional\[str]* - The resource ID.
* `resource_type` *Optional\[str]* - The resource type.
* `data` *str* - The request data.

**Returns**:

Dict\[str, Any]: A dictionary of headers.

#### define\_headers\_v2

```python theme={"dark"}
@abstractmethod
def define_headers_v2(request: PreparedRequest) -> PreparedRequest
```

Define headers for a request (v2).

**Arguments**:

* `request` *PreparedRequest* - The prepared request.

**Returns**:

* `PreparedRequest` - The prepared request with headers defined.

## UserConfig Objects

```python theme={"dark"}
class UserConfig(BaseConfig)
```

Configuration for user-specific requests, redirecting to the "/public/user" endpoint.

**Arguments**:

* `config` *Config* - The base configuration.

**Attributes**:

* `config` *Config* - The base configuration.

#### domain

```python theme={"dark"}
@property
def domain() -> str
```

Get the domain from the base configuration.

**Returns**:

* `str` - The domain.

#### define\_headers

```python theme={"dark"}
def define_headers(resource_id: Optional[str], resource_type: Optional[str],
                   data: str) -> Dict[str, Any]
```

Define headers for a user-specific request.

**Arguments**:

* `resource_id` *Optional\[str]* - The resource ID.
* `resource_type` *Optional\[str]* - The resource type.
* `data` *str* - The request data.

**Returns**:

Dict\[str, Any]: A dictionary of headers.

#### define\_headers\_v2

```python theme={"dark"}
def define_headers_v2(request: PreparedRequest) -> PreparedRequest
```

Define headers for a user-specific request (v2).

**Arguments**:

* `request` *PreparedRequest* - The prepared request.

**Returns**:

* `PreparedRequest` - The prepared request with headers defined.

## Config Objects

```python theme={"dark"}
class Config(BaseConfig)
```

Configuration defining endpoint, project ID, API key, and timeouts.

**Arguments**:

* `web_file_path` *str* - The web file path for the endpoint.
* `domain` *Optional\[str]* - The domain.
* `requests_settings` *RequestsSettings* - Settings for HTTP requests.

**Attributes**:

* `domain` *str* - The domain.

#### get\_env\_ssh\_key

```python theme={"dark"}
def get_env_ssh_key() -> str
```

Get the raw SSH key from environment variables.

**Returns**:

* `str` - The raw SSH key.

**Raises**:

* `ResourceNotFoundError` - If the SSH key file or key is not found or is empty.

## SshConfig Objects

```python theme={"dark"}
class SshConfig(Config)
```

Configuration for SSH key-based authorization.

**Arguments**:

* `private_key` *Ed25519PrivateKey* - The private SSH key.
* `domain` *str* - The domain.
* `requests_settings` *RequestsSettings* - Settings for HTTP requests.

**Attributes**:

* `private_key` *Ed25519PrivateKey* - The private SSH key.
* `public_key` *Ed25519PublicKey* - The public SSH key.
* `public_key_hex` *str* - The public key in hexadecimal format.

#### define\_headers

```python theme={"dark"}
def define_headers(resource_id: Optional[str], resource_type: Optional[str],
                   data: str) -> Dict[str, Any]
```

Define headers for an SSH key-based request.

**Arguments**:

* `resource_id` *Optional\[str]* - The resource ID.
* `resource_type` *Optional\[str]* - The resource type.
* `data` *str* - The request data.

**Returns**:

Dict\[str, Any]: A dictionary of headers.

#### define\_headers\_v2

```python theme={"dark"}
def define_headers_v2(request: PreparedRequest) -> PreparedRequest
```

Define headers for an SSH key-based request (v2).

**Arguments**:

* `request` *PreparedRequest* - The prepared request.

**Returns**:

* `PreparedRequest` - The prepared request with headers defined.

#### from\_ssh\_private\_key

```python theme={"dark"}
@staticmethod
def from_ssh_private_key(
        ssh_private_key: str,
        password: Optional[str] = "",
        requests_settings: RequestsSettings = DEFAULT_REQUESTS_SETTINGS,
        domain: str = ENCORD_DOMAIN,
        **kwargs) -> SshConfig
```

Instantiate a SshConfig object by the content of a private SSH key.

**Arguments**:

* `ssh_private_key` - The content of a private key file.
* `password` - The password for the private key file.
* `requests_settings` - The requests settings for all outgoing network requests.
* `domain` - Base domain for the endpoints

**Returns**:

* `SshConfig` - The SSH configuration.

**Raises**:

* `ValueError` - If the provided key content is not of the correct format.

## BearerConfig Objects

```python theme={"dark"}
class BearerConfig(Config)
```

Configuration for bearer token-based authorization.

**Arguments**:

* `token` *str* - The bearer token.
* `domain` *str* - The domain.
* `requests_settings` *RequestsSettings* - Settings for HTTP requests.

**Attributes**:

* `token` *str* - The bearer token.

#### define\_headers

```python theme={"dark"}
def define_headers(resource_id: Optional[str], resource_type: Optional[str],
                   data: str) -> Dict[str, Any]
```

Define headers for a bearer token-based request.

**Arguments**:

* `resource_id` *Optional\[str]* - The resource ID.
* `resource_type` *Optional\[str]* - The resource type.
* `data` *str* - The request data.

**Returns**:

Dict\[str, Any]: A dictionary of headers.

#### define\_headers\_v2

```python theme={"dark"}
def define_headers_v2(request: PreparedRequest) -> PreparedRequest
```

Define headers for a bearer token-based request (v2).

**Arguments**:

* `request` *PreparedRequest* - The prepared request.

**Returns**:

* `PreparedRequest` - The prepared request with headers defined.

#### from\_bearer\_token

```python theme={"dark"}
@staticmethod
def from_bearer_token(
        token: str,
        requests_settings: RequestsSettings = DEFAULT_REQUESTS_SETTINGS,
        domain: str = ENCORD_DOMAIN,
        **kwargs) -> BearerConfig
```

Instantiate a BearerConfig object using a bearer token.

**Arguments**:

* `token` - The bearer token.
* `requests_settings` - The requests settings for all outgoing network requests.
* `domain` - Base domain for the endpoints

**Returns**:

* `BearerConfig` - The bearer token configuration.
