Skip to content

Datasets_MoveDataset

POST
/v1/accounts/{account}/datasets/{dataset}:move
curl --request POST \
--url https://dev-api.qualiastudios.dev/v1/accounts/example/datasets/example:move \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "name": "example", "targetWorkspace": "example", "requestId": "example" }'

Moves a dataset to another workspace of the same organization. It keeps its name, history and links. Needs Admin or Owner on the source workspace and Contributor or higher on the target (PERMISSION_DENIED with take_out_workspace or target_add in details). A move to another organization or into the workspace it is in is FAILED_PRECONDITION: copy it instead. FAILED_PRECONDITION too, naming them, while a mixture in the source workspace reads it or a mixture’s sources would stay behind; ALREADY_EXISTS when its name is taken in the target. (— api-linter: core::0136::response-message-name=disabled aip.dev/not-precedent: copy and move answer with one transfer report. —)

account
required
string

The account id.

dataset
required
string

The dataset id.

Media type application/json

Request for Datasets.MoveDataset.

object
name
required

Accounts/{account}/datasets/{dataset}: the dataset to move, found in the request’s workspace.

string
targetWorkspace
required

Accounts/{account}/workspaces/{workspace}: another workspace of the same organization.

string
requestId

Idempotency key (AIP-155): a retry with the same id returns the first call’s result instead of moving again.

string
Example generated
{
"name": "example",
"targetWorkspace": "example",
"requestId": "example"
}

OK

Media type application/json

Response for Datasets.CopyDataset and Datasets.MoveDataset: the dataset and what the transfer cost.

object
dataset

The copy, or the moved dataset.

object
name

Accounts/{account}/datasets/{dataset}

string
displayName
required

Human name shown in the dashboard.

string
description

Free text about the dataset.

string
kind
required

Upload, mixture or merged. Only MIXTURE can be created through CreateDataset; uploads arrive through the upload path and MERGED is made by MergeDatasets.

string format: enum
Allowed values: KIND_UNSPECIFIED UPLOAD MIXTURE MERGED
state

Where the dataset stands (the UI calls it status).

string format: enum
Allowed values: STATE_UNSPECIFIED UPLOADING UPLOADED UPDATED REVIEWING READY
stateProgress

How far along the current status is, 0 to 1 (share of the upload landed while UPLOADING, share of episodes no longer waiting while REVIEWING).

number format: double
labels

Session labels. Editable on an upload and on a merged dataset, derived (the commonest value over what it reads, a merged dataset’s own for the uploads it holds) on a mixture. A merged dataset’s are its own: chosen when the merge makes it (an answer, else its uploads’ commonest), its collection tags seeded from its initial uploads and preserved on append. Every collection edit, including a compatibility method/axis edit, stays on the owner. Recording annotations on the uploads’ takes stay separate.

object
task

Task label, e.g. “restock shelf”. Empty means unlabeled.

string
robot

The robot label as recorded (a robot type key such as “openarm”), or “umi-handheld” for handheld capture. Not the fleet robot; see source_robot.

string
operator

Operator label (a name or a hashed id).

string
method

Legacy single-method value: teleop, vr, handheld, egocentric, policy_rollout, umi, policy-rollout, sim, or empty. An upload’s starts as its episodes’ commonest.

string
scene

Scene label, e.g. “shelf”.

string
methods

Compatibility projection of Dataset.tags containing only the original six collection-method names, including saved axis aliases. Legacy method edits declare their human methods and positive axis aliases; existing saved independent axes and free names remain authoritative. Use typed axis paths or human_methods_only for independent edits.

Array<string>
environment

Saved environment authority for derived real-world/sim tags. An axis edit changes only its pair; missing evidence does not prove real-world.

string format: enum
Allowed values: ENVIRONMENT_UNSPECIFIED ENVIRONMENT_UNKNOWN REAL_WORLD SIMULATION
origin

Saved origin authority for derived human/policy-rollout tags. Missing policy metadata never proves human-collected origin.

string format: enum
Allowed values: ORIGIN_UNSPECIFIED ORIGIN_UNKNOWN HUMAN_COLLECTED POLICY_ROLLOUT
teleopInput

Saved controller authority for derived vr/gello tags. A controller does not establish teleoperation, and absence establishes no controller.

string format: enum
Allowed values: TELEOP_INPUT_UNSPECIFIED TELEOP_INPUT_UNKNOWN VR GELLO
sourceRobot

Accounts/{account}/robots/{robot}: the fleet robot the episodes were recorded on. Empty for handheld data or when unmapped. A robot, not a gripper design (a Robot of kind GRIPPER); it is not looked up when set. A merged dataset’s uploads share one, chosen at the merge; changing it changes it on every upload it holds.

string
targetRobot

Accounts/{account}/robots/{robot}: the robot the episodes are played on (QUA-2340). Set by default only on handheld uploads (method “handheld”), to the account’s oldest robot (never a gripper design); empty otherwise until set. Changing it asks for no reach check; it closes the dataset’s open out_of_reach issues, which were about the previous robot. Name a robot, not a gripper design (a Robot of kind GRIPPER): it is not looked up when set. Changing a merged dataset’s changes it on every upload it holds; an upload merged away cannot be changed on its own.

string
counts

Episode, time and standing counts.

object
episodes

Episodes in the dataset (for a mixture: in its resolved head).

string
frames

Frames across every episode.

string
durationSeconds

Recorded time across every episode, in seconds.

number format: double
kept

Episodes standing KEPT here.

string
unreviewed

Episodes standing UNREVIEWED here.

string
rejected

Episodes standing REJECTED here (validation rejects included).

string
rejectedValidation

Of those, rejected by ingest validation.

string
openIssues

Open blocking issues in this dataset’s scope, on the dataset itself or on episodes not rejected here.

string
sizeBytes

Upload only, and set by GetDataset alone (it sums every file): the bytes of every file in its repository as published.

string
fileCount

Upload only, and set by GetDataset alone: how many files those are.

string
ruled

Episodes a person ruled on here (QUA-4024): those a person’s keep or reject in this dataset’s scope (a merged dataset’s: its uploads’ too) stands on, a split take’s on each of its pieces without a ruling of their own. An episode kept because nothing blocks it, and a validation reject, are not counted. At most kept + rejected.

string
channels

What stable and head resolve to.

object
stable

The newest tag; unset when there is none yet.

object
version

The version tag it stands at, e.g. “1.0”; empty for head.

string
digest

Content digest of the episode set, “b3:”.

string
episodeCount

Episodes in that set.

string
head

What the dataset yields now; always set.

object
version

The version tag it stands at, e.g. “1.0”; empty for head.

string
digest

Content digest of the episode set, “b3:”.

string
episodeCount

Episodes in that set.

string
drift

Head against the newest tag.

object
version

The tag measured from; empty when the dataset has no tag yet.

string
added

Episodes head yields that the tag does not.

string
removed

Episodes the tag pins that head no longer yields.

string
changed

Episodes in both whose pinned revision differs from head’s (an edit: trim, subtasks, tags). Training reads exact revisions, so these count.

string
robotInterface

Robot interface and cameras.

object
interfaceHash

Canonical robot-interface hash b3:<hex> (ADR 0008); empty until derived.

string
stateChannels

Canonical state channel keys, e.g. “left.joint.1”, “right.ee.x”.

Array<string>
actionChannels

Canonical action channel keys.

Array<string>
cameras

Camera keys, e.g. “context”, “wrist_left”.

Array<string>
fps

Frames per second of the data rows.

number format: double
mixed

Mixture only: the episodes it reads come from more than one interface.

boolean
nativeStateChannels

Each state channel in vector order. A converted handheld upload’s are the pair-frame channels its takes are sampled in. A merged dataset’s are its uploads’ (one entry per native channel, with sides where they resolve it differently), on GetDataset only. Empty on a mixture, whose uploads each place their channels their own way.

Array<object>

One state or action channel of an upload: where it sits in the recording and the canonical key it resolves to.

object
nativeIndex

Its position in the state or action vector: the n of the “state[n]” and “action[n]” keys Episodes.SampleEpisodeSeries returns.

integer format: int32
nativeName

The name the recording gives it, e.g. “left_joint_1.pos”. (— api-linter: core::0122::name-suffix=disabled aip.dev/not-precedent: a recorded channel label, not a resource name; the catalog and the mapping lens both call it this. —)

string
canonicalKey

The canonical key it resolves to, e.g. “left.joint_1.pos”; “unmapped:” when the name could not be read.

string
unit

“rad”, “m” or “norm”; empty when not known.

string
mapped

True when a person’s channel mapping resolved it, not the name.

boolean
sides

Merged only: each key the uploads it holds resolve this channel to, with the uploads that give it, when they do not agree (a merged dataset made before its merge asked, or while a remap settles). Empty when every upload gives canonical_key.

Array<object>

One canonical key some of a merged dataset’s uploads give a channel.

object
canonicalKey

The canonical key, e.g. “gripper.pos”.

string
datasets

Accounts/{account}/datasets/{dataset}: the uploads that give it.

Array<string>
nativeActionChannels

Each action channel in vector order, as native_state_channels.

Array<object>

One state or action channel of an upload: where it sits in the recording and the canonical key it resolves to.

object
nativeIndex

Its position in the state or action vector: the n of the “state[n]” and “action[n]” keys Episodes.SampleEpisodeSeries returns.

integer format: int32
nativeName

The name the recording gives it, e.g. “left_joint_1.pos”. (— api-linter: core::0122::name-suffix=disabled aip.dev/not-precedent: a recorded channel label, not a resource name; the catalog and the mapping lens both call it this. —)

string
canonicalKey

The canonical key it resolves to, e.g. “left.joint_1.pos”; “unmapped:” when the name could not be read.

string
unit

“rad”, “m” or “norm”; empty when not known.

string
mapped

True when a person’s channel mapping resolved it, not the name.

boolean
sides

Merged only: each key the uploads it holds resolve this channel to, with the uploads that give it, when they do not agree (a merged dataset made before its merge asked, or while a remap settles). Empty when every upload gives canonical_key.

Array<object>

One canonical key some of a merged dataset’s uploads give a channel.

object
canonicalKey

The canonical key, e.g. “gripper.pos”.

string
datasets

Accounts/{account}/datasets/{dataset}: the uploads that give it.

Array<string>
sourceDatasets

Lineage (QUA-1796). Mixture: the uploads it reads at head, once each, an upload a merge took named by its merged dataset (once for all it holds, QUA-3511). Merged: the uploads it holds, in the order they were merged. Upload: empty.

Array<string>
readers

The mixtures that read this dataset directly: by name, or (for an upload or a merged dataset) through a label source it matches.

Array<string>
posterUri

A signed midpoint poster from the first episode with one, in source and member order, searching the first 128 members per visible source. Empty when no poster can be delivered within that search.

string
repository

Upload only: the repository it was published into (the git-native view).

string
sourceFormat

Upload only: persisted ingest format.

string format: enum
Allowed values: SOURCE_FORMAT_UNSPECIFIED LEROBOT_V2_1 LEROBOT_V3 MCAP_ROS2
verdict

Upload only: how the ingest ended.

string format: enum
Allowed values: VERDICT_UNSPECIFIED PUBLISHED DEGRADED UNDERIVABLE
verdictReason

Upload only: ”: ” when the verdict is not PUBLISHED.

string
creator

Who created it (the uploader, or the person who made the mixture).

object
kind

What kind of actor it is.

string format: enum
Allowed values: KIND_UNSPECIFIED PERSON VALIDATION RULE MODEL OPERATOR SYSTEM
user

The person’s user id when kind is PERSON; empty otherwise.

string
displayName

The person’s display name at the time, for rendering without a lookup.

string
agent

The rule code, or the model id (e.g. “gemini-robotics-er”), when not a person.

string
run

The run a model or rule finding came from, when it has one.

string
apiKey

The API key’s id when a person acted through one; empty for a session. Never the key itself.

string
attribution

Signed identity evidence recorded with the change, kept apart from the principal above. Unset on older records and wherever none was signed.

object
authentication

How the principal authenticated.

string format: enum
Allowed values: AUTHENTICATION_UNSPECIFIED SESSION API_KEY SERVICE
initiator

The user id of a person verified as starting the work: the person of a session, or the person a trusted service’s signed job record names. Empty when nobody was verified.

string
initiatorDisplayName

The initiator’s display name at the time, never their email.

string
credentialCreator

The user id of the key’s creator at the time. Not who used the key.

string
credentialOwner

Who owned the key at the time.

string format: enum
Allowed values: CREDENTIAL_OWNER_UNSPECIFIED PERSON SPACE
credentialOwnerSpace

The owning space’s id (a workspace or the organization) when credential_owner is SPACE.

string
createTime

When the dataset was first published or created.

string format: date-time
updateTime

When anything about it last changed (a ruling, an issue, a source, a tag).

string format: date-time
etag

Sent back on UpdateDataset and DeleteDataset to guard against lost updates; a stale etag fails with ABORTED.

string
slug

The name a training run cites (Version.reference = ”:”), fixed when the dataset is created and never changed by a rename (a rename changes display_name only). Made from display_name: lowercased, runs of anything but [a-z0-9] turned into ”-”, leading and trailing ”-” trimmed, the first 8 characters of the dataset id when nothing is left. Unique per account: a collision at creation takes the next free “-2”, “-3” suffix.

string
posesAt

Upload only, and only a handheld (UMI) upload whose state ingest placed in the pair frame: where its poses are. ROOT or TCP; unspecified for any other dataset. Read from the published repository (meta/ingest.toml and calibration.json), so it is filled by GetDataset alone: unset on ListDatasets, CreateDataset and UpdateDataset. (— api-linter: core::0140::prepositions=disabled aip.dev/not-precedent: “Poses at” is the product’s own name for where a handheld upload’s poses are. —)

string format: enum
Allowed values: POSES_AT_UNSPECIFIED ROOT TCP
posesCalibration

Upload only: the calibration the TCP poses were resolved with, as it was when they were. Set when poses_at is TCP, and then only by GetDataset. Compare it with a rig’s calibration to tell whether that rig’s calibration has been replaced since.

object
filename
required

The uploaded file’s name, e.g. “tcp_calibration.json”.

string
deriveDate

When the calibration was made, “YYYY-MM-DD”: the leading date of the file’s calibrated or else its derived text. Empty when the file gives none.

string
hands
required

Both hands, left then right.

Array<object>

One hand’s transform.

object
side
required

Which hand.

string format: enum
Allowed values: SIDE_UNSPECIFIED SIDE_LEFT SIDE_RIGHT
trackerToTcp
required

The TCP’s pose in the tracker’s frame: xyz in metres and rpy in radians (URDF convention, extrinsic XYZ), the file’s rotation matrix converted. A rotation whose pitch is within a hair of +-90 degrees has no unique roll and yaw; it is stored with roll 0. (— api-linter: core::0140::prepositions=disabled aip.dev/not-precedent: a transform is named by its direction, as the calibration file’s own controller_to_tcp is. —)

object
xyz

X, y, z in metres.

Array<number>
rpy

Roll, pitch, yaw in radians.

Array<number>
eeToTcp

The same TCP in the frame of the gripper design’s ee_link for this hand, in the form of tracker_to_tcp (so the same pitch limit). Display only. Set with ee_link or not at all, and only when it composes with the file’s controller_to_ee to the file’s controller_to_tcp, which is what makes the TCP drawn the TCP used. (— api-linter: core::0140::prepositions=disabled aip.dev/not-precedent: a transform is named by its direction, as the calibration file’s own ee_to_tcp is. —)

object
xyz

X, y, z in metres.

Array<number>
rpy

Roll, pitch, yaw in radians.

Array<number>
eeLink

The link of the rig’s gripper design that Hand.ee_to_tcp is a pose in, with {side} for “left” or “right” (the gripper joint’s convention in RobotModel.Gripper), e.g. “openarm_{side}_ee_base_link”. Read from the file’s own description of its end-effector frame. Empty when the file names none, lacks the end-effector poses, or they disagree with its controller_to_tcp (then no ee_to_tcp is set either). Display only.

ee_to_tcp is drawn in this link’s own frame, which must be the plain end-effector frame the file means. An export whose link sits elsewhere draws the TCP off by the difference: an OpenArm exported with the xacro default collapse_internal_empty_links puts openarm__ee_base_link at link7, 20.5 mm behind the frame the calibration is in.

string
posesRig

Upload only, with poses_at: the key of the rig ingest recognised the upload as recorded on (“umi-handheld”), which is the rig whose calibration a ResolvePoses takes. Ingest decides it from the recorder’s robot_type, from the upload’s meta/ingest.toml [rig], or from the state channel names, so it can name a rig when Episode.rig (for a LeRobot upload only meta/info.json’s robot_type) is empty or something else. Filled by GetDataset alone, like poses_at.

string
posesUnavailable

Upload only: true when GetDataset could not read the upload’s repository for poses_at, poses_calibration and poses_rig, so they are unknown here and unspecified does not mean there are none. The rest of the dataset is answered as usual; read it again for the poses.

boolean
mergedDataset

Upload only: the merged dataset that holds it, once it was merged into one (MergeDatasets). Empty otherwise, including after member removal. While held, it leaves the unfiltered ListDatasets; its reads keep answering, by name and by slug (its versions, which keep resolving as <slug>:<tag>, its takes, issues, ingest report and re-ingests), and every write that names it, or an episode, issue or version under it, is FAILED_PRECONDITION naming the merged dataset, through which it is written.

string
curatedFrom

Mixture only: the upload version it curates from (QUA-3539), as accounts/{account}/datasets/{dataset}/versions/{tag}; set on create (CreateDataset) and never changed. Such a branch reads that upload as the version froze it, through one source pinned there: the upload’s rulings and blocking issues since reach neither it nor what reads it, its episodes read at the revisions the version pinned, its own keeps and rejects curate it, and edits are made in the upload. Empty for any other dataset. (— api-linter: core::0140::prepositions=disabled aip.dev/not-precedent: “curated from” is the product’s name for the version a branch reads. —)

string
reachSettings

How the dataset’s reach check is walked, as the dataset stores it: what is unset follows the target robot’s model (see Checks.GetReachStatus for what a RunCheck would use now). Saving it starts nothing.

object
solver

The IK solver a dataset asks for, PYROKI or DLS. Unset (SOLVER_UNSPECIFIED) follows the target robot’s model, which may be MINK (a run’s resolved settings then say MINK; a request naming it is refused).

string format: enum
Allowed values: SOLVER_UNSPECIFIED PYROKI DLS MINK
baseM

Where the takes’ start sits from the relaxed grippers’ midpoint, metres in the robot’s base frame (x forward, y left, z up): empty or exactly three numbers, each finite and within 5 m either way. Empty follows the target robot model’s reach_base, else 0, 0, 0. Stored to 0.1 mm and applied to both hand paths as one rigid translation from the robot’s home hand midpoint.

Array<number>
homeHeadingRad

Rotate both paired paths around world up before placing their first-row midpoint at the shared home reference. Radians; finite and within +/- pi. The robot base remains at world (0, 0, 0).

number format: double
poseSource

Where the source episode’s hand poses were recorded. Set by qds-api on reads; clients do not set it. TCP runs consume already-resolved TCP channels and never apply calibration again.

string format: enum
Allowed values: POSES_AT_UNSPECIFIED ROOT TCP
calibrationDigest

Digest of the TCP calibration already applied to the published upload, empty for root poses. Set by qds-api on reads.

string
linkedTask

Accounts/{account}/tasks/{task}: the Task an upload is recorded against (QUA-3116), or empty when unlinked. A link, not a label: labels.task stays the text. Set on an upload (a task of its account, NOT_FOUND otherwise), or on a merged dataset, whose own it is (chosen when the merge makes it: an answer, else its uploads’ commonest; its uploads keep theirs); a mixture shows the commonest link of the uploads it reads (a merged dataset’s own for the uploads it holds). Linking by label (LinkTaskLabels, and publishing a task) links an upload or a merged dataset by its own labels.task, never an upload a merge took. Deleting the task unlinks it. A mixture source can follow every upload and merged dataset linked to one task (Source.linked_task). Every take of an upload or a merged dataset with no link of its own reads the dataset’s (QUA-3413, Episode.linked_task_inherited): a merged dataset’s takes read its own, not their uploads’ (QUA-3511), so setting it links them all at once; UpdateDatasetRequest.relink_episodes moves the takes linked to the old one as well.

string
interfaceSettlement

Merged dataset only: member interfaces ready to freeze as one, and the uploads still awaiting or differing from the first member’s interface.

object
settledMembers

Number of merged members whose derived interfaces are settled.

integer format: int32
totalMembers

Total number of uploads in the merged dataset.

integer format: int32
outstandingUploads

Upload resource names whose interfaces are not settled yet.

Array<string>
workspaceId

The project that owns the dataset, empty when it is in the account’s default workspace. Gateway clients select it with X-Qualia-Workspace.

string
mergedSettingsContext

No longer set (QUA-3511): a merge is final and a merged dataset is not corrected through its uploads. It was GetDataset’s merged membership for a member settings operation.

object
mergedDataset
required

The merged dataset whose membership was confirmed.

string
members
required

Every upload it held, in merge order, including the selected upload.

Array<string>
membershipRevision
required

Opaque merge/undo epoch from GetDataset; never recapture it on retry.

string
etag
required

The dataset’s editable etag; a member edit sends the selected upload’s.

string
sourceCommit

The selected upload’s exact paired head. Empty on the merged dataset’s context, which is used only to fence global label edits.

string
posesEligible

No longer set (QUA-3511): a merged dataset’s poses are not resolved through its uploads.

boolean
settingsSettlement

No longer set (QUA-3511): a merged dataset’s uploads were settled at the merge (one contract, one pose frame); interface_settlement is its view of an interface still re-deriving.

object
settledMembers

Number of merged members whose derived interfaces are settled.

integer format: int32
totalMembers

Total number of uploads in the merged dataset.

integer format: int32
outstandingUploads

Upload resource names whose interfaces are not settled yet.

Array<string>
settingsUnavailableReason

No longer set (QUA-3511), with settings_settlement.

string
taskReferences

GetDataset only: one per Task, by display name.

Array<object>

The Tasks this dataset’s episodes are references of (QUA-3412): a reference names its episode where it was recorded, or the merged dataset that upload went into (QUA-3511), so a mixture has none. Deleting the dataset removes those references (the Tasks stay), so DeleteDataset refuses until it is sent with force.

object
task

Accounts/{account}/tasks/{task}

string
displayName

The Task’s display name.

string
episodeCount

How many of the dataset’s episodes it references.

integer format: int32
taskReferencedEpisodeCount

GetDataset only: how many distinct episodes those Tasks reference (an episode two Tasks reference counts once).

integer format: int32
tags

This dataset’s tags: up to 64 nonblank strings of at most 256 bytes. Recognized collection names are teleop, vr, umi, egocentric, policy-rollout, sim, real-world, human and gello; they are ordered first in that order, followed by free tags in lexical order. Environment, origin, method and controller derive from saved metadata. The tags mask may echo unchanged classifications and edit custom strings only; use typed metadata masks for classification changes or Unknown. A merged dataset owns its metadata, which is never written to its uploads or replaced when uploads are appended. A mixture reads the tags of its sources. Distinct from episode curation and version tags.

Array<string>
posePreparation

GetDataset only, merged datasets: each upload’s progress toward its own recognized rig’s CURRENT capture calibration. Independent of playback robot selection. A failed read is unknown, never a completed preparation.

object
membershipRevision

Opaque ordered-membership epoch. Send it back on an explicit move or removal; a changed membership is ABORTED and must be confirmed again.

string
currentMembers

Number already at their current capture calibration.

integer format: int32
totalMembers

Number of uploads in the current membership.

integer format: int32
members

Preparation state for each upload, in membership order.

Array<object>

One upload’s current state. Names and reasons are suitable for the merged dataset’s pre-check; no source data or historical rulings are removed.

object
upload

The source upload resource.

string
displayName

The source upload’s display name.

string
state

The upload’s current preparation state.

string format: enum
Allowed values: STATE_UNSPECIFIED CURRENT READY RUNNING BLOCKED FAILED
reason

Human-readable explanation when applicable.

string
operationId

UUID polled at this upload’s reingests/{operation_id} resource.

string
rigKey

Recording rig, never an editable collection tag or playback robot.

string
calibrationGripper

The capture gripper supplying the calibration.

string
calibrationEtag

The capture calibration’s version.

string
publishing

Preparation is complete and its publication is pending; it cannot be cancelled.

boolean
applicable

False when none of these recordings has handheld poses to prepare.

boolean
episodeCount

Episodes copied or moved.

string
bytesShared

Bytes of content the copy references: what a byte copy would write.

string
bytesWritten

Bytes written to blob storage by this copy: its own metadata, across organizations the blobs repacked, and every file it rewrote. A video it rewrote counts twice, because a browser reads a separate object. A copy of a whole version writes no media inside one organization.

string
blobsGranted

Across organizations: blobs the target organization was granted.

string
elapsed

Server wall time of the whole call, from when it came in to its last write; of a copy that ran as a job, from its first call. A retry of a finished call answers the first call’s.

string
/^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$/
sourceWorkspace

Accounts/{account}/workspaces/{workspace}: where the dataset was.

string
targetWorkspace

Accounts/{account}/workspaces/{workspace}: where it is now.

string
blobsRepacked

Across organizations: blobs rewritten so the target reads only what it copied.

string
referenceRanges

A move: the reference ranges its range checks read change with the workspace. Unset for a copy.

object
sourceRanges

Ranges in the source workspace, which no longer apply.

string
targetRanges

Ranges in the target workspace, which apply from now on.

string
bytesRewritten

A copy that left episodes out: bytes of the files it rewrote. Unset for a whole version and for a move.

string
episodesLeftOut

A copy that left episodes out: how many of its upload’s episodes stayed behind. Unset for a whole version and for a move.

integer format: int32
job

A copy still running; dataset is then empty. Call CopyDataset again with this request_id and resume_only to read how far it got.

object
state

Where the copy is.

string format: enum
Allowed values: STATE_UNSPECIFIED QUEUED RUNNING FINISHING FAILED
filesDone

Files written so far.

integer format: int32
filesTotal

Files the copy writes.

integer format: int32
bytesWritten

Bytes written so far.

string
bytesTotal

Bytes the copy writes.

string
error

Why it stopped, when state is FAILED.

string
requestId

The id to call again with while job is set.

string
pixelsChanged

A camera could not be cut where the copy needed, so it was re-encoded to AV1 4:2:0: its frames are the same takes, not the same pixels.

boolean
robotsCleared

Robot references cleared by the transfer.

Array<object>

A robot named by a transfer, including its name before a later deletion. (— api-linter: core::0123::resource-annotation=disabled aip.dev/not-precedent: a pointer at a robot, not a resource itself. —)

object
name

Accounts/{account}/robots/{robot}.

string
displayName

The robot’s display name at transfer time.

string
robotsRestored

A move back restored these previously cleared robots.

Array<object>

A robot named by a transfer, including its name before a later deletion. (— api-linter: core::0123::resource-annotation=disabled aip.dev/not-precedent: a pointer at a robot, not a resource itself. —)

object
name

Accounts/{account}/robots/{robot}.

string
displayName

The robot’s display name at transfer time.

string
robotsNotRestored

Previous robot references that stayed cleared after this move.

Array<object>

A robot named by a transfer, including its name before a later deletion. (— api-linter: core::0123::resource-annotation=disabled aip.dev/not-precedent: a pointer at a robot, not a resource itself. —)

object
name

Accounts/{account}/robots/{robot}.

string
displayName

The robot’s display name at transfer time.

string
targetWorkspaceDisplayName

The target workspace’s display name when the transfer finished.

string
Example
{
"dataset": {
"kind": "KIND_UNSPECIFIED",
"state": "STATE_UNSPECIFIED",
"labels": {
"environment": "ENVIRONMENT_UNSPECIFIED",
"origin": "ORIGIN_UNSPECIFIED",
"teleopInput": "TELEOP_INPUT_UNSPECIFIED"
},
"sourceFormat": "SOURCE_FORMAT_UNSPECIFIED",
"verdict": "VERDICT_UNSPECIFIED",
"creator": {
"kind": "KIND_UNSPECIFIED",
"attribution": {
"authentication": "AUTHENTICATION_UNSPECIFIED",
"credentialOwner": "CREDENTIAL_OWNER_UNSPECIFIED"
}
},
"posesAt": "POSES_AT_UNSPECIFIED",
"posesCalibration": {
"hands": [
{
"side": "SIDE_UNSPECIFIED"
}
]
},
"reachSettings": {
"solver": "SOLVER_UNSPECIFIED",
"poseSource": "POSES_AT_UNSPECIFIED"
},
"posePreparation": {
"members": [
{
"state": "STATE_UNSPECIFIED"
}
]
}
},
"job": {
"state": "STATE_UNSPECIFIED"
}
}

Default error response

Media type application/json

The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC. Each Status message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide.

object
code

The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].

integer format: int32
message

A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.

string
details

A list of messages that carry the error details. There is a common set of message types for APIs to use.

Array<object>

Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.

object
@type

The type of the serialized message.

string
key
additional properties
any
Example generated
{
"code": 1,
"message": "example",
"details": [
{
"@type": "example"
}
]
}