---
title: "Update a material property dataset's metadata or column specs"
method: PATCH
path: "/material_property_datasets/{property_id}"
tags: ["Material Property Datasets"]
---

# Update a material property dataset's metadata or column specs

`PATCH /material_property_datasets/{property_id}`

Update dataset name and/or column specs.

When ``columns`` is provided, the original uploaded file is re-parsed
and the processed parquet is rebuilt with the new column metadata.
Column names must exactly match those in the original file.

## Path parameters

- `property_id` string, required

## Request body

- UpdateMaterialPropertyDataset — Partial update for a material property dataset. If ``columns`` is provided, the stored parquet is rebuilt from the preserved original file using the new column specs.
  - `name` string, nullable — New dataset name
  - `columns` ColumnSpec[], nullable — Revised column specs. Must cover exactly the columns in the original uploaded file (minus any unnamed index columns).
    - `name` string, required — Display name stored in the processed parquet
    - `unit` string — Physical unit, e.g. 'mol.L-1' or 'S.m-1'. Empty string for unitless quantities.
    - `source_column_index` integer, required — 0-based column position in the uploaded file. The column at this position is selected and stored under ``name``. Required for all uploads regardless of whether the file has a header row.
  - `source_pipeline_id` string, nullable — New source pipeline FK (null to clear).
  - `source_simple_pipeline_id` string, nullable — New source simple-pipeline FK (null to clear).
  - `source_analysis_id` string, nullable — New source analysis FK (null to clear).
  - `source_label` string, nullable — New provenance note.

## Response `200`

Successful Response

- MaterialPropertyDataset — Material property dataset record as returned by the API.
  - `material_id` string, required — ID of the parent material
  - `project_id` string, required — ID of the project this property is scoped to
  - `name` string, required — User-provided dataset name, e.g. 'Electrolyte transport'
  - `columns` ColumnSpec[], required — All columns in the dataset with their units.
    - `name` string, required — Display name stored in the processed parquet
    - `unit` string — Physical unit, e.g. 'mol.L-1' or 'S.m-1'. Empty string for unitless quantities.
    - `source_column_index` integer, required — 0-based column position in the uploaded file. The column at this position is selected and stored under ``name``. Required for all uploads regardless of whether the file has a header row.
  - `id` string, required — Unique identifier
  - `organization_id` string, required — Organization that owns this record
  - `storage_path` string, required — Path to the processed parquet file in the material-property-datasets bucket.
  - `original_path` string, nullable — Path to the raw original file in the material-property-datasets bucket. NULL only for records created before this field was introduced.
  - `data_version` integer, required — Increments on every data-changing operation (file replacement or column re-processing). Downstream code can store this alongside computed results and compare against the current value to detect staleness.
  - `nan_counts` object, nullable — Number of NaN/null values per column, keyed by display name. Computed at upload time. ``None`` for records uploaded before this field was introduced.
  - `no_header` boolean — True when the uploaded CSV had no header row. Column positions are mapped via ``source_column_index`` on each column spec.
  - `created_by` string, nullable — User ID of the uploader
  - `created_at` string, date-time, required — Upload timestamp
  - `updated_at` string, date-time, required — Last update timestamp
  - `source_pipeline_id` string, nullable — FK to the pipeline this dataset was computed from.
  - `source_simple_pipeline_id` string, nullable — FK to the simple pipeline this dataset was computed from.
  - `source_analysis_id` string, nullable — FK to the analysis this dataset was computed from.
  - `source_label` string, nullable — Free-text provenance note.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/ionworks/apis/fastapi.md) · [All operations](https://skmtc.dev/ionworks/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ionworks/fastapi/revisions/7337a3cbdaf2/schema)
