# Qualia API qualia.v1

The Qualia API, defined in protobuf as `qualia.v1`. Every resource lives under `/v1/accounts/{account}`, where `{account}` is your account id, a lowercase UUID.

**Base URL:** `https://junction-api.qualiastudios.dev`

Authenticate with an API key in the `X-API-Key` header. Create one in **Settings** in the [Qualia dashboard](https://junction.qualiastudios.dev). `GET` calls need the key's `data:read` scope; every other call needs `data:write`.

Every call is also served over Connect at `POST /qualia.v1.<Service>/<Method>`.

A call the API refuses returns the gRPC code name in upper case, for example `{"code": "NOT_FOUND", "message": "…", "retryable": false, "details": []}`. Another account's resources answer `NOT_FOUND`. `retryable` is true for `ABORTED`, `UNAVAILABLE`, `RESOURCE_EXHAUSTED`, `DEADLINE_EXCEEDED` and `CANCELED`.

A request the gateway stops before it reaches the API has a different body: `{"detail": "…"}`. For example: a missing or invalid API key (`401`), a key without the scope or the resources the call needs (`403` or `404`), an environment closed to you (`403`), or a body over the size limit (`413`). Read `code` if the body has one, otherwise `detail`.

**OpenAPI document:** [https://junction-docs.qualiastudios.dev/api/qualia-v1/openapi.json](https://junction-docs.qualiastudios.dev/api/qualia-v1/openapi.json)

## Operations

### Checks

The checks, what they computed, and running them again.

- [`GET /v1/accounts/{account}/checkPolicies/{checkPolicy}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_getautomaticcheckpolicy_account.md): Reads the effective policy and its source for each scheduler half.
- [`PATCH /v1/accounts/{account}/checkPolicies/{checkPolicy}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_updateautomaticcheckpolicy_account.md): Updates only the selected halves; an inherit value removes that override.
- [`GET /v1/accounts/{account}/checks`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_listchecks.md): Lists the checks.
- [`GET /v1/accounts/{account}/checks/{check}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_getcheck.md): Gets one check.
- [`GET /v1/accounts/{account}/checks/{check}/referenceRanges`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_listreferenceranges.md): Lists a check's reference ranges.
- [`GET /v1/accounts/{account}/checks/{check}/referenceRanges/{referenceRange}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_getreferencerange.md): Gets one reference range.
- [`POST /v1/accounts/{account}/checks/{check}/referenceRanges/{referenceRange}:confirm`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_confirmreferencerange.md): Replaces a reference range's confirmed bounds, or clears the confirmation.
- [`GET /v1/accounts/{account}/checks/{check}/results`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_listcheckresults.md): Lists a check's results.
- [`GET /v1/accounts/{account}/checks/{check}/results/{result}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_getcheckresult.md): Gets one result: the newest stored for the pair at the robot's current model config (a dataset's own key is ListCheckResults'), NOT_RUN when there is none; reading queues nothing.
- [`GET /v1/accounts/{account}/checks/{check}/results/{result}:readReachTrace`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_readreachtrace.md): Read one result's bounded sampled solver joint trace.
- [`GET /v1/accounts/{account}/checks/{check}/runs`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_listcheckruns.md): Lists a check's runs, newest first, in the caller's workspace.
- [`GET /v1/accounts/{account}/checks/{check}/runs/{run}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_getcheckrun.md): Gets one run.
- [`POST /v1/accounts/{account}/checks/{check}/runs/{run}:cancel`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_cancelcheckrun.md): Cancels a running VLM or heuristic run: its pipeline run is cancelled, which releases the credits it reserved, and the run ends FAILED with "cancelled by" who asked.
- [`POST /v1/accounts/{account}/checks/{check}:run`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_runcheck.md): Runs a check over a dataset again; `checks/-` runs the dataset's default set (an upload runs episode-rules, a mixture runs mixture; reach is never in it, name `checks/reach`).
- [`GET /v1/accounts/{account}/datasets/{dataset}/checkPolicies/{checkPolicy}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_getautomaticcheckpolicy_dataset.md): Reads the effective policy and its source for each scheduler half.
- [`PATCH /v1/accounts/{account}/datasets/{dataset}/checkPolicies/{checkPolicy}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_updateautomaticcheckpolicy_dataset.md): Updates only the selected halves; an inherit value removes that override.
- [`GET /v1/accounts/{account}/datasets/{dataset}/checks`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_listdatasetchecks.md): Lists the catalog's checks as one dataset sees them: every active check version, grouped by category in the order returned, each with whether it can run on this dataset now and its latest completed...
- [`GET /v1/accounts/{account}/datasets/{dataset}/checks/{check}/findings`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_listcheckfindings.md): Lists the findings catalog checks wrote on a dataset, newest first: one per check, episode and finding key per run.
- [`POST /v1/accounts/{account}/datasets/{dataset}/checks:run`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_rundatasetchecks.md): Runs catalog checks over a dataset as one run: the union of `check_ids`, `categories` and `all`, deduplicated, on the episodes of `selection`, sampled to `max_episodes`.
- [`GET /v1/accounts/{account}/datasets/{dataset}/reachStatus`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_getreachstatus.md): Where a dataset's reach check stands: the settings a RunCheck would use now, the key they make, and the dataset's runs.
- [`POST /v1/accounts/{account}/datasets/{dataset}/reachStatus:cancel`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_cancelreachstatus.md): Stops the dataset's current press (REQUESTED or RUNNING), including its selected legacy group of per-upload runs, as CANCELLED.
- [`GET /v1/accounts/{account}/datasets/{dataset}:readReachTraces`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_readreachtraces.md): Reads sampled posture traces for up to 32 results in one dataset under one reach key.
- [`GET /v1/accounts/{account}/workspaces/{workspace}/checkPolicies/{checkPolicy}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_getautomaticcheckpolicy_workspace.md): Reads the effective policy and its source for each scheduler half.
- [`PATCH /v1/accounts/{account}/workspaces/{workspace}/checkPolicies/{checkPolicy}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/checks_updateautomaticcheckpolicy_workspace.md): Updates only the selected halves; an inherit value removes that override.

### Datasets

Browse, create and edit datasets.

- [`GET /v1/accounts/{account}/datasets`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_listdatasets.md): Lists the datasets of one account (uploads, mixtures and merged datasets).
- [`POST /v1/accounts/{account}/datasets`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_createdataset.md): Creates a mixture.
- [`GET /v1/accounts/{account}/datasets/{dataset}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_getdataset.md): Gets one dataset.
- [`DELETE /v1/accounts/{account}/datasets/{dataset}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_deletedataset.md): Deletes a mixture, or retires an upload or a merged dataset: it leaves every list and its episodes leave every mixture, but nothing is erased, and versions that pin its episodes keep resolving.
- [`PATCH /v1/accounts/{account}/datasets/{dataset}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_updatedataset.md): Edits display_name, description, labels, source_robot, target_robot or reach_settings.
- [`GET /v1/accounts/{account}/datasets/{dataset}/cameraLags`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_getcameralags.md): Reads per-camera lag estimates and current stamp offsets for an upload, or every upload held by a merged dataset.
- [`GET /v1/accounts/{account}/datasets/{dataset}/ingestReport`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_getingestreport.md): The structured report an upload's ingest wrote (meta/ingest_report.json at the latest publication).
- [`GET /v1/accounts/{account}/datasets/{dataset}/preparation`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_getpreparation.md): What the newest prepare run did to an upload (every upload is prepared after it lands): the Task it matched and applied, or the Task it drafted; the takes it split; the dataset's own task names and...
- [`POST /v1/accounts/{account}/datasets/{dataset}/preparation:confirmTaskStrings`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_confirmtaskstrings.md): Stores a person's decisions on the dataset's own task names: the full set, so a key not listed is cleared.
- [`GET /v1/accounts/{account}/datasets/{dataset}/reingests/{reingest}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_getreingest.md): Where a re-ingest has got to, from durable state.
- [`GET /v1/accounts/{account}/datasets/{dataset}/reingests/{reingest}/notCarried`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_listreingestnotcarried.md): Exact durable losses of a successfully published re-cut, in old take number order.
- [`POST /v1/accounts/{account}/datasets/{dataset}/reingests/{reingest}:cancelPoseMove`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_cancelposemove.md): Stops one still-preparing pose move, fenced to the observed attempt.
- [`POST /v1/accounts/{account}/datasets/{dataset}:copy`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_copydataset.md): Copies a dataset (its current version, or one tagged version) into a workspace.
- [`POST /v1/accounts/{account}/datasets/{dataset}:correctCameraLags`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_correctcameralags.md): Corrects camera stamp offsets through a recorded corrective re-ingest.
- [`POST /v1/accounts/{account}/datasets/{dataset}:move`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_movedataset.md): Moves a dataset to another workspace of the same organization.
- [`POST /v1/accounts/{account}/datasets/{dataset}:reingest`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_reingestdataset.md): Upload only (MCAP): commits a new meta/ingest.toml and ingests the unchanged recordings again under it, publishing the upload's next generation.
- [`POST /v1/accounts/{account}/datasets/{dataset}:relinkTask`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_relinktask.md): Moves an upload's or a merged dataset's Task link to the Task's newest published revision, and the links of its takes that name the same Task, then starts the checks a finished preparation starts: ...
- [`POST /v1/accounts/{account}/datasets/{dataset}:remapChannels`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_remapdatasetchannels.md): Maps native channel names onto canonical keys where the automatic grammar got them wrong or found none (a mapping lens), then derives the robot interface again.
- [`POST /v1/accounts/{account}/datasets/{dataset}:removeMergedMember`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_removemergeddatasetmember.md): Removes one upload from the CURRENT membership of a merged dataset.
- [`POST /v1/accounts/{account}/datasets/{dataset}:resolvePoses`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_resolveposes.md): Resolves a handheld upload's poses at each hand's TCP (poses_at TCP), or undoes that (ROOT), by re-deriving the upload with the calibration.
- [`POST /v1/accounts/{account}/datasets/{dataset}:revertMerge`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_revertmerge.md): Always FAILED_PRECONDITION: a whole merge cannot be reverted.
- [`POST /v1/accounts/{account}/datasets:merge`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/datasets_mergedatasets.md): Merges compatible uploads into one dataset of its own, or adds uploads to a merged dataset.

### Episodes

Read, edit and rule on the episodes of a dataset.

- [`GET /v1/accounts/{account}/datasets/{dataset}/episodes`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_listepisodes.md): Lists the episodes of a dataset in recording order (for a mixture: its pool, source by source).
- [`GET /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_getepisode.md): Gets one episode as its parent dataset sees it.
- [`PATCH /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_updateepisode.md): Deprecated: use UpdateEpisodes with one edit, which this now runs.
- [`GET /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}/draft`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_getepisodedraft.md): The take's draft, through any dataset that reads the take.
- [`DELETE /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}/draft`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_deleteepisodedraft.md): Discards the take's draft.
- [`PATCH /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}/draft`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_updateepisodedraft.md): Saves the take's draft as drawn: replaces the drawing and its base, or creates the draft (allow_missing).
- [`GET /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}/revisions`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_listepisoderevisions.md): An episode's edits, newest first, then the recording as revision 0; an episode nobody edited lists nothing.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}:acquireEpisodeLease`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_acquireepisodelease.md): Takes the take's edit lease for the caller and this tab.
- [`GET /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}:locate`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_locateepisode.md): Where one episode sits in a filtered, ordered list of its dataset: its position and neighbours, for "12 / 340" and prev / next in the studio.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}:markViewed`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_markepisodeviewed.md): Records that the caller opened an episode.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}:releaseEpisodeLease`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_releaseepisodelease.md): Takes this tab off the caller's lease, and ends the lease when it was the last tab.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}:renewEpisodeLease`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_renewepisodelease.md): Renews the caller's lease for 30 s more.
- [`GET /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}:sampleSeries`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_sampleepisodeseries.md): The episode's joint series: each state and action channel sampled evenly over the take's current content: the joints drawer's charts, and the arm's motion the camera lag drawer sets each camera's o...
- [`GET /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}:signVideos`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_signepisodevideos.md): Signs the episode's camera videos for playback: one short-lived URI per camera, of the take's current content (the member of its upload's published version), and where that content sits in the epis...
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}:takeOverEpisodeLease`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_takeoverepisodelease.md): Replaces another person's live lease with the caller's, for this tab, and records EPISODE_LEASE_TAKEN (not undoable).
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes/{episode}:unsplit`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_unsplitepisode.md): Discards the split drawn on an episode's draft, with the draft.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes:assignTask`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_assigntask.md): Sets one task label on every selected episode of an upload in a single publication: all of them or none.
- [`GET /v1/accounts/{account}/datasets/{dataset}/episodes:batchSampleSeries`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_batchsampleepisodeseries.md): Several episodes' series at once, each as SampleEpisodeSeries samples it: what a dataset's trajectories read.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes:keep`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_keepepisodes.md): Keeps episodes in the parent's scope, closing their open issues in that scope only.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes:linkTaskLabels`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_linktasklabels.md): Links the unlinked episodes, uploads and merged datasets of the caller's workspace whose free-text task label is a task's name (a merged dataset by its own labels.task, and never an upload a merge ...
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes:reject`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_rejectepisodes.md): Rejects episodes in the parent's scope.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes:reset`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_resetepisodes.md): Withdraws the standing ruling made in the parent's scope, so the episode falls back to what stood before.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes:restore`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_restoreepisodes.md): Puts back episodes ingest validation rejected, with a required reason.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes:reviewSuggestions`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_reviewsuggestions.md): Settles every PROPOSED subtask span of one origin over the episodes a filter leaves: accept or reject in one call.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes:split`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_splitepisodes.md): Splits episodes at given cuts, around kept windows or at their markers: each split is drawn on the episode's draft (EpisodeDraft), its pieces the windows kept, each tagged with the labels of the ma...
- [`GET /v1/accounts/{account}/datasets/{dataset}/episodes:summarize`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_summarizeepisodes.md): Counts, facets and metric distributions over the episodes a filter leaves: what the filter chips, the status bar and the outlier cards read.
- [`POST /v1/accounts/{account}/datasets/{dataset}/episodes:update`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/episodes_updateepisodes.md): Edits episodes of a dataset in one call: task, instruction, method, methods, scene, tags, outcome, trim, subtasks or linked_task, each edit with its own field mask and etag.

### Events

The audit trail of a workspace or an organization, newest
first, and the undo of what can be undone.

A workspace sees the events that happened in it. An organization sees every
event it holds: its workspaces' (deleted ones included, which keep their
events) and its own (`origin` ORGANIZATION), which no workspace sees.
Reading needs `spaces:read` on the workspace or the organization (every
member holds it there). An API key needs `data:read`, and `data:write` to
undo.

- [`GET /v1/accounts/{account}/events`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_listevents_account.md): Lists events, newest first, optionally grouped into sessions.
- [`GET /v1/accounts/{account}/events/{event}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_getevent_account.md): Gets one event.
- [`GET /v1/accounts/{account}/events/{event}:activityDetails`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_readactivitydetails_account.md): Reads bounded recorded targets after checking their current QDS access.
- [`POST /v1/accounts/{account}/events/{event}:undo`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_undoevent_account.md): Undoes an event.
- [`GET /v1/accounts/{account}/events:activityActors`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_readactivityactors_account.md): Reads recorded person names for a bounded page of actions.
- [`GET /v1/accounts/{account}/events:activityFacets`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_listactivityfacets_account.md): Lists the values the TEAM_ACTIVITY list holds for a filter, with counts: the suggestions a search box offers under each key.
- [`GET /v1/accounts/{account}/workspaces/{workspace}/events`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_listevents_workspace.md): Lists events, newest first, optionally grouped into sessions.
- [`GET /v1/accounts/{account}/workspaces/{workspace}/events/{event}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_getevent_workspace.md): Gets one event.
- [`GET /v1/accounts/{account}/workspaces/{workspace}/events/{event}:activityDetails`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_readactivitydetails_workspace.md): Reads bounded recorded targets after checking their current QDS access.
- [`POST /v1/accounts/{account}/workspaces/{workspace}/events/{event}:undo`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_undoevent_workspace.md): Undoes an event.
- [`GET /v1/accounts/{account}/workspaces/{workspace}/events:activityActors`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_readactivityactors_workspace.md): Reads recorded person names for a bounded page of actions.
- [`GET /v1/accounts/{account}/workspaces/{workspace}/events:activityFacets`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/events_listactivityfacets_workspace.md): Lists the values the TEAM_ACTIVITY list holds for a filter, with counts: the suggestions a search box offers under each key.

### Issues

Raise, read, convert, dismiss and reply to issues and notes.

- [`GET /v1/accounts/{account}/datasets/{dataset}/issues`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_listissues.md): Lists the issues and notes of a dataset.
- [`POST /v1/accounts/{account}/datasets/{dataset}/issues`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_createissue.md): Raises an issue or writes a note, in a person's own words, on an episode or the whole dataset.
- [`GET /v1/accounts/{account}/datasets/{dataset}/issues/{issue}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_getissue.md): Gets one issue.
- [`DELETE /v1/accounts/{account}/datasets/{dataset}/issues/{issue}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_deleteissue.md): Withdraws a person's own issue or note.
- [`PATCH /v1/accounts/{account}/datasets/{dataset}/issues/{issue}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_updateissue.md): Edits a person's own text, body or moment, or converts any issue between issue and note with `blocks`.
- [`GET /v1/accounts/{account}/datasets/{dataset}/issues/{issue}/replies`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_listreplies.md): Lists the replies under an issue, oldest first.
- [`POST /v1/accounts/{account}/datasets/{dataset}/issues/{issue}/replies`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_createreply.md): Replies under an issue or note.
- [`GET /v1/accounts/{account}/datasets/{dataset}/issues/{issue}/replies/{reply}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_getreply.md): Gets one reply.
- [`DELETE /v1/accounts/{account}/datasets/{dataset}/issues/{issue}/replies/{reply}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_deletereply.md): Deletes one's own reply.
- [`PATCH /v1/accounts/{account}/datasets/{dataset}/issues/{issue}/replies/{reply}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_updatereply.md): Edits one's own reply.
- [`POST /v1/accounts/{account}/datasets/{dataset}/issues:dismiss`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_dismississues.md): Dismisses issues by name or by filter, e.g.
- [`POST /v1/accounts/{account}/datasets/{dataset}/issues:reopen`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_reopenissues.md): Reopens dismissed issues scoped to the parent (same matching rule as DismissIssues).
- [`GET /v1/accounts/{account}/datasets/{dataset}/issues:summarize`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/issues_summarizeissues.md): Counts per code and state over the same set ListIssues returns for the same parent and filter (for a mixture: its own plus upstream issues); `dataset = "<parent>"` in the filter narrows to the pare...

### Mixtures

Compose a mixture: add, follow, bump and remove sources. What the mixture
then contains is read with Episodes.ListEpisodes on the mixture.

- [`GET /v1/accounts/{account}/datasets/{dataset}/sources`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/mixtures_listsources.md): Lists a mixture's sources by position.
- [`POST /v1/accounts/{account}/datasets/{dataset}/sources`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/mixtures_createsource.md): Adds a source.
- [`GET /v1/accounts/{account}/datasets/{dataset}/sources/{source}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/mixtures_getsource.md): Gets one source.
- [`DELETE /v1/accounts/{account}/datasets/{dataset}/sources/{source}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/mixtures_deletesource.md): Removes a source.
- [`PATCH /v1/accounts/{account}/datasets/{dataset}/sources/{source}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/mixtures_updatesource.md): Changes how a source is followed.
- [`POST /v1/accounts/{account}/datasets/{dataset}/sources/{source}:bump`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/mixtures_bumpsource.md): Moves a pinned source to the newest stable tag of its dataset.
- [`POST /v1/accounts/{account}/datasets/{dataset}/sources:batchCreate`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/mixtures_batchcreatesources.md): Adds several sources at once, last and in the order given: all of them or none.

### Rigs

Keep the account's capture rigs.

- [`GET /v1/accounts/{account}/rigs`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/rigs_listrigs.md): Lists the account's rigs.
- [`POST /v1/accounts/{account}/rigs`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/rigs_createrig.md): Registers a rig.
- [`GET /v1/accounts/{account}/rigs/{rig}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/rigs_getrig.md): Gets one rig.
- [`DELETE /v1/accounts/{account}/rigs/{rig}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/rigs_deleterig.md): Deletes a rig.
- [`PATCH /v1/accounts/{account}/rigs/{rig}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/rigs_updaterig.md): Edits a rig.
- [`POST /v1/accounts/{account}/rigs/{rig}:importCalibration`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/rigs_importcalibration.md): Imports a handheld rig's TCP calibration from a tcp_calibration.json and stores it on the rig, replacing any earlier one.

### Robots

Keep the account's robots and their models.

- [`GET /v1/accounts/{account}/robots`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_listrobots.md): Lists the account's robots, oldest first (the first is the default target).
- [`POST /v1/accounts/{account}/robots`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_createrobot.md): Registers a robot, or, with kind GRIPPER and `owner`, an empty gripper that robot owns and carries (no mounts yet): import its URDF with PrepareRobotModelImport and ImportRobotModel.
- [`GET /v1/accounts/{account}/robots/{robot}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_getrobot.md): Gets one robot.
- [`DELETE /v1/accounts/{account}/robots/{robot}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_deleterobot.md): Deletes a robot.
- [`PATCH /v1/accounts/{account}/robots/{robot}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_updaterobot.md): Edits display_name, robot_type or serial_number.
- [`GET /v1/accounts/{account}/robots/{robot}/model`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_getrobotmodel.md): Gets a robot's model.
- [`PATCH /v1/accounts/{account}/robots/{robot}/model`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_updaterobotmodel.md): Edits arms, solver, gripper, reach_base, mink_parameters or pyroki_parameters.
- [`POST /v1/accounts/{account}/robots/{robot}/model:import`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_importrobotmodel.md): Imports the uploaded URDF with its meshes, replacing any model.
- [`POST /v1/accounts/{account}/robots/{robot}/model:prepareImport`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_preparerobotmodelimport.md): Starts a model import: returns a short-lived signed URL to PUT the file to, and the object reference ImportRobotModel then takes.
- [`GET /v1/accounts/{account}/robots/{robot}/thumbnail`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_getrobotthumbnail.md): Gets the bytes of a robot's thumbnail by its sha256.
- [`POST /v1/accounts/{account}/robots/{robot}:copy`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_copyrobot.md): Makes a new robot from an existing one, to try a change (another gripper, a mount, a jaw) without touching the original, and returns the copy.
- [`POST /v1/accounts/{account}/robots/{robot}:copyAsUmiRig`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_copygripperasumirig.md): Copies a gripper template into a UMI rig and returns the rig: a workspace-level gripper (kind GRIPPER, `gripper_tcp.rig_kind` "umi-handheld") that is a snapshot copy of the template's URDF, meshes,...
- [`POST /v1/accounts/{account}/robots/{robot}:importGripperCalibration`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_importgrippercalibration.md): Replaces a gripper's TCPs with a tcp_calibration.json: each hand's `tracker_to_tcp`, and where the file also gives the TCP in the design's end-effector link (and the design's URDF has that link), t...
- [`POST /v1/accounts/{account}/robots/{robot}:setGripper`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_setrobotgripper.md): Gives a robot a gripper, sets where its own gripper sits on each arm, or takes the gripper off, and returns the robot.
- [`POST /v1/accounts/{account}/robots/{robot}:setGripperTcp`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_setgrippertcp.md): Sets where the TCP is on a gripper design, by a 4x4 matrix per hand in the frame of one of the design's links, and returns the gripper.
- [`GET /v1/accounts/{account}/solverTemplates`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_listsolvertemplates.md): Lists the workspace's solver templates, oldest first.
- [`POST /v1/accounts/{account}/solverTemplates`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_createsolvertemplate.md): Registers a solver template from a solver file and returns it.
- [`GET /v1/accounts/{account}/solverTemplates/{solverTemplate}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_getsolvertemplate.md): Gets one solver template.
- [`DELETE /v1/accounts/{account}/solverTemplates/{solverTemplate}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/robots_deletesolvertemplate.md): Deletes a solver template.

### Statuses

Running work and what ended recently, per workspace or for a whole
organization, and a way to stop it.

Read from the events record: a status is the latest OPERATION_* event of
its operation, joined with the progress its service last posted. Live
changes come on the events stream (`/next/events/v1/events`): each
OPERATION_* event, and progress as `event: progress`.

- [`GET /v1/accounts/{account}/statuses`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/statuses_liststatuses_account.md): Lists running work (QUEUED, RUNNING) and work that ended within `recent`, most recently changed first.
- [`GET /v1/accounts/{account}/statuses/{statuse}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/statuses_getstatus_account.md): Gets one operation's status.
- [`POST /v1/accounts/{account}/statuses/{statuse}:cancel`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/statuses_cancelstatus_account.md): Asks the service that runs the work to stop it, and answers once it accepted.
- [`GET /v1/accounts/{account}/workspaces/{workspace}/statuses`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/statuses_liststatuses_workspace.md): Lists running work (QUEUED, RUNNING) and work that ended within `recent`, most recently changed first.
- [`GET /v1/accounts/{account}/workspaces/{workspace}/statuses/{statuse}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/statuses_getstatus_workspace.md): Gets one operation's status.
- [`POST /v1/accounts/{account}/workspaces/{workspace}/statuses/{statuse}:cancel`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/statuses_cancelstatus_workspace.md): Asks the service that runs the work to stop it, and answers once it accepted.

### TaskDrafts

A human-selected Task draft. The qds storage and dispatch are temporary
until tasks-api owns both. Only a person applies this proposal.

- [`GET /v1/accounts/{account}/tasks/{task}/drafts`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/taskdrafts_listtaskdrafts.md): Lists stored proposals for a Task.
- [`POST /v1/accounts/{account}/tasks/{task}/drafts`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/taskdrafts_createtaskdraft.md): Prices all of a Task's selected references, or starts a stored proposal.
- [`GET /v1/accounts/{account}/tasks/{task}/drafts/{draft}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/taskdrafts_gettaskdraft.md): Reads the run's state and its stored result, if complete.
- [`POST /v1/accounts/{account}/tasks/{task}/drafts/{draft}:cancel`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/taskdrafts_canceltaskdraft.md): Stops a pending run without changing the Task or its revisions.

### Tasks

Keep the account's tasks.

- [`GET /v1/accounts/{account}/tasks`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_listtasks.md): Lists the account's tasks, newest first.
- [`POST /v1/accounts/{account}/tasks`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_createtask.md): Creates a task with a draft and nothing published.
- [`GET /v1/accounts/{account}/tasks/{task}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_gettask.md): Gets one task with its draft.
- [`DELETE /v1/accounts/{account}/tasks/{task}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_deletetask.md): Deletes a task and its revisions.
- [`PATCH /v1/accounts/{account}/tasks/{task}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_updatetask.md): Edits a task or saves its draft.
- [`GET /v1/accounts/{account}/tasks/{task}/references`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_listtaskreferences.md): Lists a task's references, oldest first.
- [`POST /v1/accounts/{account}/tasks/{task}/references`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_createtaskreference.md): Picks an episode as a reference.
- [`GET /v1/accounts/{account}/tasks/{task}/references/{reference}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_gettaskreference.md): Gets one reference.
- [`DELETE /v1/accounts/{account}/tasks/{task}/references/{reference}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_deletetaskreference.md): Removes a reference.
- [`POST /v1/accounts/{account}/tasks/{task}/references/{reference}:confirm`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_confirmtaskreference.md): Confirms a proposal as the caller.
- [`GET /v1/accounts/{account}/tasks/{task}/revisions`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_listtaskrevisions.md): Lists a task's revisions, newest first.
- [`GET /v1/accounts/{account}/tasks/{task}/revisions/{revision}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_gettaskrevision.md): Gets one revision.
- [`POST /v1/accounts/{account}/tasks/{task}:publish`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/tasks_publishtask.md): Validates the draft and publishes it as the next immutable revision.

### Versions

Cut, read, compare and download version tags, and preview and publish a
version with the edits drawn on its takes.

- [`GET /v1/accounts/{account}/datasets/{dataset}/mergeHistory`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_getmergehistory.md): Reads the merge and revert events for one dataset, newest first.
- [`GET /v1/accounts/{account}/datasets/{dataset}/versionPreviews`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_listversionpreviews.md): Lists the caller's live preview of the dataset, if any, so a closed dialog picks it up again.
- [`POST /v1/accounts/{account}/datasets/{dataset}/versionPreviews`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_createversionpreview.md): Previews the version an upload or a merged dataset would publish ("Apply all"): freezes the takes `include` picks, each with the edit drawn on it, and starts measuring them.
- [`GET /v1/accounts/{account}/datasets/{dataset}/versionPreviews/{versionPreview}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_getversionpreview.md): Gets a preview: how far it is, its counts, and, once READY, how it compares with the newest tag and what changed since it was made.
- [`DELETE /v1/accounts/{account}/datasets/{dataset}/versionPreviews/{versionPreview}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_deleteversionpreview.md): Discards the caller's preview.
- [`GET /v1/accounts/{account}/datasets/{dataset}/versionPreviews/{versionPreview}/items`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_listversionpreviewitems.md): A preview's windows, take by take, with what each measured: the numbers its charts draw.
- [`POST /v1/accounts/{account}/datasets/{dataset}/versionPreviews/{versionPreview}:publish`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_publishversionpreview.md): Publishes a READY preview of the caller's as tag `version_id` ("Create" in the dialog): cuts each edited take into new episodes beside it, then tags exactly the previewed episodes.
- [`GET /v1/accounts/{account}/datasets/{dataset}/versions`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_listversions.md): Lists a dataset's tags, newest first.
- [`POST /v1/accounts/{account}/datasets/{dataset}/versions`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_createversion.md): Tags what the dataset yields now.
- [`GET /v1/accounts/{account}/datasets/{dataset}/versions/{version}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_getversion.md): Gets a tag, or resolves `stable`, `head`, a DatasetVersion id or a prefix.
- [`PATCH /v1/accounts/{account}/datasets/{dataset}/versions/{version}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_updateversion.md): Edits a tag's note.
- [`GET /v1/accounts/{account}/datasets/{dataset}/versions/{version}/materializations/{materialization}`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_getmaterialization.md): How far a tag's rendering is.
- [`GET /v1/accounts/{account}/datasets/{dataset}/versions/{version}/materializations/{materialization}/artifacts`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_listmaterializationartifacts.md): A rendered dataset's files in path order, each with a fresh signed URI.
- [`POST /v1/accounts/{account}/datasets/{dataset}/versions/{version}/materializations/{materialization}:start`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_startmaterialization.md): Starts rendering a tag in the id's layout, or picks up the rendering already there: it never renders twice.
- [`GET /v1/accounts/{account}/datasets/{dataset}/versions/{version}/sourceCommits`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_listsourcecommits.md): Lists the repository commits a tag pins, ordered by upload, so a version can be traced to the repositories its episodes came from.
- [`GET /v1/accounts/{account}/datasets/{dataset}/versions:compare`](https://junction-docs.qualiastudios.dev/api/qualia-v1/operations/versions_compareversions.md): What came in, went out or changed revision between two refs of one dataset, and why.
