Skip to main content
Create a properties-type measurement directly

Path Parameters

cell_instance_id
string
required

Body

application/json

Request model for creating a properties-type measurement directly (no upload).

Inherits field validation (including validate_properties) from CellMeasurementBase. Overrides measurement_type default and makes properties required.

name
string
required
Required string length: 1 - 255
properties
Properties · object
required

Key-value measurements using Quantity format for numerics. Example: {'thickness': {'value': 0.52, 'unit': 'mm'}}

protocol
Protocol · object | null

Protocol information. Typical keys: 'name' (str), 'ambient_temperature_degc' (float), 'definition' (dict | str — a UCP protocol definition or another protocol format).

start_time
string<date-time> | null

ISO 8601 datetime with timezone (UTC preferred) marking when the test started.

end_time
string<date-time> | null

ISO 8601 datetime with timezone (UTC preferred) marking when the test finished. Leave null while the test is still running; set it once the measurement is complete. A null end_time means the cell is still considered 'on test' in the Lab view.

estimated_end_time
string<date-time> | null

ISO 8601 datetime with timezone (UTC preferred) forecasting when a still-running test will finish. Distinct from end_time (the actual finish): this is an estimate. Null when no estimate has been computed yet.

estimated_end_time_note
string | null

Free-text explanation of how estimated_end_time was derived.

estimated_end_time_calculated_at
string<date-time> | null

ISO 8601 datetime with timezone marking when estimated_end_time was last computed.

test_setup
Test Setup · object | null

Physical test setup. Typical keys: 'cycler' (model), 'operator', 'lab', 'channel_number'. Readers also record what the cycler header carries, drawn from one shared vocabulary so the shape does not vary by cycler: 'test_name', 'cell_label' (the cycler's own label for the cell, which need not match the cell instance), 'instrument', 'cycler_serial_number', 'software_version', 'temperature_setpoint_degc', 'notes', 'end_time', plus export provenance -- 'export_date', 'source_file_path', 'barcode_comment', and 'source_file_id' (an id in the cycler's own id space, not a cross-system identifier). Which of these a file can fill depends on its format; keys the header does not carry are omitted rather than set empty.

step_labels_validated
boolean
default:false

Set to true only once step-type labels (Rest, CC charge, CV, discharge, etc.) have been manually reviewed. Server-inferred labels should leave this false.

notes
string | null

Free-text notes about the cell measurement

measurement_type
enum<string>
default:properties

Must be 'properties' for this endpoint.

Available options:
time_series,
file,
properties
file_metadata
File Metadata · object | null

Metadata about uploaded files (MIME types, dimensions, etc.)

channel_id
string | null

Optional ID of the channel this measurement ran on.

protocol_id
string | null

Optional ID of the experiment template (protocol) this measurement was run against.

program_id
string | null

Optional catalog program for this measurement (copied from a linked planned measurement when present).

Response

Successful Response

name
string
required
Required string length: 1 - 255
id
string
required
cell_instance_id
string
required
organization_id
string
required

Organization this measurement belongs to.

project_id
string
required

Project this measurement belongs to

created_at
string<date-time>
required
updated_at
string<date-time>
required
protocol
Protocol · object | null

Protocol information. Typical keys: 'name' (str), 'ambient_temperature_degc' (float), 'definition' (dict | str — a UCP protocol definition or another protocol format).

start_time
string<date-time> | null

ISO 8601 datetime with timezone (UTC preferred) marking when the test started.

end_time
string<date-time> | null

ISO 8601 datetime with timezone (UTC preferred) marking when the test finished. Leave null while the test is still running; set it once the measurement is complete. A null end_time means the cell is still considered 'on test' in the Lab view.

estimated_end_time
string<date-time> | null

ISO 8601 datetime with timezone (UTC preferred) forecasting when a still-running test will finish. Distinct from end_time (the actual finish): this is an estimate. Null when no estimate has been computed yet.

estimated_end_time_note
string | null

Free-text explanation of how estimated_end_time was derived.

estimated_end_time_calculated_at
string<date-time> | null

ISO 8601 datetime with timezone marking when estimated_end_time was last computed.

test_setup
Test Setup · object | null

Physical test setup. Typical keys: 'cycler' (model), 'operator', 'lab', 'channel_number'. Readers also record what the cycler header carries, drawn from one shared vocabulary so the shape does not vary by cycler: 'test_name', 'cell_label' (the cycler's own label for the cell, which need not match the cell instance), 'instrument', 'cycler_serial_number', 'software_version', 'temperature_setpoint_degc', 'notes', 'end_time', plus export provenance -- 'export_date', 'source_file_path', 'barcode_comment', and 'source_file_id' (an id in the cycler's own id space, not a cross-system identifier). Which of these a file can fill depends on its format; keys the header does not carry are omitted rather than set empty.

step_labels_validated
boolean
default:false

Set to true only once step-type labels (Rest, CC charge, CV, discharge, etc.) have been manually reviewed. Server-inferred labels should leave this false.

notes
string | null

Free-text notes about the cell measurement

measurement_type
enum<string>
default:time_series

What shape of data this measurement holds. Determines which fields are populated and which upload flow applies. See the class docstring.

Available options:
time_series,
file,
properties
properties
Properties · object | null

Flat key/value measurements, populated only when measurement_type is 'properties'. Numeric values use the Quantity format. Example: {'thickness': {'value': 0.52, 'unit': 'mm'}, 'DCIR': {'value': 12, 'unit': 'mohm'}}.

file_metadata
File Metadata · object | null

Metadata about uploaded files (MIME types, dimensions, etc.)

channel_id
string | null

Optional ID of the channel this measurement ran on.

protocol_id
string | null

Optional ID of the experiment template (protocol) this measurement was run against.

program_id
string | null

Optional catalog program for this measurement (copied from a linked planned measurement when present).

created_by
string | null

User ID of the user who created this measurement

created_by_email
string | null

Email of the user who created this measurement

processing_status
enum<string>
default:ready

Lifecycle of server-side step processing. 'ready' once steps are available; 'pending'/'running' while the upload is being processed asynchronously; 'failed' if processing failed (see processing_error).

Available options:
pending,
running,
ready,
failed,
awaiting_extend,
extending
processing_error
string | null

Reason processing failed, when processing_status is 'failed'. Also carries why an extend did not apply, in which case the status is back to 'ready' and this is advisory only.

source_etag
string | null
row_count
integer | null
time_series_bytes
integer | null
recorded_duration_s
number | null
estimated_end_time_status
enum<string> | null

Lifecycle of a duration estimate computed by a background simulation.

Used by both estimates: a planned test's total duration (planned_measurements.estimated_duration_*) and a running test's remaining duration (cell_measurements.estimated_end_time_*). One enum because the lifecycle is identical -- only what is being estimated differs.

estimating while the job is in flight, ready once a value came from it, failed with the reason in the accompanying note. None means no estimate was ever requested.

Available options:
estimating,
ready,
failed
estimated_end_time_job_id
string | null
extend_claim_id
string | null

Opaque token identifying the in-flight extend that holds this measurement, and the staging prefix its delta is uploaded to. Non-null exactly while processing_status is 'awaiting_extend' or 'extending'.

extend_in_progress_at
string<date-time> | null

Deprecated and always null. Use processing_status.

extend_claimed_at
string<date-time> | null

When the in-flight extend claim was taken. Written only by the claim itself, so an unrelated update to the measurement does not age it. Null when no extend holds the measurement.