roboto.api_version#
Module Contents#
- class roboto.api_version.RobotoApiVersion#
Bases:
roboto.compat.StrEnumEnumeration of supported Roboto API versions.
This enum defines the available API versions for the Roboto platform. Each version represents a specific date-based API version that may include breaking changes, new features, or deprecations compared to previous versions.
API versions follow the YYYY-MM-DD format and are used to ensure backward compatibility while allowing the platform to evolve. Clients should specify the API version they were designed for to ensure consistent behavior.
- is_latest()#
Check if this API version is the latest available version.
- Returns:
True if this version matches the latest API version, False otherwise.
- Return type:
bool
- static latest()#
Get the newest API version this build of the SDK knows about.
Requests carry this version unless the caller names an older one.
- Returns:
The most recent member of this enum.
- Return type:
- v2025_01_01 = '2025-01-01'#
- v2025_07_14 = '2025-07-14'#
- v2026_01_02 = '2026-01-02'#
Release date for v0.35.0 of the Roboto Python SDK
- v2026_02_02 = '2026-02-02'#
Content mode introduced for query APIs.
- v2026_02_11 = '2026-02-11'#
path_in_schema is now a required field on AddMessagePathRequest
- v2026_03_13 = '2026-03-13'#
Query endpoints are now eventually consistent when using v2026_03_13 or later. Clients on older API versions maintain strong consistency for backward compatibility.
- v2026_05_20 = '2026-05-20'#
AgentSession and AI Chat are renamed to AgentThread across the SDK and REST API:
chat_id/session_idbecomethread_idon the wire,/v1/ai/chatsbecomes/v1/ai/threads, and agentinvokebecomeslaunch(POST /v1/ai/agents/{id}/launch; the previous developer-only…/invokeURL was removed outright). Clients on older API versions continue to receivesession_idin response bodies and can keep calling the legacy/v1/ai/chatspaths, which are soft-deprecated aliases on the same handlers.
- v2026_07_05 = '2026-07-05'#
PUT /v1/files/upload/<id>/progressresponds with{uri, file_id}pairs instead of a bare file-id list, so upload clients can tell which created file belongs to which uploaded path. Clients on older API versions continue to receive the bare id list.
- v2026_08_10 = '2026-08-10'#
GET /v1/datasets/tags,GET /v1/events/tags, andGET /v1/files/tagsrespond with a paginated{items, next_token}object (with optionalsearch/limit/page_tokenquery parameters) instead of a bare string list, so tag autocomplete scales past the unique-tag cap. Clients on older API versions continue to receive the bare list.
- v2026_08_27 = '2026-08-27'#
/v1/triggersspeaks the v2 trigger shape (events/once_per/targetsfromroboto.domain.triggers) instead of the legacycauses/for_each/action-column shape, and rejects a caller-suppliedservice_user_id. Clients on older API versions keep the legacy shape: their creates and updates are translated onto v2 triggers, responses are projected back, and triggers with no legacy representation (multiple targets, non-action targets, new event types) are filtered from lists and 404 on direct reads.
- v2026_09_30 = '2026-09-30'#
what the user was viewing when they sent the message, stored on the message itself. Clients on older API versions receive threads with those blocks removed, since their
AgentContentunion cannot parse them.- Type:
Agent thread messages can carry
client_contextcontent blocks
- v2026_10_02 = '2026-10-02'#
fs_type"link"and aroboto://uri pinning one version of another file. Clients on older API versions, whoseFSTypehas onlyfileanddirectory, never receive one: links are dropped from file listings, and reading one directly by ID or path reports it as not found.- Type:
A file record can be a link
- v2026_10_05 = '2026-10-05'#
POST /v2/topics/id/<topic_id>/read-planstates the bounds each partition’s rows are selected in on a per-partitionwindow, instead of theextentit returned before. Clients on older API versions continue to receiveextent, set on every partition to the plan’s own window; such a client selects rows by the plan’s window alone. Two kinds of read are refused with HTTP 400 and a message to upgrade rather than served that way: a read scoped to a Session that holds a file over only part of the requested time span, and a read covering a file that packs several partitions’ data. Either would otherwise return rows belonging to another Session, or to another partition packed into the same file.Adding files to a Session, removing them, and publishing metrics answer with one element per entry the request named, in the order it named them, each holding the entry’s result or the error that refused it. An entry the platform refuses leaves the others in place: an add decides every refusal before writing anything and adds the rest together, and a remove removes together every file the Session holds and reports the rest as not held. A failure the platform did not anticipate, such as a timeout, adds or removes none of them. An add naming a file that does not exist is refused whole, before any entry is applied. A file entry states the window the Session holds the file over in the file’s own timestamps, on
min_file_timestamp_nsandmax_file_timestamp_ns, and a call names at least one file. Listing a Session’s files reports each file’s window in Unix-epoch nanoseconds onmin_wall_clock_timestamp_nsandmax_wall_clock_timestamp_ns.Clients on older API versions keep the earlier contract for these four calls. Listing a Session’s files reports the same window on
range_min_timestamp_nsandrange_max_timestamp_ns. A file entry carries the file’s id, an optionaldata_range, and a window in Unix-epoch nanoseconds onrange_min_timestamp_nsandrange_max_timestamp_ns. Adds and removes accept a call naming no files and answer with the Session’s refreshed record. An add stands or falls whole: when the platform refuses a file, it answers with the error for the first refused file and adds none of them, and a file named twice is added over its last entry. A remove stands or falls whole too, and skips a file the Session does not hold. Metric publication answers with asucceededlist and afailedlist.succeededholds one record per metric and Session, carrying the last value written when a call published the same pair more than once; each entry infailedis named by the metric name the caller submitted.
- v2026_10_06 = '2026-10-06'#
A saved View’s filter rows (
SavedFilters) can carryor_null, and abooleanEQUALSrow can name both values. Clients on older API versions, whose filter rows forbid unknown fields and allow a boolean exactly one value, never receive a View they cannot parse: a booleanEQUALSover both values reaches them as theIS_NOT_NULLit means, a View with a row usingor_nullis dropped from View listings and reported as not found when read by ID, and updating such a View is refused with HTTP 400 and a message to upgrade.