Create device sessions
Create many sessions on this device, each with its files, topics, and schemas, in one call.
Answers 200 once the batch has been processed, even when the platform refused some of its declarations:
the response carries one element per declared session, in request order, holding either the session that
declaration created or the error that refused it. Every declaration’s refusal is decided before anything is
written, and the others are written together in one transaction, so a failure the platform did not
anticipate, such as the request’s deadline, writes none of them. A malformed batch answers 400.
A device not registered in this org answers 404, and so does a file an entry declares, or a file a listed
representation names, that is not an Available file of the org. All three are settled before the first
declaration is written, so the request creates no session. When a session a declaration reuses is deleted
before the request commits, the request answers 404 and writes nothing.
Each anchor_ns in the body is read as roboto.time.to_epoch_nanoseconds reads a time: an integer is
nanoseconds since the Unix epoch, a float or numeric string is seconds, and an ISO 8601 string is that
instant. An anchor at or before the epoch makes the batch malformed.
Declaring topics on a file or anchoring it writes to that file and so requires edit access to it; an anchor
stated on a session applies to every file that session names. Naming a file in a listed representation writes
nothing to that file and takes the access that declaring topics on it does, because a read of the topic opens
that file. Stating is_default_for_reads on a timeline source, true or false, additionally requires topic edit
access in the org: which source a schema’s reads fall back to is a property of the org’s topics, not of any one
file. Each denial answers 401 before any session is prepared.
Access control
- requires_resource_owner
- Restricted tokens need the API scope
api.everything_else
/v1/devices/id/{device_id}/sessionsAuthorizationBearer token · headerrequireddevice_idstringrequiredX-Roboto-Org-IdstringX-Roboto-User-Idstringapplication/jsonsessionsSessionDeclaration[]requiredShow propertiesHide properties
SessionDeclarationdescriptionstring | nullShow propertiesHide properties
stringnullmetadataobjecttagsstring[]custom_fieldsobject | nullShow propertiesHide properties
objectnullcompletion_policyCompletionPolicy | nullShow propertiesHide properties
inactivity_minutesintegerrequirednullnullnamestringrequiredanchor_nsinteger | nullShow propertiesHide properties
integernullfilesSessionFile[]Show propertiesHide properties
SessionFilefile_idstringrequireddata_rangeany[] | nullShow propertiesHide properties
anynullanchor_nsinteger | nullShow propertiesHide properties
integernulltopicsTopicDeclaration[]Show propertiesHide properties
TopicDeclarationtopic_namestringrequiredtopic_schemaSchemarequiredThe structure of one topic's data: the columns it carries.
However a schema is produced, whether hand-written field by field or converted from a source format's own metadata, the registered result is the same: schemas are content-addressed server-side. Identity covers every attribute of every field (name, path, source data type, canonical type, and unit), so identical declarations collapse to a single stored schema no matter how many times they are repeated, while declarations differing in any field attribute are stored separately.
A column a timeline source reads is declared by typing it
:py:attr:~roboto.domain.topics.record.CanonicalDataType.Timestamp with a
:py:class:~roboto.time.TimeUnit unit; nothing else marks it. Which of a topic's timeline sources reads
fall back to is not part of the schema: it is stated on
:py:attr:~roboto.experimental.ingest.TopicDeclaration.timeline_sources and can be changed later, so the
same columns are one schema no matter which source is preferred.
This is what a caller declares, so it carries no checksum: the platform computes that from the fields.
:py:class:~roboto.domain.topics.record.TopicSchemaRecord is the stored schema the platform returns,
carrying that checksum and the identifiers it assigns.
Show propertiesHide properties
namestring | nullShow propertiesHide properties
stringnullfieldsField[]requiredShow propertiesHide properties
Fieldnamestringpathstring[]data_typestringrequiredcanonical_data_typeCanonicalDataTypeNormalized data types used across different robotics frameworks.
Well-known and simplified data types that provide a common vocabulary for describing message path data types across different frameworks and technologies. These canonical types are primarily used for UI rendering decisions and cross-platform compatibility.
The canonical types abstract away framework-specific details while preserving the essential characteristics needed for data processing and visualization.
References: - ROS 1 field types: http://wiki.ros.org/msg - ROS 2 field types: https://docs.ros.org/en/iron/Concepts/Basic/About-Interfaces.html#field-types - uORB: https://docs.px4.io/main/en/middleware/uorb.html#adding-a-new-topic
Example mappings:
- float32 -> CanonicalDataType.Number
- uint8[] -> CanonicalDataType.Array
- sensor_msgs/Image -> CanonicalDataType.Image
- geometry_msgs/Pose -> CanonicalDataType.Object
- std_msgs/Header -> CanonicalDataType.Object
- string -> CanonicalDataType.String
- char -> CanonicalDataType.String
- bool -> CanonicalDataType.Boolean
- byte -> CanonicalDataType.Byte
arraybooleanbytecategoricalimagenumbernumber_arrayobjectstringtimestampunknownlatdegfloatlondegfloatlatdegintlondegintunitstring | nullShow propertiesHide properties
stringnulltimeline_sourcesSchemaFieldSource | McapLogTimeSource | McapPublishTimeSource | Mp4PresentationTimeSource[]requiredShow propertiesHide properties
SchemaFieldSource | McapLogTimeSource | McapPublishTimeSource | Mp4PresentationTimeSourcemin_file_timestamp_nsintegerrequiredmax_file_timestamp_nsintegerrequiredis_default_for_readsboolean | nullShow propertiesHide properties
booleannullkindstringfield_pathstring[]requiredmin_file_timestamp_nsintegerrequiredmax_file_timestamp_nsintegerrequiredis_default_for_readsboolean | nullShow propertiesHide properties
booleannullkindstringmin_file_timestamp_nsintegerrequiredmax_file_timestamp_nsintegerrequiredis_default_for_readsboolean | nullShow propertiesHide properties
booleannullkindstringmin_file_timestamp_nsintegerrequiredmax_file_timestamp_nsintegerrequiredis_default_for_readsboolean | nullShow propertiesHide properties
booleannullkindstringdata_rangeany[] | nullShow propertiesHide properties
anynullrepresentationsRepresentationDeclaration[]Show propertiesHide properties
RepresentationDeclarationfile_idstringrequiredstorage_formatRepresentationStorageFormatrequiredSupported storage formats for topic data representations.
Defines the available formats for storing and accessing topic data within the Roboto platform. Each format has different characteristics and use cases.
mcapparquetcontent_formatstring | nullShow propertiesHide properties
stringnulltransformationsstring[]field_pathstring[] | nullShow propertiesHide properties
stringstringnullmin_file_timestamp_nsinteger | nullShow propertiesHide properties
integernullmax_file_timestamp_nsinteger | nullShow propertiesHide properties
integernullOK
dataobjectrequiredShow propertiesHide properties
responsesBatchResponseElement_SessionRecord_[]requiredShow propertiesHide properties
BatchResponseElement_SessionRecord_dataSessionRecord | nullShow propertiesHide properties
completed_atstring<date-time> | nullShow propertiesHide properties
string<date-time>nullcompleted_bystring | nullShow propertiesHide properties
stringnullcompletes_atstring<date-time> | nullShow propertiesHide properties
string<date-time>nullcompletion_policyCompletionPolicy | nullShow propertiesHide properties
inactivity_minutesintegerrequirednullcreatedstring<date-time> | nullShow propertiesHide properties
string<date-time>nullcreated_bystringrequiredcustom_fieldsobjectdescriptionstring | nullShow propertiesHide properties
stringnullingested_atstring<date-time> | nullShow propertiesHide properties
string<date-time>nullingestion_countintegermax_timestamp_nsinteger | nullShow propertiesHide properties
integernullmetadataobjectmin_timestamp_nsinteger | nullShow propertiesHide properties
integernullmodifiedstring<date-time> | nullShow propertiesHide properties
string<date-time>nullmodified_bystringrequirednamestring | nullShow propertiesHide properties
stringnullorg_idstringrequiredsession_idstringrequiredstatusSessionStatusWhether a session is still receiving files.
in_progresscompletetagsstring[]nullerroranyThrown when the conversation context (messages, system prompt, tool results) exceeds the model's context window limit.
The token estimate and the model's context limit are not carried on the exception, so a caller cannot read usage numbers off it.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown when authentication fails
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown if an operation would exceed a user or org level limit.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown if a user is attempting to perform an action unrecognized by the Roboto platform.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown if there is a conflict between a resource you're creating and another existing resource
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown if a resource is missing or expired.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullAn error the platform reported that this SDK release cannot resolve to a specific exception class.
Reported for an element of a :py:class:~roboto.http.BatchResponse whose error names a code this release
defines no class for, or that arrived without a code, without a message, or as text that is not an
error envelope at all. It carries whatever code and message the platform sent, so a caller handling the
failure still learns what went wrong; when no message could be read, the message is the error's raw text.
The error envelope carries no status code, so http_status_code reports the 500 inherited from
:py:class:RobotoDomainException rather than the status the failure actually had.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown by shimmed out APIs which have not yet been implemented
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown when a service is unavailable, such as when it's under heavy load and can't accept new requests. This is expected to be transient and ought to be retried.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown when the service times out while processing a request. This is exepcted to be transient and ought to be retried.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown when the server cannot complete the request because the response payload exceeds a storage or transport capacity limit (e.g., Lambda response size). This is NOT expected to be transient and should NOT be retried.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | null