# (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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sofarocean.com/~/revisions/i4w2YzZYZxcM4UMsnSvX/spotter-and-smart-mooring/smart-mooring/sensor-configuration-history.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
