For the complete documentation index, see [llms.txt](https://docs.sofarocean.com/llms.txt). This page is also available as [Markdown](https://docs.sofarocean.com/spotter-and-smart-mooring/smart-mooring/sensor-configuration-history.md).

`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](https://docs.sofarocean.com/spotter-and-smart-mooring/smart-mooring/sensor-data) 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"
}
```
