DeviceConfig Api Question

According to this documentation, https://doc.developer.milestonesys.com/mipvmsapi/api/config-rest/v1/#tag/DeviceConfig/operation/getAllsettingsInAcameras, “edgeStorageSupported” is typed as a boolean. However, when we call the API endpoint GET https://{domain}/api/rest/v1/cameras/{camera_id}/settings, on Milestone versions 24.2.3, 25.2.1, and 2025.3.1, the responses all returned "edgeStorageSupported": "False" (string). There was one case for a customer on 2024 R2 where the API returned a JSON boolean true.

We are just looking for clarification on what the correct variable type should be.

We have done some testing internally at Milestone and can reproduce your observations. I have reported this as a bug with Milestone Development, and I will post the feedback here.

Noteworthy observation from the internal testing…

GET /api/rest/v1/cameras/{camera_id}/settings

Returns the Boolean as string

GET /api/rest/v1/cameras/{camera_ id}

Returns Boolean

Getting /API/rest/v1/cameras/{id}/settings returns all settings as they are defined for the particular camera type. Therefore, the returned set of settings may vary per camera type, and settings with the same name may, in theory, have different value types across camera types.

For all camera types we have investigated, the edgeStorageSupported property is defined as an enum (string) with "True" and "False" as the possible values.

To determine how individual properties are defined, add the definitions parameter to the request:

  • definitions: get definition of object (including task) parameters

This is documented here:

Example:

/API/rest/v1/cameras/{id}/settings?definitions

The response may look like the example below. Notice the difference between:

  • ptzEnabled, which is a real boolean ("valueType": "bool")
  • edgeStorageSupported, which is an enum ("valueType": "enum")
{
  "array": [
    {
      "displayName": "Settings",
      "ptz": {
        "displayName": "Pan-Tilt-Zoom",
        "ptzEnabled": false
      },
      "stream": [
        {
          "displayName": "Video stream 1",
          "edgeStorageSupported": "True"
        }
      ]
    }
  ],
  "definitions": [
    {
      "ptz": {
        "ptzEnabled": {
          "canSet": true,
          "valueType": "bool",
          "translationId": "969b7199-ee1f-4ebf-9c44-65894963eac2"
        }
      },
      "stream": [
        {
          "edgeStorageSupported": {
            "canSet": false,
            "hidden": true,
            "options": [
              {
                "value": "True",
                "displayName": "true",
                "translationId": "d4823f08-f51e-4ff0-b16b-b58fbbb84405"
              },
              {
                "value": "False",
                "displayName": "false",
                "translationId": "7d22c838-6f15-4d37-8381-67810041507a"
              }
            ],
            "valueType": "enum",
            "translationId": "f86c7224-b336-4024-82ab-76d698e5c448"
          }
        }
      ]
    }
  ]
}

The online documentation currently states:

edgeStorageSupported
Boolean
Edge storage support

However, this is not correct based on all examined camera types. In every case investigated, the property is declared as an enum with the possible values "True" and "False" rather than as a boolean.

Documentation link:
Config REST API - Object model and URIs