curl --request PATCH \
--url https://api.ionworks.com/material_property_datasets/{property_id}/file \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form 'name=<string>' \
--form 'columns=<string>' \
--form no_header=trueimport requests
url = "https://api.ionworks.com/material_property_datasets/{property_id}/file"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"name": "<string>",
"columns": "<string>",
"no_header": "true"
}
response = requests.patch(url, data=payload, files=files)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('name', '<string>');
form.append('columns', '<string>');
form.append('no_header', 'true');
const options = {method: 'PATCH'};
options.body = form;
fetch('https://api.ionworks.com/material_property_datasets/{property_id}/file', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ionworks.com/material_property_datasets/{property_id}/file",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"columns\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_header\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ionworks.com/material_property_datasets/{property_id}/file"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"columns\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_header\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.ionworks.com/material_property_datasets/{property_id}/file")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"columns\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_header\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ionworks.com/material_property_datasets/{property_id}/file")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"columns\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_header\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"material_id": "<string>",
"project_id": "<string>",
"name": "<string>",
"columns": [
{
"name": "<string>",
"source_column_index": 123,
"unit": ""
}
],
"id": "<string>",
"organization_id": "<string>",
"storage_path": "<string>",
"data_version": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"original_path": "<string>",
"nan_counts": {},
"no_header": false,
"created_by": "<string>",
"source_pipeline_id": "<string>",
"source_simple_pipeline_id": "<string>",
"source_analysis_id": "<string>",
"source_label": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Replace the data file for a material property dataset
Replace the data file for a material property dataset.
The dataset record retains its ID and all existing metadata. Only the stored
files (processed parquet and original) are replaced. name, columns,
and no_header may optionally be updated in the same request; if omitted,
the existing values are preserved.
curl --request PATCH \
--url https://api.ionworks.com/material_property_datasets/{property_id}/file \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form 'name=<string>' \
--form 'columns=<string>' \
--form no_header=trueimport requests
url = "https://api.ionworks.com/material_property_datasets/{property_id}/file"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"name": "<string>",
"columns": "<string>",
"no_header": "true"
}
response = requests.patch(url, data=payload, files=files)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('name', '<string>');
form.append('columns', '<string>');
form.append('no_header', 'true');
const options = {method: 'PATCH'};
options.body = form;
fetch('https://api.ionworks.com/material_property_datasets/{property_id}/file', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ionworks.com/material_property_datasets/{property_id}/file",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"columns\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_header\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ionworks.com/material_property_datasets/{property_id}/file"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"columns\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_header\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.ionworks.com/material_property_datasets/{property_id}/file")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"columns\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_header\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ionworks.com/material_property_datasets/{property_id}/file")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"columns\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_header\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"material_id": "<string>",
"project_id": "<string>",
"name": "<string>",
"columns": [
{
"name": "<string>",
"source_column_index": 123,
"unit": ""
}
],
"id": "<string>",
"organization_id": "<string>",
"storage_path": "<string>",
"data_version": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"original_path": "<string>",
"nan_counts": {},
"no_header": false,
"created_by": "<string>",
"source_pipeline_id": "<string>",
"source_simple_pipeline_id": "<string>",
"source_analysis_id": "<string>",
"source_label": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Path Parameters
Body
Response
Successful Response
Material property dataset record as returned by the API.
ID of the parent material
ID of the project this property is scoped to
User-provided dataset name, e.g. 'Electrolyte transport'
All columns in the dataset with their units.
Show child attributes
Show child attributes
Unique identifier
Organization that owns this record
Path to the processed parquet file in the material-property-datasets bucket.
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.
Upload timestamp
Last update timestamp
Path to the raw original file in the material-property-datasets bucket. NULL only for records created before this field was introduced.
Number of NaN/null values per column, keyed by display name. Computed at upload time. None for records uploaded before this field was introduced.
Show child attributes
Show child attributes
True when the uploaded CSV had no header row. Column positions are mapped via source_column_index on each column spec.
User ID of the uploader
FK to the pipeline this dataset was computed from.
FK to the simple pipeline this dataset was computed from.
FK to the analysis this dataset was computed from.
Free-text provenance note.
Was this page helpful?