# (GET) Sensor Configuration History

<mark style="color:blue;">`GET`</mark> `https://api.sofarocean.com/api/sensor-configuration-history?spotterId=:spotterId&startDate=:startDate&endDate=:endDate`

Returns Smart Mooring sensor configurations for a specified Spotter between `startDate` and `endDate`.

{% hint style="info" %}
This endpoint will only return sensor configuration history from June 2025 or later.
{% endhint %}

### Query Parameters

| Name        | Type   | Description                                                                                                                      |
| ----------- | ------ | -------------------------------------------------------------------------------------------------------------------------------- |
| `spotterId` | string | The identifier of the device you wish to retrieve information from.                                                              |
| `startDate` | string | <p>ISO 8601-formatted timestamp indicating the start date for data inclusion.<br><br>e.g., <code>2021-01-01T07:00:00Z</code></p> |
| `endDate`   | string | <p>ISO 8601-formatted timestamp indicating the end date for data inclusion.<br><br>e.g.,  <code>2021-01-02T07:00:00Z</code></p>  |

### Response Description

To learn more about the sensors and the measured data please review our [Sensor Payload support document](https://sofarocean.notion.site/Sensors-Payloads-a26e005cc5374a7eb6a1e64a3b54b7de?pvs=74).

Each element of the `data` array represents a complete configuration of all sensors attached to the Smart Mooring at one time.

`timestamp` is an ISO8061-formatted string representing the time the configuration was reported by the Spotter, and it was in effect for all data samples collected until the following sensor configuration entry. If a sensor configuration was in use prior to the `startTime` query parameter passed in, the first entry will have the timestamp of the first sensor datum at or after `startTime`, not the earliest time the configuration was used.

`configuration_checksum` is a checksum unique to a given mooring configuration. If the Smart Mooring sensors are changed, but then later returned to an earlier configuration, the `configuration_checksum` will be the same, assuming the sensors are in the same positions and have the same setting configured. The `configuration_checksum` returned with sensor data samples from `/sensor-data` can be cross-referenced with this field to determine the sensor configuration with which the sample was collected.

The `sensor_configurations` array contains details of the configuration of each sensor:

* `sensor_type` describes the type of sensor.
* `position` is the physical position of a sensor in the Smart Mooring relative to Spotter. Position 1 is closest to Spotter, and position 0 is the Bristlemouth processor within the Spotter buoy at the root of the Smart Mooring.
* `configuration` describes configuration settings for the sensor.
* `data_types` describes the data fields and units potentially returned by the sensor among its data samples.
* `firmware_sha` and `bristlemouth_node_id` refer to the Bristlemouth mote within the sensor.

### Examples

#### Example Request

<pre class="language-bash"><code class="lang-bash"><strong>curl "https://api.sofarocean.com/api/sensor-configuration-history?spotterId=SPOT-0222&#x26;startDate=2025-12-01T07:00:00Z&#x26;endDate=2025-12-02T07:00:00Z" -H 'token: YOUR_API_TOKEN'
</strong></code></pre>

#### Example Response

{% tabs %}
{% tab title="200" %}

```json
{
  "status": "success",
  "data": [
    {
      "configuration_checksum": "0xb6929687",
      "sensor_configurations": [
        {
          "configuration": {
            "sampleDurationMs": 60000,
            "sampleIntervalMs": 300000,
            "samplesPerReport": 1,
            "subsampleEnabled": 0,
            "softReadingPeriodMs": 500,
            "subsampleDurationMs": 60000,
            "subsampleIntervalMs": 300000,
            "ticksSamplingEnabled": 0,
            "transmitAggregations": 1,
            "alignmentInterval5Min": 1,
            "currentReadingPeriodMs": 60000,
            "rbrCodaReadingPeriodMs": 500,
            "turbidityReadingPeriodMs": 1000,
            "bridgePowerControllerEnabled": 1
          },
          "data_types": [],
          "position": 0,
          "sensor_type": {
            "display_name": "Spotter",
            "name": "sofar_bridge"
          },
          "firmware_sha": "1e97d2c4",
          "configuration_crc": "0x7678be55",
          "bristlemouth_node_id": "0x6b721cca35d6e6be"
        },
        {
          "configuration": {
            "sample_count": 6,
            "sample_interval": 0,
            "subsample_count": 9,
            "subsample_interval": 6
          },
          "data_types": [
            {
              "data_type_name": "sofar_temperature_12bits",
              "unit_type": "temperature",
              "units": "°C"
            }
          ],
          "position": 1,
          "sensor_type": {
            "display_name": "Sofar Temperature",
            "name": "sofar_tsys01"
          },
          "firmware_sha": "1e97d2c4",
          "configuration_crc": "0x5db49e4e",
          "bristlemouth_node_id": "0x9397191e2e5bab8c"
        },
        {
          "configuration": {},
          "data_types": [
            {
              "data_type_name": "rbrcoda3_meanpressure_21bits",
              "unit_type": "pressure",
              "units": "μbar"
            },
            {
              "data_type_name": "rbrcoda3_stdevpressure_15bits",
              "unit_type": "pressure",
              "units": "μbar"
            }
          ],
          "position": 2,
          "sensor_type": {
            "display_name": "RBRcoda3.D",
            "name": "rbrcoda3_depth"
          },
          "firmware_sha": "1e97d2c4",
          "configuration_crc": "0x08beb883",
          "bristlemouth_node_id": "0x6b721cca35d6e6be"
        }
      ],
      "timestamp": "2025-12-01T08:00:00.000Z"
    },
    {
      "configuration_checksum": "0xb6929687",
      "sensor_configurations": [
        {
          "configuration": {
            "sampleDurationMs": 60000,
            "sampleIntervalMs": 600000,
            "samplesPerReport": 2,
            "subsampleEnabled": 0,
            "softReadingPeriodMs": 500,
            "subsampleDurationMs": 60000,
            "subsampleIntervalMs": 300000,
            "ticksSamplingEnabled": 0,
            "transmitAggregations": 1,
            "alignmentInterval5Min": 1,
            "currentReadingPeriodMs": 60000,
            "rbrCodaReadingPeriodMs": 500,
            "turbidityReadingPeriodMs": 1000,
            "bridgePowerControllerEnabled": 1
          },
          "data_types": [],
          "position": 0,
          "sensor_type": {
            "display_name": "Spotter",
            "name": "sofar_bridge"
          },
          "firmware_sha": "1e97d2c4",
          "configuration_crc": "0x7678be55",
          "bristlemouth_node_id": "0x6b721cca35d6e6be"
        },
        {
          "configuration": {
            "sample_count": 6,
            "sample_interval": 0,
            "subsample_count": 9,
            "subsample_interval": 6
          },
          "data_types": [
            {
              "data_type_name": "sofar_temperature_12bits",
              "unit_type": "temperature",
              "units": "°C"
            }
          ],
          "position": 1,
          "sensor_type": {
            "display_name": "Sofar Temperature",
            "name": "sofar_tsys01"
          },
          "firmware_sha": "1e97d2c4",
          "configuration_crc": "0x5db49e4e",
          "bristlemouth_node_id": "0x9397191e2e5bab8c"
        },
        {
          "configuration": {
            "type_id": 2
          },
          "data_types": [
            {
              "data_type_name": "rbrcoda3_meanpressure_21bits",
              "unit_type": "pressure",
              "units": "μbar"
            },
            {
              "data_type_name": "rbrcoda3_stdevpressure_15bits",
              "unit_type": "pressure",
              "units": "μbar"
            },
            {
              "data_type_name": "rbrcoda3_meantemperature_20bits",
              "unit_type": "temperature",
              "units": "°C"
            }
          ],
          "position": 2,
          "sensor_type": {
            "display_name": "RBRcoda3 T.D",
            "name": "rbrcoda3_module1"
          },
          "firmware_sha": "1e97d2c4",
          "configuration_crc": "0xeb8308ba",
          "bristlemouth_node_id": "0xca35d6e66b721cbe"
        }
      ],
      "timestamp": "2025-12-01T08:00:00.000Z"
    }
  ]
}
```

{% endtab %}
{% endtabs %}
