---
title: "Clean Version"
method: POST
path: "/datasets/{dataset_id}/versions/{version}/clean"
tags: ["datasets"]
---

# Clean Version

`POST /datasets/{dataset_id}/versions/{version}/clean`

## Request

- Base URL: `https://api.os3robotics.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.os3robotics.com/datasets/{dataset_id}/versions/{version}/clean`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Open the cleaned version of sealed `version`: the dataset's next version, keeping every
row of it the recipe does not drop (no body: the workspace's default rules for the version's
kind, the record naming their defaults version), with the cleaning record and every drop
with why in its manifest's `selection`. Admitted as an upload is; OS3 writes and seals it,
and `version` stays as it is. 422 when the recipe drops no row or every row.

## Path parameters

- `dataset_id` string, uuid, required
- `version` integer, required

## Request body

- Recipe: os3.cleaning_recipe.v1: the operations, in the order they apply.
  - `operations` union[], required
    - union
      - Length
        - `op` 'length', required
        - `min` integer, nullable
        - `max` integer, nullable
      - Dedupe
        - `op` 'dedupe', required
        - `key` 'example' | 'prompt'
      - DropWhere
        - `op` 'drop_where', required
        - `field` 'task' | 'operator' | 'site' | 'robot' | 'success' | 'prompt' | 'target', required
        - `values` string[], required
        - `match` 'equals' | 'contains'
      - DropRows
        - `op` 'drop', required
        - `rows` integer[], required
        - `reason` string, required
      - Curation
        - `op` 'curation', required
      - Format
        - `op` 'format', required

## Response `201`

Successful Response

- Version
  - `id` string, uuid, required
  - `dataset_id` string, uuid, required
  - `version` integer, required
  - `container` string, required
  - `account` string, required
  - `status` string, required
  - `files` StoredFile[], required
    - `path` string, required
    - `sha256` string, required
    - `bytes` integer, required
  - `provenance` object, nullable, required
  - `objective` string, nullable
  - `recipe` string, nullable
  - `manifest_path` string, nullable, required
  - `manifest_sha256` string, nullable, required
  - `file_count` integer, nullable, required
  - `total_bytes` integer, nullable, required
  - `created_at` string, date-time, required
  - `sealed_at` string, date-time, nullable, required
  - `selection` object, nullable
  - `selection_error` string, nullable
  - `harness_traces` object, nullable
  - `imported_from` object, nullable
  - `composite` object, nullable
  - `seal_requested_at` string, date-time, nullable
  - `seal_error` string, nullable
  - `derived` object, nullable
  - `uploads` object[], nullable
  - `read_url` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/os3robotics/apis/os3-api.md) - [All operations](https://skmtc.dev/os3robotics/apis/os3-api/llms.txt) - [OpenAPI document](https://skmtc.dev/os3robotics/apis/os3-api/revisions/af32cd4f14bb?raw)
