CreateRunPayload
POST /runs.
Parameters
str
required
str | None
default:"None"
str
default:"'latest'"
int
default:"3600"
RunPythonPayload | None
default:"None"
RunJarPayload | None
default:"None"
RunEnvironment | None
default:"None"
DirectoryPage
Parameters
list[FileEntry]
default:"list()"
The files and folders on this page.
str | None
default:"None"
Cursor for the next page, or
None on the last page.FileDependency
Parameters
str
required
DependencyFileType | None
default:"None"
FileEntry
Parameters
str
required
The entry’s own name, without a trailing
/.str
required
The entry’s path as the API reports it.
bool
required
True for a folder.int
default:"0"
Size in bytes (
0 for folders).datetime | None
default:"None"
Last modification time, when the API reports one.
FileUploadTarget
Parameters
str
required
The storage location the file will be written to.
str
required
Presigned PUT URL. It is a bearer credential, so
repr hides it.KubeAppEvent
KubeAppEvent).
Parameters
str
default:"''"
str
default:"''"
str
default:"''"
str | None
default:"None"
str | None
default:"None"
RunEventMeta | None
default:"None"
LogItem
timestamp field is typed as Union[int, str, None] because
the Wherobots API returns integer epoch values (e.g. 0) while
other sources may use ISO-8601 strings.
Parameters
str
default:"''"
int | str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
dict[str, Any]
default:"dict()"
LogsResponse
GET /runs/{id}/logs.
The API returns current_page (int) and next_page (int) for
cursor-based pagination. raw holds the original server response
so callers can reach new fields without a SDK release.
Parameters
list[LogItem]
default:"list()"
int | str | None
default:"None"
int | str | None
default:"None"
dict[str, Any]
default:"dict()"
OffsetPage
Parameters
list[T]
required
The items on this page.
int
required
How many items match in all, across every page.
int
required
The page size the server applied.
int
required
How many matching items precede this page.
next_offset
offset of the next page, or None on the last page.
OrganizationCustomer
OrganizationCustomer).
Returned on RunView.triggeredBy to identify the user who
submitted a run.
Parameters
str
default:"''"
str
default:"''"
str
default:"''"
str | None
default:"None"
str | None
default:"None"
list[str]
default:"list()"
PyPiDependency
Parameters
str
required
str
required
RunAppMeta
RunAppMeta).
Parameters
str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
RunEnvironment
Parameters
dict[str, str] | None
default:"None"
list[dict[str, Any]] | None
default:"None"
int | None
default:"None"
int | None
default:"None"
RunEventMeta
KubeAppEvent (OpenAPI RunEventMeta).
Parameters
int | None
default:"None"
int | None
default:"None"
RunJarPayload
mainClass is optional on responses
(the server may infer it). Kept as a string here with "" as
the “unset” sentinel so existing callers who read the field
unconditionally continue to work.
Parameters
str
required
str
default:"''"
list[str]
default:"list()"
RunKubeApp
RunKubeApp).
Forward-compat: app_type and status round-trip unknown
server values as raw strings rather than silently dropping them.
Parameters
str
default:"''"
str
default:"''"
str
default:"''"
str
default:"''"
AppType | str | None
default:"None"
AppStatus | str | None
default:"None"
str | None
default:"None"
dict[str, Any] | None
default:"None"
RunAppMeta | None
default:"None"
list[KubeAppEvent]
default:"list()"
int
default:"0"
str
default:"''"
str | None
default:"None"
RunListPage
GET /runs response).
The Wherobots API returns string-based pagination cursors:
next_page, previous_page, current_page,
current_page_backwards.
Parameters
list[RunView]
default:"list()"
int
default:"0"
str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
dict[str, Any]
default:"dict()"
cursor
next_page — kept for backward compatibility.
RunMetricsResponse
GET /runs/{id}/metrics.
Per the OpenAPI spec the metrics blobs use snake_case keys
(series_metrics / instant_metrics) and are typed as plain
object (the server’s internal metric shape is not stable enough
to type against). The SDK exposes them as untyped dicts keyed by
metric name; callers can inspect raw for any new fields the
server adds.
Parameters
dict[str, Any]
default:"dict()"
dict[str, Any]
default:"dict()"
dict[str, Any]
default:"dict()"
dict[str, Any]
default:"dict()"
RunPythonPayload
Parameters
str
required
list[str]
default:"list()"
RunView
GET /runs/{id} response).
The Wherobots API nests payload fields (runtime, runPython,
runJar, timeoutSeconds, environment) under a "payload"
key. from_dict transparently flattens these so callers can access
e.g. view.runtime directly.
Timestamp fields from the API use createTime / startTime /
completeTime; for convenience the parser also accepts the legacy
createdAt / startedAt / completedAt aliases.
Forward-compat:
statusis typed asJobStatus | str | Noneso a status value the SDK doesn’t know about yet (e.g. a new terminal state added server-side) round-trips as the raw string instead of silently disappearing. Useis_terminal_statusto check terminality without assuming the enum.rawholds the full server response dict, so newly added fields are always reachable even when the typed surface hasn’t caught up.
Parameters
str
required
str
required
JobStatus | str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
int | None
default:"None"
str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
RunPythonPayload | None
default:"None"
RunJarPayload | None
default:"None"
RunEnvironment | None
default:"None"
RunAppMeta | None
default:"None"
RunKubeApp | None
default:"None"
OrganizationCustomer | None
default:"None"
dict[str, Any]
default:"dict()"
dict[str, Any]
default:"dict()"
completed_at
created_at
started_at
StorageIntegration
GET /storage. The type field
distinguishes the org’s MANAGED bucket from external INTEGRATION
buckets the user has wired up.
Parameters
str
required
str
required
str
required
str
required
str
default:"'INTEGRATION'"
str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
str | None
default:"None"
dict[str, Any]
default:"dict()"
is_managed
Task
Parameters
str
required
str
required
str | None
default:"None"
list[str]
default:"list()"
dict[str, object] | None
default:"None"
JSON Schema the run inputs must satisfy, when the task has one.
dict[str, object] | None
default:"None"
JSON Schema of a successful run’s results, when the task has one.
list[TaskExample]
default:"list()"
Example inputs.
TaskExample
Parameters
str
required
What the example shows.
dict[str, object]
default:"dict()"
Inputs to pass to
Tasks.run.TaskRun
Parameters
str
required
str
required
TaskRunState | str
required
str
required
datetime | None
default:"None"
datetime | None
default:"None"
datetime | None
default:"None"
int | None
default:"None"
str | None
default:"None"
The name given to the run, if any.
dict[str, object]
default:"dict()"
The inputs it ran with.
dict[str, object] | None
default:"None"
The task’s outputs by name (one output reads
{"o0": ...}) once
the run has succeeded.bool
default:"False"
Whether it returned a stored result from an earlier identical run.
str | None
default:"None"
Why the run did not succeed.
is_active
True while the run may still change state.
TaskRunCost
Parameters
str
required
The run’s id.
Decimal
required
Total cost in US dollars.
int
required
Billed units.
str
required
What a unit measures.
bool
required
True while the cost may still change.TaskRunLogEntry
Parameters
str
required
UTC instant to the nanosecond, as a string (
datetime would round it).str
required
Log level.
str
required
The line.
TaskRunLogs
Parameters
str
required
The run’s id.
list[TaskRunLogEntry]
default:"list()"
Log lines, oldest first.
str | None
default:"None"
Pass as
since to fetch the lines after this page; None once
the run has finished and every line has been returned.TaskRunSummary
Parameters
str
required
The run’s id.
str
required
The task it ran.
TaskRunState | str
required
A
TaskRunState, or the raw string for a state this SDK does not know.str
required
The region it runs in.
datetime | None
default:"None"
When it was submitted.
datetime | None
default:"None"
When it started executing.
datetime | None
default:"None"
When it ended.
int | None
default:"None"
How long it executed (so far, while running).
is_active
True while the run may still change state.
TaskSummary
Parameters
str
required
The task’s unique name; pass it to
Tasks.get and Tasks.run.str
required
Human-readable name.
str | None
default:"None"
What the task does, when it says.
list[str]
default:"list()"
Regions the task can run in.
TemporaryAwsCredentials
POST /storage/credentials.
Scope is determined server-side from the requested S3 path: the
server picks the right backing bucket (managed / releases /
matching Storage Integration).
Security posture:
- Masked in repr/str.
repr(creds)(and thereforestr(creds)and any f-string interpolation) only show the last 4 characters of the access key ID. Secret + session token never appear. - Frozen. Attribute injection is rejected;
wipe()is the only mutator (viaobject.__setattr__internally). - No pickle / copy.
__reduce__,__copy__, and__deepcopy__raiseTypeErrorso creds cannot be silently serialized to disk, queues, or another process. - Local eviction via
wipe(). Zeros the secret fields and poisonsexpirationso any subsequentis_expiredcheck returnsTrue. Python strings are immutable so the original bytes may linger on the heap until garbage collection, but this drops our last live reference. AWS-side revocation is not possible via the SDK; rely on the short TTL (typically 1 h).
Parameters
str
required
str
required
str
required
datetime
required
str
required
is_expired()
Parameters
int
default:"60"
wipe()
access_key_id / secret_access_key /
session_token with empty strings and forces expiration
into the past so any post-wipe reuse is detected by
is_expired. Idempotent; safe to call multiple times.
UtilizationStats
series is the raw time-series of (timestamp, value) points
as returned by the server, normalized to floats. latest /
max / avg are derived from that series for convenience.
All fields are None / empty when the metric was not present in
the response.
Parameters
float | None
default:"None"
float | None
default:"None"
float | None
default:"None"
list[tuple[float, float]]
default:"list()"
from_metric()
Parameters
dict[str, Any]
required
RunMetricsResponse.instant_metrics.dict[str, Any]
required
RunMetricsResponse.series_metrics.tuple[str, ...]
required
Candidate metric names to look up, in priority order.
The first key found in series (or instant as a
fallback) is used. Multiple candidates are supported
because metric names are server-defined and untyped.
Returns
UtilizationStats
A populated
UtilizationStats, or an empty instance if
none of the candidate keys are present.Tie-break is “first key with ≥1 parseable point wins” — once
we begin parsing a given key we do not fall through to
subsequent candidates, even if some points within that key
are malformed. In practice the primary (UPPERCASE) production
key matches and the lowercase aliases only get tried when the
primary key is entirely absent from the response.

