---
sidebar:
  hidden: true
title: roboto.domain.devices.operations
---
## Module Contents

### CreateDeviceRequest

```python
class roboto.domain.devices.operations.CreateDeviceRequest(/, **data: Any)
```

`from roboto import CreateDeviceRequest`

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/domain/devices/operations.py#L14-L53)

Bases: `pydantic.BaseModel`

Request payload to create a new device.

This request is used to register a new device with the Roboto platform. The device will be associated with the specified organization and can subsequently be used for authentication and data operations.

**Parameters**

- **data** (`Any`)

**Attributes**

- **CreateDeviceRequest.custom_fields** (`dict[str, Any] | None`) = `None`: Initial values for Ready custom fields on this device.

  Each key must be the name of a [`CustomField`](/reference/python-sdk/roboto/domain/custom_fields/custom_field#roboto.domain.custom_fields.custom_field.CustomField) that is [`Ready`](/reference/python-sdk/roboto/domain/custom_fields/record#roboto.domain.custom_fields.record.CustomFieldStatus.Ready) for the caller's org and the [`Device`](/reference/python-sdk/roboto/domain/custom_fields/record#roboto.domain.custom_fields.record.TargetEntityType.Device) entity type; each value must satisfy the field's declared type. Names that are undefined or not `Ready`, and values that don't match the field's type, are rejected with a structured error.

- **CreateDeviceRequest.device_id** (`str`): A user-provided identifier for a device, which is unique within that device's org.

- **CreateDeviceRequest.metadata** (`dict[str, Any]`) = `None`: Key-value metadata pairs to associate with the device for discovery and search.

- **CreateDeviceRequest.org_id** (`str | None`) = `None`: The org to which this device belongs. If None, the device will be registered under the caller's organization (if they belong to only one org) or an error will be raised if the caller belongs to multiple organizations.

- **CreateDeviceRequest.tags** (`list[str]`) = `None`: List of tags for device discovery and organization.

### InferDevicesRequest

```python
class roboto.domain.devices.operations.InferDevicesRequest(/, **data: Any)
```

`from roboto.domain.devices.operations import InferDevicesRequest`

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/domain/devices/operations.py#L80-L89)

Bases: `pydantic.BaseModel`

Request body for `POST /v1/devices/infer`.

Previews which devices a session created from the named files would be attached to: the union of the devices set as `device_id` on the files and on their parent datasets. Creates and modifies nothing.

**Parameters**

- **data** (`Any`)

**Attributes**

- **InferDevicesRequest.file_ids** (`list[str]`)
- **InferDevicesRequest.model_config**: Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

### InferDevicesResponse

```python
class roboto.domain.devices.operations.InferDevicesResponse(/, **data: Any)
```

`from roboto.domain.devices.operations import InferDevicesResponse`

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/domain/devices/operations.py#L92-L101)

Bases: `pydantic.BaseModel`

Response body for `POST /v1/devices/infer`.

Carries the devices a session created from the request's files would be attached to.

**Parameters**

- **data** (`Any`)

**Attributes**

- **InferDevicesResponse.device_ids** (`list[str]`): The distinct IDs of the inferred devices, unordered.
- **InferDevicesResponse.model_config**: Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

### UpdateDeviceRequest

```python
class roboto.domain.devices.operations.UpdateDeviceRequest(/, **data: Any)
```

`from roboto.domain.devices import UpdateDeviceRequest`

[Source](https://github.com/roboto-ai/roboto-python-sdk/blob/main/src/roboto/domain/devices/operations.py#L56-L77)

Bases: `pydantic.BaseModel`

Request payload for updating device properties.

Used to modify device metadata and tags. Supports granular updates through metadata changesets that can add, update, or remove specific fields and tags without affecting other properties.

**Parameters**

- **data** (`Any`)

**Attributes**

- **UpdateDeviceRequest.custom_fields_changeset** (`roboto.updates.CustomFieldChangeset | None`) = `None`: Changes to apply to Ready custom-field values on this device.

  Each referenced field name must be a [`Ready`](/reference/python-sdk/roboto/domain/custom_fields/record#roboto.domain.custom_fields.record.CustomFieldStatus.Ready) custom field for this device's org and the [`Device`](/reference/python-sdk/roboto/domain/custom_fields/record#roboto.domain.custom_fields.record.TargetEntityType.Device) entity type; each `set_fields` value must satisfy the field's declared type. Names that are undefined or not `Ready` are rejected with a structured error. Field names not mentioned by the changeset are left unchanged.

- **UpdateDeviceRequest.metadata_changeset** (`roboto.updates.MetadataChangeset | None`) = `None`: Metadata changes to apply (add, update, or remove fields/tags).
