(GET) Sensor Configuration History | Sofar API
For the complete documentation index, see llms.txt. This page is also available as Markdown.
GET``https://api.sofarocean.com/api/sensor-configuration-history?spotterId=:spotterId&startDate=:startDate&endDate=:endDate
Returns Smart Mooring sensor configurations for a Spotter, specified by spotterId, between startDate and endDate.
This endpoint will only return sensor configuration history from June 2025 or later.
Query Parameters
| Name | Type | Description |
|---|---|---|
spotterId |
string | The Spotter ID of the device you wish to retrieve information from. |
startDate |
string | ISO 8601-formatted timestamp indicating the start date for data inclusion. |
e.g., 2025-06-01T07:00:00Z |
||
endDate |
string | ISO 8601-formatted timestamp indicating the end date for data inclusion. |
e.g., 2025-06-02T07:00:00Z |
Response Description
The response body includes the configurations of all sensors attached to the Smart Mooring during the specified time window, ordered by timestamp. Each element of the data array represents a complete configuration at one time.
Name
| Name | Type | Description |
|---|---|---|
timestamp |
string | ISO 8601-formatted timestamp indicating the time the configuration was reported by the Spotter. |
configuration_checksum |
string | A unique identifier for the Smart Mooring configuration. Can be cross-referenced with the sensor data samples returned by the Sensor Data endpoint to determine the sensor configuration at the time of data collection. |
sensor_configurations |
array | The complete configuration of all sensors attached to the Spotter's Smart Mooring at a given time. |
Sensor Configurations
The sensor_configurations array contains details on the configuration of each sensor.
Name
| Name | Type | Description |
|---|---|---|
app_name |
string | The name of the sensor, returned for Bristlemouth sensors. |
sensor_type |
object | The name and display name of the sensor. |
position |
integer | The sensor's physical position in the Smart Mooring relative to the Spotter, with 1 being closest to the Spotter. |
configuration |
object | The sensor's configuration settings. |
data_types |
array | The data fields and units potentially returned by the sensor among its data samples. |
firmware_sha |
string | The Bristlemouth mote's firmware version. |
bristlemouth_node_id |
string | The Bristlemouth mote's ID. |
configuration_crc |
string | An error-detecting code for the Bristlemouth mote. |
Example Request
curl "https://api.sofarocean.com/api/sensor-configuration-history?spotterId=SPOT-0222&startDate=2025-12-01T07:00:00Z&endDate=2025-12-02T07:00:00Z" -H 'token: YOUR_API_TOKEN'
Example Responses
200
Configuration history:
{
"status": "success",
"spotterId": "SPOT-31082C",
"data": [
{
"timestamp": "2025-09-02T02:16:07.000Z",
"sensor_configurations": [
{
"app_name": "bridge",
"position": 0,
"data_types": [],
"firmware_sha": "3610e39f",
"configuration": {
"sampleDurationMs": 840000,
"sampleIntervalMs": 1800000,
"samplesPerReport": 2,
"subsampleEnabled": 0,
"softReadingPeriodMs": 500,
"subsampleDurationMs": 60000,
"subsampleIntervalMs": 300000,
"ticksSamplingEnabled": 0,
"transmitAggregations": 1,
"alignmentInterval5Min": 1,
"sensorsCheckIntervalS": 60,
"sensorsPollIntervalMs": 10000,
"currentReadingPeriodMs": 60000,
"rbrCodaReadingPeriodMs": 500,
"disableUnusedPortsTimeMs": 0,
"turbidityReadingPeriodMs": 1000,
"bridgePowerControllerEnabled": 1
},
"configuration_crc": "0xedba5d73",
"bristlemouth_node_id": "0xd158263d60f8e3a1",
"sensor_type": {
"name": "bm_bridge_1",
"display_name": "Spotter"
}
},
{
"app_name": "borealis",
"position": 1,
"data_types": [
{
"units": "unitless",
"unit_type": "boolean",
"data_type_name": "generic_boolean_1bits"
},
{
"units": "dB re µPa²",
"unit_type": "sound_pressure_level",
"data_type_name": "bm_borealis_spl_broadband_8bits"
},
{
"units": "dB re µPa²",
"unit_type": "interquartile_range",
"data_type_name": "bm_borealis_max_iqr_8bits"
},
{
"units": "unitless",
"unit_type": "index",
"data_type_name": "bm_borealis_max_iqr_band_number_6bits"
},
{
"units": "unitless",
"unit_type": "spectral_entropy",
"data_type_name": "bm_borealis_entropy_8bits"
},
{
"units": "unitless",
"unit_type": "buffer_length",
"data_type_name": "generic_buffer_length_8bits"
},
{
"units": "bit",
"unit_type": "bit",
"data_type_name": "generic_dummy_1bits"
}
],
"firmware_sha": "98b26cbb",
"configuration": {
"enable_dsp": 1,
"enable_sbc": 1,
"dfu_confirm": 1,
"sample_rate": 48000,
"sbc_command": "/usr/local/bin/borealis_hydrotwin.sh",
"hydrotwin_ldr": 3,
"report_interval": 810,
"enable_daq_recording": 1,
"disableUnusedPortsTimeMs": 0
},
"configuration_crc": "0x4d24634d",
"bristlemouth_node_id": "0x9d24ede22a7e7413",
"sensor_type": {
"name": "bm_borealis_1",
"display_name": "Bristlemouth Borealis Hydrophone"
}
}
],
"configuration_checksum": "0x4b15a6d0"
},
{
"timestamp": "2025-09-05T02:43:58.000Z",
"sensor_configurations": [
{
"app_name": "bridge",
"position": 0,
"data_types": [],
"firmware_sha": "3610e39f",
"configuration": {
"sampleDurationMs": 840000,
"sampleIntervalMs": 1800000,
"samplesPerReport": 2,
"subsampleEnabled": 0,
"softReadingPeriodMs": 500,
"subsampleDurationMs": 60000,
"subsampleIntervalMs": 300000,
"ticksSamplingEnabled": 0,
"transmitAggregations": 1,
"alignmentInterval5Min": 1,
"sensorsCheckIntervalS": 60,
"sensorsPollIntervalMs": 10000,
"currentReadingPeriodMs": 60000,
"rbrCodaReadingPeriodMs": 500,
"disableUnusedPortsTimeMs": 0,
"turbidityReadingPeriodMs": 1000,
"bridgePowerControllerEnabled": 1
},
"configuration_crc": "0xedba5d73",
"bristlemouth_node_id": "0xd158263d60f8e3a1",
"sensor_type": {
"name": "bm_bridge_1",
"display_name": "Spotter"
}
},
{
"app_name": "borealis",
"position": 1,
"data_types": [
{
"units": "unitless",
"unit_type": "boolean",
"data_type_name": "generic_boolean_1bits"
},
{
"units": "dB re µPa²",
"unit_type": "sound_pressure_level",
"data_type_name": "bm_borealis_spl_broadband_8bits"
},
{
"units": "dB re µPa²",
"unit_type": "interquartile_range",
"data_type_name": "bm_borealis_max_iqr_8bits"
},
{
"units": "unitless",
"unit_type": "index",
"data_type_name": "bm_borealis_max_iqr_band_number_6bits"
},
{
"units": "unitless",
"unit_type": "spectral_entropy",
"data_type_name": "bm_borealis_entropy_8bits"
},
{
"units": "unitless",
"unit_type": "buffer_length",
"data_type_name": "generic_buffer_length_8bits"
},
{
"units": "bit",
"unit_type": "bit",
"data_type_name": "generic_dummy_1bits"
}
],
"firmware_sha": "98b26cbb",
"configuration": {
"enable_dsp": 1,
"enable_sbc": 0,
"dfu_confirm": 1,
"sample_rate": 31250,
"sbc_command": "/usr/local/bin/borealis_hydrotwin.sh",
"enable_pgram": 0,
"hydrotwin_ldr": 3,
"report_interval": 810,
"sensorBmLogEnable": 1,
"enable_daq_recording": 1,
"sensorsCheckIntervalS": 60,
"sensorsPollIntervalMs": 5000,
"disableUnusedPortsTimeMs": 0
},
"configuration_crc": "0x332d39ff",
"bristlemouth_node_id": "0x9d24ede22a7e7413",
"sensor_type": {
"name": "bm_borealis_1",
"display_name": "Bristlemouth Borealis Hydrophone"
}
}
],
"configuration_checksum": "0x9fedcb4e"
},
...
]
}
No configuration history:
{
"status": "success",
"spotterId": "SPOT-010423",
"data": []
}
{
"status": "error",
"message": "Device not found"
}
Incorrect token:
{
"message": "Authentication Failed"
}
Missing token:
{
"message": "No token provided"
}