curl --request GET \
--url https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}import requests
url = "https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}', 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/projects/{project_id}/planned_measurements/{planned_measurement_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"name": "<string>",
"id": "<string>",
"organization_id": "<string>",
"project_id": "<string>",
"status": "requested",
"requested_by": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"cell_specification_id": "<string>",
"cell_instance_id": "<string>",
"channel_id": "<string>",
"set_temperature_c": 123,
"thermal_chamber_id": "<string>",
"protocol_id": "<string>",
"program_id": "<string>",
"test_setup": {},
"planned_start_time": "2023-11-07T05:31:56Z",
"planned_end_time": "2023-11-07T05:31:56Z",
"estimated_duration_seconds": 2,
"setup_duration_seconds": 0,
"teardown_duration_seconds": 0,
"notes": "<string>",
"scheduled_by": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"started_measurement_id": "<string>",
"cancelled_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"requested_by_email": "<string>",
"scheduled_by_email": "<string>",
"channel_name": "<string>",
"cycler_id": "<string>",
"cycler_name": "<string>",
"program_name": "<string>",
"estimated_duration_status": "estimating",
"estimated_duration_job_id": "<string>",
"estimated_duration_simulation_id": "<string>",
"simulated_duration_seconds": 123,
"estimated_duration_is_exact": true,
"estimated_duration_margin_pct": 123,
"actual_duration_seconds": 123,
"estimated_duration_note": "<string>",
"estimated_duration_calculated_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get a planned measurement
Get a planned measurement by id within a project.
curl --request GET \
--url https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}import requests
url = "https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}', 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/projects/{project_id}/planned_measurements/{planned_measurement_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ionworks.com/projects/{project_id}/planned_measurements/{planned_measurement_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"name": "<string>",
"id": "<string>",
"organization_id": "<string>",
"project_id": "<string>",
"status": "requested",
"requested_by": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"cell_specification_id": "<string>",
"cell_instance_id": "<string>",
"channel_id": "<string>",
"set_temperature_c": 123,
"thermal_chamber_id": "<string>",
"protocol_id": "<string>",
"program_id": "<string>",
"test_setup": {},
"planned_start_time": "2023-11-07T05:31:56Z",
"planned_end_time": "2023-11-07T05:31:56Z",
"estimated_duration_seconds": 2,
"setup_duration_seconds": 0,
"teardown_duration_seconds": 0,
"notes": "<string>",
"scheduled_by": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"started_measurement_id": "<string>",
"cancelled_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"requested_by_email": "<string>",
"scheduled_by_email": "<string>",
"channel_name": "<string>",
"cycler_id": "<string>",
"cycler_name": "<string>",
"program_name": "<string>",
"estimated_duration_status": "estimating",
"estimated_duration_job_id": "<string>",
"estimated_duration_simulation_id": "<string>",
"simulated_duration_seconds": 123,
"estimated_duration_is_exact": true,
"estimated_duration_margin_pct": 123,
"actual_duration_seconds": 123,
"estimated_duration_note": "<string>",
"estimated_duration_calculated_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Response
Successful Response
A planned measurement row returned by the API.
1 - 255Lifecycle state for a planned measurement.
requested, scheduled, in_progress, completed, cancelled Cell specification the requester wants tested (set at request time).
Cell instance this future measurement will run on.
Channel reserved for this measurement, once scheduled.
Temperature this test must run at, in degrees Celsius, held fixed for the whole test. None means ambient: the test runs outside a thermal chamber.
Chamber this test's channel sits in for the reservation. Recorded per reservation rather than per channel, because channels move between chambers.
Named protocol (experiment_template) this measurement will run. Required on create; a planned measurement must name a protocol.
Optional catalog program (Formation, Cycling, …) for this test request.
Planned physical setup.
When setup/run is planned to start.
When this planned measurement is expected to release the channel.
Expected run duration before scheduled times exist.
x >= 1Operator setup duration before the test starts.
x >= 0Operator teardown duration after the test finishes.
x >= 0Free-text planning notes.
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.
estimating, ready, failed Was this page helpful?