---
title: "Update Dataset"
method: PATCH
path: "/felix/datasets/{dataset_id}"
tags: ["felix", "datasets"]
---

# Update Dataset

`PATCH /felix/datasets/{dataset_id}`

Patch a dataset by ID. Currently exposes only ``project_id``.

Delegates to :func:`services.projects.movement.assign_resource_to_project`
which owns the visibility check, target-project gating, and the
service-role ``UPDATE``. Send ``project_id: null`` to unassign the
dataset from its project.

## Path parameters

- `dataset_id` string, required

## Request body

- DatasetUpdate — Thin PATCH body for ``PATCH /felix/datasets/{dataset_id}``. Exposes only ``project_id``. Send ``null`` to unassign the dataset from its current project. Unknown fields are rejected with HTTP 422. Convention divergence: the legacy :class:`DatasetMetadataUpdate` (used by ``PUT /felix/datasets/{name}/{version}``) accepts ``project_id=""`` for "unassign". This PATCH endpoint is the canonical path going forward and standardizes on ``null``. The two schemas coexist while the frontend migrates off the legacy PUT.
  - `project_id` string, nullable — Project ID (UUID) to assign the dataset to, or null to unassign.

## Response `200`

Successful Response

- UpdateResourceProjectResponse — Response for project assignment update.
  - `success` boolean, required
  - `message` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/pioneer/apis/brain-api.md) · [All operations](https://skmtc.net/pioneer/apis/brain-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pioneer/brain-api/versions/31dfe831e079/schema)
