---
sidebar:
  label: roboto.service_discovery
  order: 24
title: roboto.service_discovery
---
## Module Contents

### SERVICE_DISCOVERY_PATH

```python
roboto.service_discovery.SERVICE_DISCOVERY_PATH = '/.well-known/roboto.json'
```

`from roboto.service_discovery import SERVICE_DISCOVERY_PATH`

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

Path, relative to a Roboto API endpoint, at which the deployment serves its [`ServiceDiscoveryDocument`](/docs/reference/python-sdk/roboto/service_discovery#roboto.service_discovery.ServiceDiscoveryDocument).

### ServiceDiscoveryDocument

```python
class roboto.service_discovery.ServiceDiscoveryDocument(/, **data: Any)
```

`from roboto.service_discovery import ServiceDiscoveryDocument`

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/service_discovery.py#L15-L28)

Bases: `pydantic.BaseModel`

The services a Roboto deployment offers, and the base URL of each.

The deployment's Roboto API serves it at [`SERVICE_DISCOVERY_PATH`](/docs/reference/python-sdk/roboto/service_discovery#roboto.service_discovery.SERVICE_DISCOVERY_PATH) without requiring credentials, as a JSON object that maps a versioned service name, such as `credential_requests.v1`, to the base URL serving that version of the service. A service the deployment doesn't offer is absent from the object. Names this model doesn't know are ignored, so a deployment can offer new services, or new versions of a service, without breaking older clients.

**Parameters**

- **data** (`Any`)

**Attributes**

- **ServiceDiscoveryDocument.credential_requests_v1** (`str | None`) = `None`: Base URL at which `roboto auth login` and `roboto setup` create a credential request (`POST v1/tokens/requests`) and redeem its authorization code (`POST v1/tokens/requests/exchange`), such as `https://api-public.roboto.ai`. It can differ from the Roboto API endpoint the issued token is used at. None if the deployment doesn't offer browser sign-in.
