NAV
HTTP

API Reference

The DicksonOne REST API uses predictable resource-oriented URLs, accepts both JSON-encoded and form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

Please Note

Base URL

Code examples below assume that requests are being directed to endpoints for the application at a base URL. All listed request endpoints should be directed to the following domain:

https://www.dicksonone.com

Authentication

GET https://www.dicksonone.com/api/rest/users HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN

The DicksonOne API uses API keys to authenticate requests. Account Managers and Owners can manage the API keys available for their account via “Manage > API Keys”. Use of this API requires that your account have an active subscription with an appropriate level of features. If you’re interested in accessing the REST API and don’t currently have access to API Key management, please contact support@dicksonone.com to discuss upgrading your subscription.

In order to access the API, you’ll need to pass the token associated with an active API Key as a Bearer token in the Authorization header for each request.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Pagination

Due to the large number of records that can be returned with each request, DicksonOne’s REST API uses pagination to pass back records in manageable chunks.

Request

GET https://www.dicksonone.com/api/rest/locations?page[number]=2&page[size]=3 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

For API endpoints that return a collection of results, you can control which page of results you’re fetching, as well as the number of results included on each page, using the following pagination parameters.

Parameters

Name Description
page[number] The number of the page you’re requesting.
page[size] The number of results you want to receive per-page. This defaults to 25, and has a maximum value of 100.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{ 
  "data": [
    { "id": 4, "name": "Pharmaceutical Warehouse - West", "sublocation_ids": [5, 6] },
    { "id": 5, "name": "Vaccine Refrigerator A", "sublocation_ids": [] },
    { "id": 6, "name": "Vaccine Refrigerator B", "sublocation_ids": [] }
  ],
  "meta" : {
    "pagination": {
      "record_count": 7,
      "page_size": 3,
      "page_count": 3,
      "current_page": 2,
      "prev_page": 1,
      "next_page": 3
    }
  }
}

Each response for a paginated endpoint will include a set of metadata for the paginated results, in addition to the list of record data.

Fields

Name Description
data The list of record data for the current page of results.
meta[pagination][record_count] The total count of records in the collection.
meta[pagination][page_size] The number of results included per-page.
meta[pagination][page_count] The total number of results pages.
meta[pagination][current_page] The number of the current page of results.
meta[pagination][prev_page] The number of the previous page of results.
meta[pagination][next_page] The number of the next page of results.

Errors

DicksonOne uses conventional HTTP response codes to indicate the success or failure of an API request.

Success Codes

Code Description
200 The request was successful.
201 A record was created in response to the request.

Error Codes

Code Description
301 The request was made via HTTP, rather than HTTPS. You will need to attempt your request again using SSL.
400 The request’s format was invalid. This can be triggered by invalid pagination parameters.
401 No API token was supplied, or the supplied API token was invalid.
403 The user authenticated by the API token is not permitted to perform the requested action.
404 The requested record wasn’t found.
409 Your request caused a conflict with existing data. Review the list of error messages to determine how to resolve the error.
422 The requested change was rejected due to validation errors. Review the list of error messages to determine how to resolve the error.
500 A hard-error occurred on DicksonOne’s servers. If the problem persists, please report the issue to support@dicksonone.com, with as much detail as possible.
503 DicksonOne is experiencing a service outage. You can try your request again in a few moments.

Support

Dickson does not provide support for custom integrations. If you have general questions regarding access to or the functionality of the API, please email support@dicksonone.com. This code is provided “as is”, without warranty of any kind expressed or implied.

Data Loggers

View the data loggers configured for your account. Each record represents the current status of a particular environmental logger. Instead of integer IDs, loggers are thus accessed using a string token, which is maintained across logger hardware replacements.

Listing data loggers by location

Retrieve a list of the data loggers attached to a specific location. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/locations/2/devices HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/locations/:location_id/devices

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "name": "Drawer dishwasher 1",
      "token": "350811522551436413",
      "sku": "B000ALJYO2",
      "serial": "bdaad7511f83a319",
      "battery": 4.0,
      "firmware": "0.1.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 2,
        "name": "Sunroom 1",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 1,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
token

The loggers’s unique identifier. This value is maintained across logger replacements.

name

The logger’s name.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

battery

The logger’s current battery level, represented as an integer between 0 and 5. Only present for supported devices.

Listing annotations for a data logger

Retrieve a list of all annotations added to channels on a specific data logger. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/devices/635145408168665227/annotations HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices/:token/annotations

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 1,
      "content": "Cum aperiam nemo. Sit quam aut.",
      "at": "2024-01-02T16:36:55.000Z",
      "channel": {
        "id": 1,
        "uuid": "bba6d95f-7412-4489-8aa6-77cda2de6362",
        "name": "Temperature CH:1",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": null,
        "last_datapoint_at": null,
        "resource": "Channel",
        "sensor": null
      },
      "user": {
        "id": 3,
        "account_id": 3,
        "email": "braun_thu@hartmann.example",
        "full_name": "Thu Braun",
        "first_name": "Thu",
        "last_name": "Braun",
        "current_login_at": "2024-02-02T15:36:55.000Z",
        "last_login_at": "2024-02-01T16:36:55.000Z",
        "last_request_at": "2024-02-02T16:31:55.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      }
    },
    {
      "id": 2,
      "content": "Vel repudiandae nemo. Qui atque aut.",
      "at": "2024-01-19T16:36:55.000Z",
      "channel": {
        "id": 2,
        "uuid": "28be1f3b-8e87-482d-8224-b9aa972ecefb",
        "name": "Temperature CH:2",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": null,
        "last_datapoint_at": null,
        "resource": "Channel",
        "sensor": null
      },
      "user": {
        "id": 4,
        "account_id": 4,
        "email": "hessel_sanora@kuhic-schneider.test",
        "full_name": "Sanora Hessel",
        "first_name": "Sanora",
        "last_name": "Hessel",
        "current_login_at": "2024-02-02T15:36:55.000Z",
        "last_login_at": "2024-02-01T16:36:55.000Z",
        "last_request_at": "2024-02-02T16:31:55.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 2,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The annotation’s unique identifier.

content

The text content of the annotation.

at

The ISO-8601 timestamp for the annotation’s place on the channel’s timeline.

user

The data for the user that added the annotation.

channel

The data for the channel on which the annotation was added.

Listing filtered data logger annotations

Retrieve a list of annotations for the data logger matching the specified search criteria. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/devices/883197752425115374/annotations?search[after]=2023-12-29T16%3A36%3A56Z&search[before]=2024-01-12T16%3A36%3A56Z HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices/:token/annotations

Parameters

Name Description
search[after]

An ISO-8601 timestamp. Results will be filtered to annotations added after this time.

search[before]

An ISO-8601 timestamp. Results will be filtered to annotations added prior to this time.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 3,
      "content": "Et alias est. Molestias est culpa.",
      "at": "2024-01-02T16:36:56.000Z",
      "channel": {
        "id": 5,
        "uuid": "07e1fbb2-359d-4851-a23d-6f3aed81c6f9",
        "name": "Temperature CH:5",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": null,
        "last_datapoint_at": null,
        "resource": "Channel",
        "sensor": null
      },
      "user": {
        "id": 6,
        "account_id": 6,
        "email": "heidenreich_irmgard@white-sanford.example",
        "full_name": "Irmgard Heidenreich",
        "first_name": "Irmgard",
        "last_name": "Heidenreich",
        "current_login_at": "2024-02-02T15:36:56.000Z",
        "last_login_at": "2024-02-01T16:36:56.000Z",
        "last_request_at": "2024-02-02T16:31:56.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 1,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The annotation’s unique identifier.

content

The text content of the annotation.

at

The ISO-8601 timestamp for the annotation’s place on the channel’s timeline.

user

The data for the user that added the annotation.

channel

The data for the channel on which the annotation was added.

Listing account data loggers

Retrieve a list of all data loggers belonging to your account. Does not include archived or replaced loggers. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/devices HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "name": "Gas appliance 4",
      "token": "114611532048804842",
      "sku": "B000AR99QO",
      "serial": "1ba05acba2db1b02",
      "battery": 2.0,
      "firmware": "0.4.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 9,
        "name": "Lebsack Inc",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    },
    {
      "name": "Radiator (heating) 5",
      "token": "904612630398856661",
      "sku": "B000AR85S2",
      "serial": "b0afd3180f4c1280",
      "battery": 2.0,
      "firmware": "0.5.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 9,
        "name": "Lebsack Inc",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 2,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
name

The logger’s name.

token

The logger’s unique identifier. This value is maintained across logger replacements.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

battery

The logger’s current battery level, represented as an integer between 0 and 5. Only present for supported loggers.

firmware

The current version of the logger’s firmware.

last_datapoint_at

The date and time at which the logger last captured an environmental reading.

last_reported_at

The date and time at which DicksonOne last received a reading from the logger.

is_replaced

A boolean indicating whether or not the logger has been replaced.

archived_at

A date indicating if and when the logger was archived.

location

The location where this logger is being used.

Listing archived data loggers

Retrieve a list of all data loggers belonging to your account, including loggers that have been archived. This list is paginated.

Request

GET /api/rest/devices?search[include_archived]=true HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices

Parameters

Name Description
search[include_archived]

A boolean. Results will be filtered to include archived loggers if true. Defaults to false.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "name": "Micathermic heater 10",
      "token": "718517057440666337",
      "sku": "B00069TDVW",
      "serial": "7c2df92a9898b485",
      "battery": 2.0,
      "firmware": "0.10.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 10,
        "name": "Wolf-Ullrich",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    },
    {
      "name": "Water purifier 11",
      "token": "792822424913753538",
      "sku": "B000A2LQ2O",
      "serial": "a3bfc1dc662aac5a",
      "battery": 2.0,
      "firmware": "0.11.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 10,
        "name": "Wolf-Ullrich",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    },
    {
      "name": "Window fan 12",
      "token": "718517057440666337",
      "sku": "B0009QMECC",
      "serial": "01183526d801153e",
      "battery": null,
      "firmware": "0.12.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": "2024-02-02T15:36:58.000Z",
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 10,
        "name": "Wolf-Ullrich",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    },
    {
      "name": "Toaster and toaster ovens 13",
      "token": "718517057440666337",
      "sku": "B0007WHCXO",
      "serial": "6c7e1475518f5c80",
      "battery": null,
      "firmware": "0.13.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": "2024-02-02T15:36:58.000Z",
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 10,
        "name": "Wolf-Ullrich",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 4,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
name

The logger’s name.

token

The logger’s unique identifier. This value is maintained across logger replacements.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

battery

The logger’s current battery level, represented as an integer between 0 and 5. Only present for supported loggers.

firmware

The current version of the logger’s firmware.

last_datapoint_at

The date and time at which the logger last captured an environmental reading.

last_reported_at

The date and time at which DicksonOne last received a reading from the logger.

is_replaced

A boolean indicating whether or not the logger has been replaced.

archived_at

A date indicating if and when the logger was archived.

location

The location where this logger is being used.

Listing replaced data loggers

Retrieve a list of all data loggers belonging to your account, including older logger serials that have been replaced. This list is paginated.

Request

GET /api/rest/devices?search[include_replacements]=true HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices

Parameters

Name Description
search[include_replacements]

A boolean. Results will be expanded to include replaced loggers if true. Defaults to false.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "name": "Futon dryer 16",
      "token": "745219509204875927",
      "sku": "B000A6Y8AW",
      "serial": "b10d1369a406e563",
      "battery": 2.0,
      "firmware": "0.16.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 11,
        "name": "Dibbert, Muller and Mraz",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    },
    {
      "name": "Radiator (heating) 17",
      "token": "464036670718651525",
      "sku": "B000A3LC18",
      "serial": "909ae5aa70093627",
      "battery": 2.0,
      "firmware": "0.17.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 11,
        "name": "Dibbert, Muller and Mraz",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    },
    {
      "name": "Water purifier 20",
      "token": "745219509204875927",
      "sku": "B000H3HHOM",
      "serial": "6244152e7dfd0367",
      "battery": null,
      "firmware": "0.20.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": true,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 11,
        "name": "Dibbert, Muller and Mraz",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    },
    {
      "name": "Box mangle 21",
      "token": "745219509204875927",
      "sku": "B00067668W",
      "serial": "819be36402c89fcf",
      "battery": null,
      "firmware": "0.21.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": true,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 11,
        "name": "Dibbert, Muller and Mraz",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 4,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
name

The logger’s name.

token

The logger’s unique identifier. This value is maintained across logger replacements.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

battery

The logger’s current battery level, represented as an integer between 0 and 5. Only present for supported loggers.

firmware

The current version of the logger’s firmware.

last_datapoint_at

The date and time at which the logger last captured an environmental reading.

last_reported_at

The date and time at which DicksonOne last received a reading from the logger.

is_replaced

A boolean indicating whether or not the logger has been replaced.

archived_at

A date indicating if and when the logger was archived.

location

The location where this logger is being used.

Listing data loggers filtered by name

Retrieve a list of all loggers for your account matching the specified service name. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/devices?search[name]=Fridge HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices

Parameters

Name Description
search[name]

A partial name for loggers to which you want to restrict your search.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "name": "Fridge",
      "token": "535106133912410195",
      "sku": "B000HU7P92",
      "serial": "c955e9c10cd0b56a",
      "battery": 2.0,
      "firmware": "0.22.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 12,
        "name": "Kling Inc",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 1,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
name

The logger’s name.

token

The logger’s unique identifier. This value is maintained across logger replacements.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

battery

The logger’s current battery level, represented as an integer between 0 and 5. Only present for supported loggers.

firmware

The current version of the logger’s firmware.

last_datapoint_at

The date and time at which the logger last captured an environmental reading.

last_reported_at

The date and time at which DicksonOne last received a reading from the logger.

is_replaced

A boolean indicating whether or not the logger has been replaced.

archived_at

A date indicating if and when the logger was archived.

location

The location where this logger is being used.

Listing data loggers filtered by service name

Retrieve a list of all loggers for your account matching the specified service name. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/devices?search[service_name]=dicksonone.com HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices

Parameters

Name Description
search[service_name]

The name of the service that registered the loggers you want to restrict your search to.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "name": "Beverage opener 27",
      "token": "827925136541761618",
      "sku": "B000B7CC94",
      "serial": "bf329cdc13089570",
      "battery": 2.0,
      "firmware": "0.30.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "location": {
        "id": 13,
        "name": "Wilderman Inc",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 1,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
name

The logger’s name.

token

The logger’s unique identifier. This value is maintained across logger replacements.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

battery

The logger’s current battery level, represented as an integer between 0 and 5. Only present for supported loggers.

firmware

The current version of the logger’s firmware.

last_datapoint_at

The date and time at which the logger last captured an environmental reading.

last_reported_at

The date and time at which DicksonOne last received a reading from the logger.

is_replaced

A boolean indicating whether or not the logger has been replaced.

archived_at

A date indicating if and when the logger was archived.

location

The location where this logger is being used.

Fetching a specific data logger

By requesting details for a single data logger, you can see more information, including the channel metadata for that logger.

Request

GET /api/rest/devices/710936275362745493 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices/:token

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "name": "Fan heater 35",
    "token": "710936275362745493",
    "sku": "B000BNLKWS",
    "serial": "30a41eb0760b54cf",
    "battery": 3.0,
    "firmware": "0.38.0",
    "last_datapoint_at": null,
    "last_reported_at": null,
    "archived_at": null,
    "is_replaced": false,
    "resource": "Device",
    "relationships": {
      "channels": {
        "meta": {
          "count": 2
        }
      }
    },
    "channels": [
      {
        "id": 11,
        "uuid": "f8cfba3d-8d86-4ae3-b18e-83d9b3c77659",
        "name": "Temperature CH:11",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": "2024-01-12T16:37:01.000Z",
        "last_datapoint_at": "2024-02-02T16:23:01.000Z",
        "resource": "Channel",
        "sensor": null
      },
      {
        "id": 12,
        "uuid": "d90d8c72-1bec-480f-99e8-487fd1261262",
        "name": "Temperature CH:12",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": "2024-01-26T16:37:01.000Z",
        "last_datapoint_at": "2024-02-02T16:23:01.000Z",
        "resource": "Channel",
        "sensor": null
      }
    ],
    "location": {
      "id": 18,
      "name": "Feil, Turner and Padberg",
      "sublocation_ids": [

      ],
      "resource": "Location"
    }
  }
}

Fields

Name Description
token

The logger’s unique identifier. This value is maintained across logger replacements.

name

The logger’s name.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

battery

The logger’s current battery level, represented as an integer between 0 and 5. Only present for supported devices.

channels

A list of channels reporting for the logger.

location

The location where this logger is being used.

Users

View and update the users that have access to your account.

Updating with invalid attributes

Email addresses must be properly formatted, and no blank values are allowed. Attempting to set any of a user’s attributes to an invalid value will result in an error response.

Request

PATCH /api/rest/users/17 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "user": {
    "email": "not.an.email",
    "first_name": ""
  }
}

Endpoint

PATCH /api/rest/users/:id

Parameters

Name Description
user[email]

The new email address for the user.

user[first_name]

The new first name for the user.

user[last_name]

The new last name for the user.

user[locale]

The new language option for the user. Accepted inputs for setting locale include: ‘en’ (English), ‘es’ (Spanish), or ‘fr’ (French).

Response

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json; charset=utf-8

{
  "errors": [
    {
      "status": "422",
      "title": "Validation Error",
      "detail": "First name can't be blank",
      "source": {
        "pointer": "/data/attributes/first_name"
      },
      "meta": {
        "attribute": "first_name",
        "code": "blank",
        "message": "can't be blank"
      }
    }
  ]
}

Fields

Name Description
errors

A list of the errors that prevented the record from being updated.

Updating an existing user

The User’s contact attributes can be updated.

Request

PATCH /api/rest/users/19 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "user": {
    "email": "o_richelle_hara@padberg-schaefer.test",
    "first_name": "Richelle",
    "last_name": "O'Hara",
    "locale": "es"
  }
}

Endpoint

PATCH /api/rest/users/:id

Parameters

Name Description
user[email]

The new email address for the user.

user[first_name]

The new first name for the user.

user[last_name]

The new last name for the user.

user[locale]

The new language option for the user. Accepted inputs for setting locale include: ‘en’ (English), ‘es’ (Spanish), or ‘fr’ (French).

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 19,
    "account_id": 17,
    "email": "o_richelle_hara@padberg-schaefer.test",
    "full_name": "Richelle O'Hara",
    "first_name": "Richelle",
    "last_name": "O'Hara",
    "current_login_at": "2024-02-02T15:37:03.000Z",
    "last_login_at": "2024-01-31T16:37:03.000Z",
    "last_request_at": "2024-02-02T16:32:03.000Z",
    "time_zone": "America/Chicago",
    "role": null,
    "locale": "es",
    "datetime_format": "MM/DD/YYYY h:mm:ss TT"
  }
}

Fields

Name Description
id

The user’s unique identifier.

email

The user’s updated email address.

first_name

The user’s updated first name.

last_name

The user’s updated last name.

locale

The user’s configured language preference.

datetime_format

The user’s configured datetime preference. We return this in a MomentJS friendly format. You can anticipate the following specific formats: MM/DD/YYYY h:mm:ss TT, YYYY-MM-DD HH:mm:ss, YYYY-MM-DD h:mm:ssTT, MM/DD/YYYY HH:mm:ss, DD/MM/YYYY HH:mm:ss, or DD/MM/YYYY h:mm:ssTT.

Listing account users

Retrieve a list of users belonging to your account. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/users HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/users

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 20,
      "account_id": 18,
      "email": "joaquin.muller@labadie.example",
      "full_name": "Joaquin Muller",
      "first_name": "Joaquin",
      "last_name": "Muller",
      "current_login_at": "2024-02-02T15:37:03.000Z",
      "last_login_at": "2024-02-01T16:37:03.000Z",
      "last_request_at": "2024-02-02T16:37:04.000Z",
      "time_zone": "America/Chicago",
      "role": "manager",
      "locale": "en",
      "datetime_format": "MM/DD/YYYY h:mm:ss TT"
    },
    {
      "id": 21,
      "account_id": 18,
      "email": "conner.jesse.o@marvin.test",
      "full_name": "Jesse O'Conner",
      "first_name": "Jesse",
      "last_name": "O'Conner",
      "current_login_at": "2024-02-02T15:37:03.000Z",
      "last_login_at": "2024-01-26T16:37:03.000Z",
      "last_request_at": "2024-02-02T16:32:03.000Z",
      "time_zone": "America/Chicago",
      "role": null,
      "locale": "en",
      "datetime_format": "MM/DD/YYYY h:mm:ss TT"
    },
    {
      "id": 22,
      "account_id": 18,
      "email": "will_mitchell@greenfelder.test",
      "full_name": "Will Mitchell",
      "first_name": "Will",
      "last_name": "Mitchell",
      "current_login_at": "2024-02-02T15:37:04.000Z",
      "last_login_at": "2024-01-26T16:37:03.000Z",
      "last_request_at": "2024-02-02T16:32:04.000Z",
      "time_zone": "America/Chicago",
      "role": null,
      "locale": "en",
      "datetime_format": "MM/DD/YYYY h:mm:ss TT"
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 3,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The user’s unique identifier.

account_id

The unique identifier for the account to which the user belongs.

email

The user’s email address.

full_name

The user’s full name.

first_name

The user’s first name.

last_name

The user’s last name.

current_login_at

The timestamp of the user’s current login to DicksonOne.

last_login_at

The timestamp of the user’s prior login to DicksonOne.

last_request_at

The timestamp of the user’s most recent request to DicksonOne.

time_zone

The user’s configured time zone.

role

The user’s assigned role in DicksonOne.

locale

The user’s configured language preference.

datetime_format

The user’s configured datetime preference. We return this in a MomentJS friendly format. You can anticipate the following specific formats: MM/DD/YYYY h:mm:ss TT, YYYY-MM-DD HH:mm:ss, YYYY-MM-DD h:mm:ssTT, MM/DD/YYYY HH:mm:ss, DD/MM/YYYY HH:mm:ss, or DD/MM/YYYY h:mm:ssTT.

Returns information about the user performing the request

Retrieve a single record of the user that is logged in. This can be helpful in building a user profile. As long as the user has been properly authenticated, this route will tell you who they are.

Request

GET /api/rest/whoami HTTP/1.1
Authorization: Bearer RtMZRGnDHtQwEi1S2MaOQ8O3h4v56-UGASE82ozRXCU
Content-Type: application/json

Endpoint

GET /api/rest/whoami

Override Windows

Define logger configurations for the duration of an ongoing study.

Listing override windows for a device

Lists all override windows for the specified device.

Request

GET /api/rest/devices/205183531497687498/overrides HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices/:token/overrides

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 1,
      "token": "205183531497687498",
      "start_time": "2024-02-03T16:37:09.287Z",
      "end_time": "2024-02-04T16:37:09.287Z",
      "settings": {
        "temperature_display_unit": "celsius",
        "time_zone": "Central Time (US & Canada)"
      }
    }
  ]
}

Fields

Name Description
id

The override window identifier.

token

The logger’s token.

start_time

The start of the override window.

end_time

The end of the override window.

settings

The settings to be overridden during the window.

Creating an override window

Creates a new override window for the data logger.

Request

POST /api/rest/devices/281405613251666151/overrides HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "override": {
    "start_time": "2024-02-03T16:37:09Z",
    "end_time": "2024-02-04T16:37:09Z",
    "settings": {
      "device_name": "A001",
      "temperature_display_unit": "celsius",
      "time_zone": "Central Time (US & Canada)"
    }
  }
}

Endpoint

POST /api/rest/devices/:token/overrides

Parameters

Name Description
override[start_time]

The start of the override window.

override[end_time]

The end of the override window.

override[settings]

The settings to be overridden during the window.

Response

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 2,
    "token": "281405613251666151",
    "start_time": "2024-02-03T16:37:09.000Z",
    "end_time": "2024-02-04T16:37:09.000Z",
    "settings": {
      "temperature_display_unit": "celsius",
      "time_zone": "Central Time (US & Canada)",
      "device_name": "A001"
    }
  }
}

Fields

Name Description
id

The override window identifier.

token

The logger’s token.

start_time

The start of the override window.

end_time

The end of the override window.

settings

The settings to be overridden during the window.

Creating an override window with invalid attributes

The new override window cannot overlap with any existing override windows for the same device.

Request

POST /api/rest/devices/583875519404348752/overrides HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "override": {
    "start_time": "2024-02-03T16:37:10Z",
    "end_time": "2024-02-04T16:37:10Z",
    "settings": {
      "device_name": "A001",
      "temperature_display_unit": "celsius",
      "time_zone": "Central Time (US & Canada)"
    }
  }
}

Endpoint

POST /api/rest/devices/:token/overrides

Parameters

Name Description
override[start_time]

The start of the override window.

override[end_time]

The end of the override window.

override[settings]

The settings to be overridden during the window.

Response

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json; charset=utf-8

{
  "errors": [
    {
      "status": "422",
      "title": "Validation Error",
      "detail": "Must not overlap with another window",
      "source": {
        "pointer": "/data/attributes/base"
      },
      "meta": {
        "attribute": "base",
        "code": "window_overlap",
        "message": "Must not overlap with another window"
      }
    }
  ]
}

Fields

Name Description
errors

A list of the errors that prevented the override window from being created.

Updating an override window with invalid attributes

An override window cannot overlap with any existing override windows for the logger. All supplied settings for an override window are additionally validated for conformity with supported values.

Request

PATCH /api/rest/devices/529289907574176287/overrides/4 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "override": {
    "start_time": "2024-02-05T16:37:10Z",
    "end_time": "2024-02-07T16:37:10Z",
    "settings": {
      "pressure_display_unit": "N/m2"
    }
  }
}

Endpoint

PATCH /api/rest/devices/:token/overrides/:id

Parameters

Name Description
override[start_time]

The start of the override window.

override[end_time]

The end of the override window.

override[settings]

The settings to be overridden during the window.

Response

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json; charset=utf-8

{
  "errors": [
    {
      "status": "422",
      "title": "Validation Error",
      "detail": "Must not overlap with another window",
      "source": {
        "pointer": "/data/attributes/base"
      },
      "meta": {
        "attribute": "base",
        "code": "window_overlap",
        "message": "Must not overlap with another window"
      }
    },
    {
      "status": "422",
      "title": "Validation Error",
      "detail": "Pressure display unit is not included in the list",
      "source": {
        "pointer": "/data/attributes/pressure_display_unit"
      },
      "meta": {
        "attribute": "pressure_display_unit",
        "code": "inclusion",
        "message": "is not included in the list"
      }
    }
  ]
}

Fields

Name Description
errors

A list of the errors that prevented the override window from being updated.

Updating an override window

Updates the specified override window.

Request

PATCH /api/rest/devices/163837177213993836/overrides/6 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "override": {
    "start_time": "2024-02-05T16:37:11Z",
    "end_time": "2024-02-07T16:37:11Z",
    "settings": {
      "device_name": "A001",
      "temperature_display_unit": "fahrenheit",
      "time_zone": "Central Time (US & Canada)"
    }
  }
}

Endpoint

PATCH /api/rest/devices/:token/overrides/:id

Parameters

Name Description
override[start_time]

The start of the override window.

override[end_time]

The end of the override window.

override[settings]

The settings to be overridden during the window.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 6,
    "token": "163837177213993836",
    "start_time": "2024-02-05T16:37:11.000Z",
    "end_time": "2024-02-07T16:37:11.000Z",
    "settings": {
      "temperature_display_unit": "fahrenheit",
      "time_zone": "Central Time (US & Canada)",
      "device_name": "A001"
    }
  }
}

Fields

Name Description
id

The override window identifier.

token

The logger’s token.

start_time

The start of the override window.

end_time

The end of the override window.

settings

The settings to be overridden during the window.

Showing an override window

Shows the specified override window.

Request

GET /api/rest/devices/427346494795659880/overrides/7 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices/:token/overrides/:id

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 7,
    "token": "427346494795659880",
    "start_time": "2024-02-03T16:37:11.528Z",
    "end_time": "2024-02-04T16:37:11.528Z",
    "settings": {
      "temperature_display_unit": "celsius",
      "time_zone": "Central Time (US & Canada)"
    }
  }
}

Fields

Name Description
id

The override window identifier.

token

The logger’s token.

start_time

The start of the override window.

end_time

The end of the override window.

settings

The settings to be overridden during the window.

Deleting an override window

Deletes the specified override window.

Request

DELETE /api/rest/devices/592881342407024892/overrides/8 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

DELETE /api/rest/devices/:token/overrides/:id

Services

Check if a user has access to a specific service within their account.

Denied access to a service

When the the user making the request to the API does not have permission to access the relevant service location, the API will respond with a 403 Forbidden error.

Request

POST /api/rest/services HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "service": {
    "name": "External Testing Service",
    "url": "test.dicksonone.com"
  }
}

Endpoint

POST /api/rest/services

Parameters

Name Description
service[name]

The name of the service. This will be assigned to the service location.

service[url]

A unique identifier for the service.

Confirming access to a service

Confirm that the user making the request has access to the service described in the submitted metadata.

Request

POST /api/rest/services HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "service": {
    "name": "External Testing Service",
    "url": "test.dicksonone.com"
  }
}

Endpoint

POST /api/rest/services

Parameters

Name Description
service[name]

The name of the service. This will be assigned to the service location.

service[url]

A unique identifier for the service.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "name": "External Testing Service",
    "url": "test.dicksonone.com",
    "location_id": 34
  }
}

Fields

Name Description
name

The current name of the service location.

url

The unique identifier for the service.

location_id

The ID of the location the service is registered against.

Alerts

View the alerts that have been triggered by data loggers on your account. Each Alert record represents a historical event that was caused by a logger tripping the warning or excursion condition for a configured Alarm.

Listing comments for an alert

Retrieve a list of comments that have been submitted for a particular alert. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/alerts/4/comments HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/alerts/:alert_id/comments

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 1,
      "text": "Voluptatem hic cum. Eligendi eaque temporibus.",
      "created_at": "2024-02-02T16:37:13.000Z",
      "user": {
        "id": 40,
        "account_id": 31,
        "email": "boyer.dawn@boyer.example",
        "full_name": "Dawn Boyer",
        "first_name": "Dawn",
        "last_name": "Boyer",
        "current_login_at": "2024-02-02T15:37:13.000Z",
        "last_login_at": "2024-02-01T16:37:13.000Z",
        "last_request_at": "2024-02-02T16:32:13.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      }
    },
    {
      "id": 2,
      "text": "Quo praesentium distinctio. Cumque maxime sed.",
      "created_at": "2024-02-02T16:37:13.000Z",
      "user": {
        "id": 40,
        "account_id": 31,
        "email": "boyer.dawn@boyer.example",
        "full_name": "Dawn Boyer",
        "first_name": "Dawn",
        "last_name": "Boyer",
        "current_login_at": "2024-02-02T15:37:13.000Z",
        "last_login_at": "2024-02-01T16:37:13.000Z",
        "last_request_at": "2024-02-02T16:32:13.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      }
    },
    {
      "id": 3,
      "text": "Magnam facilis ea. Quo qui aut.",
      "created_at": "2024-02-02T16:37:13.000Z",
      "user": {
        "id": 40,
        "account_id": 31,
        "email": "boyer.dawn@boyer.example",
        "full_name": "Dawn Boyer",
        "first_name": "Dawn",
        "last_name": "Boyer",
        "current_login_at": "2024-02-02T15:37:13.000Z",
        "last_login_at": "2024-02-01T16:37:13.000Z",
        "last_request_at": "2024-02-02T16:32:13.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 3,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The unique identifier for this Comment record.

text

The text content of the Comment.

created_at

An ISO-8601 timestamp representing the time that the Comment was made.

user

The data for the user that submitted the Comment.

Acknowledging an alert

Mark an alert as acknowledged. The acknowledger for the alert will be set to the User associated with the API token, and the acknowledged_at timestamp will be set to the time that the request was received by the server. Attempting to acknowledge an alert that has already been acknowledged will result in a 409 Conflict response.

Request

POST /api/rest/alerts/5/acknowledgements HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

POST /api/rest/alerts/:alert_id/acknowledgements

Response

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 5,
    "description": "Temperature CH:14 is above 10.0°F",
    "type": "high_low",
    "escalation_started_at": "2024-02-02T15:07:14.000Z",
    "entered_at": "2024-02-02T15:37:14.000Z",
    "excursion_at": "2024-02-02T16:07:14.000Z",
    "returned_to_normal_at": null,
    "acknowledged_at": "2024-02-02T16:37:14.000Z",
    "relationships": {
      "comments": {
        "data": [
          {
            "type": "comment",
            "id": "4"
          }
        ],
        "meta": {
          "count": 1
        }
      }
    },
    "severity": "excursion",
    "acknowledger": {
      "id": 41,
      "account_id": 33,
      "email": "rupert_christiansen@mcclure.test",
      "full_name": "Rupert Christiansen",
      "first_name": "Rupert",
      "last_name": "Christiansen",
      "current_login_at": "2024-02-02T15:37:14.000Z",
      "last_login_at": "2024-02-01T16:37:14.000Z",
      "last_request_at": "2024-02-02T16:37:14.000Z",
      "time_zone": "America/Chicago",
      "role": "manager",
      "locale": "en",
      "datetime_format": "MM/DD/YYYY h:mm:ss TT"
    },
    "location": {
      "id": 37,
      "name": "Wolf, Kilback and Johnson",
      "sublocation_ids": [

      ],
      "resource": "Location"
    },
    "device": {
      "name": "Beverage opener 45",
      "token": "110359701660780068",
      "sku": "B00019774M",
      "serial": "866584892bffc31d",
      "battery": null,
      "firmware": "0.48.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "warnings": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        },
        "excursions": {
          "data": [
            {
              "type": "alert",
              "id": "5"
            }
          ],
          "meta": {
            "count": 1
          }
        },
        "channels": {
          "meta": {
            "count": 1
          }
        }
      }
    },
    "channel": {
      "id": 14,
      "uuid": "65c0e56b-a3a1-47bd-861a-5309cc14934b",
      "name": "Temperature CH:14",
      "type": "Temperature",
      "unit": "fahrenheit",
      "first_datapoint_at": "2024-02-02T16:37:14.000Z",
      "last_datapoint_at": "2024-02-02T16:35:14.000Z",
      "resource": "Channel",
      "sensor": null
    }
  }
}

Fields

Name Description
id

The unique identifier for this Alert record.

description

The condition which resulted in the alert.

severity

The severity of alert. Either warning or excursion.

type

The type of alert. Either not_reporting or high_low.

escalation_started_at

An ISO-8601 timestamp representing the time that DicksonOne began monitoring the alert.

entered_at

An ISO-8601 timestamp representing the time that DicksonOne initially sent notifications for the alert.

excursion_at

An ISO-8601 timestamp representing the time that the alert was promoted to an excursion.

returned_to_normal_at

An ISO-8601 timestamp representing the time that the alert was resolved.

acknowledged_at

An ISO-8601 timestamp representing the time that the alert was acknowledged.

acknowledger

The data for the user that acknowledged the alert.

location

The data for the location in which this alert took place.

device

The data for the data logger related to this alert.

channel

The data for the channel related to this alert. This will be null for logger-level (not reporting) alerts.

Adding a comment to an alert

Add a comment to a specified Alert. If the Alert was not previously acknowledged, this action will also acknowledge the alert and mark the commenter as the acknowledger.

Request

POST /api/rest/alerts/6/comments HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "comment": {
    "text": "Est ea omnis. Officiis sed voluptas. Dolores commodi eveniet."
  }
}

Endpoint

POST /api/rest/alerts/:alert_id/comments

Parameters

Name Description
comment[text]

The text content for the new Comment.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 5,
    "text": "Est ea omnis. Officiis sed voluptas. Dolores commodi eveniet.",
    "created_at": "2024-02-02T16:37:15.000Z",
    "user": {
      "id": 42,
      "account_id": 34,
      "email": "luci_heathcote@larson.example",
      "full_name": "Luci Heathcote",
      "first_name": "Luci",
      "last_name": "Heathcote",
      "current_login_at": "2024-02-02T15:37:14.000Z",
      "last_login_at": "2024-02-01T16:37:14.000Z",
      "last_request_at": "2024-02-02T16:37:15.000Z",
      "time_zone": "America/Chicago",
      "role": "manager",
      "locale": "en",
      "datetime_format": "MM/DD/YYYY h:mm:ss TT"
    }
  }
}

Fields

Name Description
id

The unique identifier for the new Comment record.

text

The text content of the Comment.

created_at

An ISO-8601 timestamp representing the time that the Comment was made.

user

The data for the user that submitted the Comment.

Listing all alerts

Retrieve a list of all historical alerts for your account. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/alerts HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/alerts

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 7,
      "description": "Temperature CH:16 is above 28.0°F",
      "type": "high_low",
      "escalation_started_at": "2024-02-02T15:07:15.000Z",
      "entered_at": "2024-02-02T15:37:15.000Z",
      "excursion_at": "2024-02-02T16:07:15.000Z",
      "returned_to_normal_at": null,
      "acknowledged_at": "2024-02-02T15:52:15.000Z",
      "relationships": {
        "comments": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        }
      },
      "severity": "excursion",
      "acknowledger": {
        "id": 44,
        "account_id": 36,
        "email": "konopelski.justin@schaden.test",
        "full_name": "Justin Konopelski",
        "first_name": "Justin",
        "last_name": "Konopelski",
        "current_login_at": "2024-02-02T15:37:15.000Z",
        "last_login_at": "2024-02-02T14:37:15.000Z",
        "last_request_at": "2024-02-02T16:32:15.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      },
      "location": {
        "id": 40,
        "name": "Beier-Carroll",
        "sublocation_ids": [

        ],
        "resource": "Location"
      },
      "device": {
        "name": "Vacuum cleaner 48",
        "token": "735729542523644928",
        "sku": "B000N5FYOE",
        "serial": "2dfe589bacc82a1d",
        "battery": null,
        "firmware": "0.51.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "warnings": {
            "data": [

            ],
            "meta": {
              "count": 0
            }
          },
          "excursions": {
            "data": [
              {
                "type": "alert",
                "id": "7"
              }
            ],
            "meta": {
              "count": 1
            }
          },
          "channels": {
            "meta": {
              "count": 1
            }
          }
        }
      },
      "channel": {
        "id": 16,
        "uuid": "a10ace40-9690-4eb2-9f1c-42dd0f8117de",
        "name": "Temperature CH:16",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": "2024-01-19T16:37:15.000Z",
        "last_datapoint_at": "2024-02-02T16:19:15.000Z",
        "resource": "Channel",
        "sensor": null
      }
    },
    {
      "id": 8,
      "description": "Temperature CH:16 is above 28.0°F",
      "type": "high_low",
      "escalation_started_at": "2024-02-02T14:37:15.000Z",
      "entered_at": "2024-02-02T15:07:15.000Z",
      "excursion_at": null,
      "returned_to_normal_at": "2024-02-02T15:37:15.000Z",
      "acknowledged_at": null,
      "relationships": {
        "comments": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        }
      },
      "severity": "warning",
      "acknowledger": null,
      "location": {
        "id": 40,
        "name": "Beier-Carroll",
        "sublocation_ids": [

        ],
        "resource": "Location"
      },
      "device": {
        "name": "Vacuum cleaner 48",
        "token": "735729542523644928",
        "sku": "B000N5FYOE",
        "serial": "2dfe589bacc82a1d",
        "battery": null,
        "firmware": "0.51.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "warnings": {
            "data": [

            ],
            "meta": {
              "count": 0
            }
          },
          "excursions": {
            "data": [
              {
                "type": "alert",
                "id": "7"
              }
            ],
            "meta": {
              "count": 1
            }
          },
          "channels": {
            "meta": {
              "count": 1
            }
          }
        }
      },
      "channel": {
        "id": 16,
        "uuid": "a10ace40-9690-4eb2-9f1c-42dd0f8117de",
        "name": "Temperature CH:16",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": "2024-01-19T16:37:15.000Z",
        "last_datapoint_at": "2024-02-02T16:19:15.000Z",
        "resource": "Channel",
        "sensor": null
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 2,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The unique identifier for this Alert record.

description

The condition which resulted in the alert.

severity

The severity of alert. Either warning or excursion.

type

The type of alert. Either not_reporting or high_low.

escalation_started_at

An ISO-8601 timestamp representing the time that DicksonOne began monitoring the alert.

entered_at

An ISO-8601 timestamp representing the time that DicksonOne initially sent notifications for the alert.

excursion_at

An ISO-8601 timestamp representing the time that the alert was promoted to an excursion.

returned_to_normal_at

An ISO-8601 timestamp representing the time that the alert was resolved.

acknowledged_at

An ISO-8601 timestamp representing the time that the alert was acknowledged.

acknowledger

The data for the user that acknowledged the alert.

location

The data for the location in which this alert took place.

device

The data for the data logger related to this alert.

channel

The data for the channel related to this alert. This will be null for logger-level (not reporting) alerts.

Listing filtered alerts

Retrieve a list of historical alerts for your account matching the specified search criteria. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/alerts?search[tokens][]=791336753169654301&search[severity]=excursion&search[started_after]=2024-02-02T13%3A37%3A17Z HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/alerts

Parameters

Name Description
search[tokens]

A list of tokens for the data loggers to which you want to restrict your search.

search[channel_ids]

A list of IDs for the channels to which you want to restrict your search.

search[location_ids]

A list of IDs for the locations to which you want to restrict your search.

search[active]

Whether to specifically include only active alerts or not. Acceptable values are false (default) or true.

search[severity]

The severity of alerts to which you want to restrict your search. Acceptable values are all (default), excursion, or warning.

search[type]

The type of alerts to which you want to restrict your search. Acceptable values are all (default), not_reporting, or high_low.

search[started_after]

An ISO-8601 timestamp. Results will be filtered to alerts triggered after this time.

search[started_before]

An ISO-8601 timestamp. Results will be filtered to alerts triggered prior to this time.

search[ended_after]

An ISO-8601 timestamp. Results will be filtered to alerts resolved after this time.

search[ended_before]

An ISO-8601 timestamp. Results will be filtered to alerts resolved prior to this time.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 11,
      "description": "Temperature CH:18 is above 65.0°F",
      "type": "high_low",
      "escalation_started_at": "2024-02-02T15:07:17.000Z",
      "entered_at": "2024-02-02T15:37:17.000Z",
      "excursion_at": "2024-02-02T16:07:17.000Z",
      "returned_to_normal_at": null,
      "acknowledged_at": "2024-02-02T15:52:17.000Z",
      "relationships": {
        "comments": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        }
      },
      "severity": "excursion",
      "acknowledger": {
        "id": 48,
        "account_id": 38,
        "email": "stokes_susy@pacocha.test",
        "full_name": "Susy Stokes",
        "first_name": "Susy",
        "last_name": "Stokes",
        "current_login_at": "2024-02-02T15:37:17.000Z",
        "last_login_at": "2024-02-02T14:37:17.000Z",
        "last_request_at": "2024-02-02T16:32:17.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      },
      "location": {
        "id": 42,
        "name": "Strosin, Simonis and Stiedemann",
        "sublocation_ids": [

        ],
        "resource": "Location"
      },
      "device": {
        "name": "Attic fan 50",
        "token": "791336753169654301",
        "sku": "B00067Q8TY",
        "serial": "24cf4e3f8547b379",
        "battery": null,
        "firmware": "0.53.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "warnings": {
            "data": [

            ],
            "meta": {
              "count": 0
            }
          },
          "excursions": {
            "data": [
              {
                "type": "alert",
                "id": "11"
              }
            ],
            "meta": {
              "count": 1
            }
          },
          "channels": {
            "meta": {
              "count": 1
            }
          }
        }
      },
      "channel": {
        "id": 18,
        "uuid": "41abd32c-dbb4-47b0-85ed-649e80e7fcef",
        "name": "Temperature CH:18",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": "2024-02-02T16:37:17.000Z",
        "last_datapoint_at": "2024-02-02T16:21:17.000Z",
        "resource": "Channel",
        "sensor": null
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 1,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The unique identifier for this Alert record.

description

The condition which resulted in the alert.

severity

The severity of alert. Either warning or excursion.

type

The type of alert. Either not_reporting or high_low.

escalation_started_at

An ISO-8601 timestamp representing the time that DicksonOne began monitoring the alert.

entered_at

An ISO-8601 timestamp representing the time that DicksonOne initially sent notifications for the alert.

excursion_at

An ISO-8601 timestamp representing the time that the alert was promoted to an excursion.

returned_to_normal_at

An ISO-8601 timestamp representing the time that the alert was resolved.

acknowledged_at

An ISO-8601 timestamp representing the time that the alert was acknowledged.

acknowledger

The data for the user that acknowledged the alert.

location

The data for the location in which this alert took place.

device

The data for the data logger related to this alert.

channel

The data for the channel related to this alert. This will be null for logger-level (not reporting) alerts.

Getting a summary of alert counts

Retrieve counts of both active and resolved alerts for your account.

Request

GET /api/rest/alerts/summary HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/alerts/summary

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "active": 1,
    "cleared": 2,
    "excursion": 1,
    "warning": 2
  },
  "meta": {
  }
}

Fields

Name Description
active

An integer count of active alert records.

cleared

An integer count of resolved alert records.

excursion

An integer count of alerts with an excursion severity.

warning

An integer count of alerts with a warning severity.

Summarizing filtered alert counts

Retrieve counts of both active and resolved alerts for your account matching the specified search criteria.

Request

GET /api/rest/alerts/summary?search[tokens][]=964322285772219108&search[severity]=warning&search[started_after]=2024-02-02T13%3A37%3A19Z HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/alerts/summary

Parameters

Name Description
search[tokens]

A list of tokens for the data loggers to which you want to restrict your search.

search[channel_ids]

A list of IDs for the channels to which you want to restrict your search.

search[location_ids]

A list of IDs for the locations to which you want to restrict your search.

search[severity]

The severity of alerts to which you want to restrict your search. Acceptable values are all (default), excursion, or warning.

search[type]

The type of alerts to which you want to restrict your search. Acceptable values are all (default), not_reporting, or high_low.

search[started_after]

An ISO-8601 timestamp. Results will be filtered to alerts triggered after this time.

search[started_before]

An ISO-8601 timestamp. Results will be filtered to alerts triggered prior to this time.

search[ended_after]

An ISO-8601 timestamp. Results will be filtered to alerts resolved after this time.

search[ended_before]

An ISO-8601 timestamp. Results will be filtered to alerts resolved prior to this time.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "active": 1,
    "cleared": 1,
    "excursion": 0,
    "warning": 2
  },
  "meta": {
  }
}

Fields

Name Description
active

An integer count of active alert records.

cleared

An integer count of resolved alert records.

excursion

An integer count of alerts with an excursion severity.

warning

An integer count of alerts with a warning severity.

Locations

View the location hierarchy for your account. Locations are structured with one root location attached directly to your account, and potentially multiple sublocations for every location.

[
  {"id": 1, "name": "Account (Root)", "sublocation_ids": [2]},
  {"id": 2, "name": "Warehouse", "sublocation_ids": []}
]

The following list might represent a simple location hierarchy for an organization monitoring a single warehouse:

In order to reconstruct the full location hierarchy from the response, you can start with the root location element (the first element in the list), and follow the sublocation_ids for that location, nesting the locations with the specified IDs beneath the root. You can then repeat this process for each sublocation, stopping when you reach a location with no sublocation_ids. Let’s look at an example for a slightly more complicated organization.

[
  {"id": 1, "name": "Account (Root)", "sublocation_ids": [2]},
  {"id": 2, "name": "Region", "sublocation_ids": [3, 4]},
  {"id": 3, "name": "Office #1", "sublocation_ids": []},
  {"id": 4, "name": "Office #2", "sublocation_ids": []}
]

The following list might represent an organization with a deeper location hierarchy, due to a high density of sensors, or sensors used for multiple purposes or applications throughout the organization:

As above, you can follow the sublocation_ids starting with the root location to reconstruct the proper hierarchy for your organization.

Fetching a specific location

By requesting details for a single location, you can see more information, including the device metadata for that location.

Request

GET /api/rest/locations/45 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/locations/:id

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 45,
    "name": "Kertzmann LLC",
    "sublocation_ids": [

    ],
    "resource": "Location",
    "devices": [
      {
        "name": "Clothes dryer 53",
        "token": "353156320171759394",
        "sku": "B0000DFH0E",
        "serial": "bdf69ecd08a4a26b",
        "battery": null,
        "firmware": "0.56.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "channels": {
            "meta": {
              "count": 1
            }
          }
        }
      },
      {
        "name": "Cold-pressed juicer 54",
        "token": "481942404288934121",
        "sku": "B000GLXHGC",
        "serial": "ad8dbd029c164975",
        "battery": null,
        "firmware": "0.57.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "channels": {
            "meta": {
              "count": 1
            }
          }
        }
      }
    ],
    "relationships": {
      "warnings": {
        "data": [

        ],
        "meta": {
          "count": 0
        }
      },
      "excursions": {
        "data": [

        ],
        "meta": {
          "count": 0
        }
      },
      "devices": {
        "meta": {
          "count": 2
        }
      }
    },
    "permission": "edit"
  }
}

Fields

Name Description
id

The location’s unique identifier.

name

The location’s name.

permission

The current user’s level of access to this location.

devices

A list of data loggers attached to this location.

sublocation_ids

A list of IDs for the locations nested beneath this one.

Listing filtered locations

Retrieve a list of all locations for your account matching the specified search criteria. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/locations?search[name]=Ruby+Office&search[ids][]=47&search[ids][]=48&search[ids][]=49 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/locations

Parameters

Name Description
search[name]

A partial name for locations to which you want to restrict your search.

search[ids]

A list of IDs for the locations to which you want to restrict your search.

Listing account locations

Retrieve a list of locations belonging to your account. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/locations HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/locations

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 51,
      "name": "Kuphal Inc",
      "sublocation_ids": [
        52,
        53
      ],
      "resource": "Location",
      "relationships": {
      },
      "permission": "edit"
    },
    {
      "id": 52,
      "name": "Porch 4",
      "sublocation_ids": [

      ],
      "resource": "Location",
      "relationships": {
        "warnings": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        },
        "excursions": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        },
        "devices": {
          "meta": {
            "count": 2
          }
        }
      },
      "permission": "edit"
    },
    {
      "id": 53,
      "name": "Kitchen 5",
      "sublocation_ids": [

      ],
      "resource": "Location",
      "relationships": {
      },
      "permission": "edit"
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 3,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The locations’s unique identifier.

name

The location’s name.

permission

The current user’s level of access to this location.

sublocation_ids

A list of IDs for the locations nested beneath this one.

Registrations

Review, claim, and register the data loggers that have reported through RF Gateways registered to your account.

Listing registration candidates

Retrieve a list of all RF data loggers that have been associated with your account. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/registrations HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/registrations

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "token": "964952893207924073",
      "name": null,
      "sku": "B000B5MVJM",
      "serial": "10384c5c8403adb2",
      "registration_code": "136973",
      "registered_at": null,
      "service_name": "dicksonone.com"
    },
    {
      "token": "966721117350068611",
      "name": null,
      "sku": "B000GPHRW8",
      "serial": "c6800d5ec9da6ed2",
      "registration_code": "163634",
      "registered_at": null,
      "service_name": "dicksonone.com"
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 2,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
token

The logger’s unique identifier.

name

The logger’s name.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

registration_code

The logger’s displayed registration code.

Registering a service logger

Register the targeted logger to your account for the specified service. This will register the logger with the requested service, and perform a modified subscription check to ensure that loggers are counted toward the limits for the correct service.

Request

POST /api/rest/devices/449524506569887519/registrations HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "device": {
    "name": "My Newly-Registered Logger",
    "service_name": "test.dicksonone.com",
    "location_id": 57
  }
}

Endpoint

POST /api/rest/devices/:token/registrations

Parameters

Name Description
device[name]

The name to give the data logger upon registration. Defaults to the logger’s serial number, if not provided.

device[service_name]

The name of the service that is registering the logger.

device[location_id]

The ID of the location to which the logger should be assigned. Defaults to the account’s root location.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "token": "449524506569887519",
    "name": "My Newly-Registered Logger",
    "sku": "B000H4CQYM",
    "serial": "dd49d74c13fd3f78",
    "registration_code": "649628",
    "registered_at": "2024-02-02T16:37:22.000Z",
    "service_name": "test.dicksonone.com"
  }
}

Fields

Name Description
token

The logger’s unique identifier.

name

The logger’s name.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

registered_at

The timestamp of the logger’s successful registration.

service_name

The name of the service that the logger is registered with. Defaults to dicksonone.com.

Registering an available logger

Register the targeted logger to your account. This will increment the number of loggers associated with your current DicksonOne subscription and allow the logger to start collecting and displaying readings data.

Request

POST /api/rest/devices/474894868417856015/registrations HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "device": {
    "name": "My Newly-Registered Logger"
  }
}

Endpoint

POST /api/rest/devices/:token/registrations

Parameters

Name Description
device[name]

The name to give the data logger upon registration. Defaults to the logger’s serial number, if not provided.

device[service_name]

The name of the service that is registering the logger.

device[location_id]

The ID of the location to which the logger should be assigned. Defaults to the account’s root location.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "token": "474894868417856015",
    "name": "My Newly-Registered Logger",
    "sku": "B00067OVMK",
    "serial": "1e3eda9a8e092942",
    "registration_code": "939493",
    "registered_at": "2024-02-02T16:37:23.000Z",
    "service_name": "dicksonone.com"
  }
}

Fields

Name Description
token

The logger’s unique identifier.

name

The logger’s name.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

registered_at

The timestamp of the logger’s successful registration.

service_name

The name of the service that the logger is registered with. Defaults to dicksonone.com.

Encountering a registration issue

Registration of available RF data loggers is contingent on the details of the active subscription for your account. In the event that a logger cannot be successfully registered to your account for any reason, the response will include information about the error encountered.

Request

POST /api/rest/devices/831774768787183062/registrations HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

POST /api/rest/devices/:token/registrations

Parameters

Name Description
device[name]

The name to give the data logger upon registration. Defaults to the logger’s serial number, if not provided.

device[service_name]

The name of the service that is registering the logger.

device[location_id]

The ID of the location to which the logger should be assigned. Defaults to the account’s root location.

Response

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json; charset=utf-8

{
  "errors": [
    {
      "status": "422",
      "title": "Validation Error",
      "detail": "You cannot add any more data loggers because your subscription has reached its maximum limit.",
      "source": {
        "pointer": "/data/attributes/base"
      },
      "meta": {
        "attribute": "base",
        "code": "over_subscription_max",
        "message": "You cannot add any more data loggers because your subscription has reached its maximum limit."
      }
    }
  ]
}

Fields

Name Description
errors

A list of the errors that prevented the logger from being registered.

Claiming additional loggers for registration

In the event that a data logger in your possession doesn’t show up in the list of registration candidates, it may be necessary to explicitly claim the logger using the registration code displayed on its screen.

This will assign the logger to your account, ensuring that it’s included in the list of registerable loggers.

Request

POST /api/rest/devices/102305/claims HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

POST /api/rest/devices/:code/claims

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "token": "147625854130828286",
    "name": null,
    "sku": "B0009PC1XA",
    "serial": "9acd0531d05a979c",
    "registration_code": "102305",
    "registered_at": null,
    "service_name": "dicksonone.com"
  }
}

Fields

Name Description
token

The logger’s unique identifier.

name

The logger’s name.

sku

The logger’s model/SKU.

serial

The logger’s serial number.

registration_code

The logger’s displayed registration code.

Searches

Search globally across the monitoring points for your account. Results are returned as an Array of objects, each listed with its resource type.

Metadata

Metadata includes pagination. For more information about interacting with paginated data, see Pagination.

{
  "data": [
    {
      "id": 1,
      "uuid": "2c619897-2fa5-4eaa-9bce-f18b4b34173b",
      "name": "Temperature CH:1",
      "type": "Temperature",
      "unit": "fahrenheit",
      "first_datapoint_at": null,
      "last_datapoint_at": null,
      "resource": "Channel"
    },
    {
      "name": "Attic fan 1",
      "token": "777297514715219033",
      "sku": "B000GTFRX0",
      "serial": "ca25e2294198245e",
      "battery": null,
      "is_replaced": false,
      "resource": "Device"
    },
    {
      "id": 2,
      "name": "Drawing Room 1",
      "sublocation_ids": [

      ],
      "resource": "Location"
    },
  ],
  "meta": {
    "pagination": {
      "record_count": 10,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Listing search results

Globally search to find matches relating to data loggers, channels, and/or locations. This list is paginated by group. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/searches?search[query]=Office HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/searches

Parameters

Name Description
search[query]

A partial name that corresponds to a channel, data logger, or location.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 32,
      "uuid": "075c8d72-fa70-4d60-b462-6ccba2793712",
      "name": "Office Door",
      "type": "Boolean",
      "unit": "boolean",
      "first_datapoint_at": "2024-01-19T16:37:26.000Z",
      "last_datapoint_at": "2024-02-02T16:23:26.000Z",
      "resource": "Channel",
      "sensor": null,
      "summary_url": "http://dps.lvh.me/datapoints/075c8d72-fa70-4d60-b462-6ccba2793712/1705682246/1706891006/summary",
      "readings_urls": [
        "http://dps.lvh.me/datapoints/075c8d72-fa70-4d60-b462-6ccba2793712/1705682246/1706891006"
      ],
      "device": {
        "name": "Fridge",
        "token": "218794125247299386",
        "sku": "B0009XDRTE",
        "serial": "0a599b99927feebd",
        "battery": null,
        "firmware": "0.76.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "channels": {
            "meta": {
              "count": 2
            }
          }
        }
      },
      "location": {
        "id": 66,
        "name": "Ruby Office",
        "sublocation_ids": [

        ],
        "resource": "Location"
      },
      "relationships": {
        "warnings": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        },
        "excursions": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        }
      }
    },
    {
      "name": "Office",
      "token": "177824573206484737",
      "sku": "B0000DGFW7",
      "serial": "c6cb7f70176b874d",
      "battery": null,
      "firmware": "0.77.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 0
          }
        }
      },
      "channels": [

      ],
      "location": {
        "id": 66,
        "name": "Ruby Office",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    },
    {
      "id": 66,
      "name": "Ruby Office",
      "sublocation_ids": [

      ],
      "resource": "Location",
      "devices": [
        {
          "name": "Fridge",
          "token": "218794125247299386",
          "sku": "B0009XDRTE",
          "serial": "0a599b99927feebd",
          "battery": null,
          "firmware": "0.76.0",
          "last_datapoint_at": null,
          "last_reported_at": null,
          "archived_at": null,
          "is_replaced": false,
          "resource": "Device",
          "relationships": {
            "channels": {
              "meta": {
                "count": 2
              }
            }
          }
        },
        {
          "name": "Office",
          "token": "177824573206484737",
          "sku": "B0000DGFW7",
          "serial": "c6cb7f70176b874d",
          "battery": null,
          "firmware": "0.77.0",
          "last_datapoint_at": null,
          "last_reported_at": null,
          "archived_at": null,
          "is_replaced": false,
          "resource": "Device",
          "relationships": {
            "channels": {
              "meta": {
                "count": 0
              }
            }
          }
        },
        {
          "name": "Garage",
          "token": "787763388559976453",
          "sku": "B0000DECN1",
          "serial": "46d0b6445b1870f2",
          "battery": null,
          "firmware": "0.78.0",
          "last_datapoint_at": null,
          "last_reported_at": null,
          "archived_at": null,
          "is_replaced": false,
          "resource": "Device",
          "relationships": {
            "channels": {
              "meta": {
                "count": 1
              }
            }
          }
        }
      ],
      "relationships": {
        "warnings": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        },
        "excursions": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        },
        "devices": {
          "meta": {
            "count": 3
          }
        }
      }
    },
    {
      "id": 67,
      "name": "Elixir Office",
      "sublocation_ids": [

      ],
      "resource": "Location",
      "devices": [

      ],
      "relationships": {
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 4,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
resource

The resource type of the search result. One of Channel, Device, or Location.

Channels

View the channels reporting for the data loggers on your account. Each Channel record represents a single stream of data coming in from a sensor plugged in to one of your environmental loggers. One sensor can potentially report multiple Channels’ worth of data to DicksonOne.

Fetching channel data

Readings data for DicksonOne is served out of a separate Datapoint Service. When you fetch information for a channel, the response includes the URLs necessary to fetch the data for that channel.

All readings data is normalized to a single unit for storage purposes (e.g., all temperature readings are stored in Fahrenheit). When you view your data in exports, reports, or the DicksonOne interface, we perform a conversion from the stored unit to the display unit configured for your logger. If you’re building a custom integration and want to see the readings values in a different unit, you’ll need to convert the raw readings data yourself.

Summary data

GET https://dps.dicksonone.com/datapoints/036390d0-f790-4cf6-b903-cc0ee63f49b7/1566364361/1566450761/summary HTTP/1.1

The summary_url for a channel gives a full summary of the data for the channel over its reporting lifetime.

Summary response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "summary":{
    "count": 289,
    "min": 13.9,
    "max": 15.1,
    "avg": 14.5764705882353,
    "mkt": 14.5800856751846,
    "min_ts": 1566385361,
    "max_ts": 1566447761,
    "unit":"f"
  }
}

Fields

Name Description
count The total number of readings submitted for the channel.
min The minimum reading value recorded for the channel.
min_ts An integer epoch timestamp representing the time of the minimum reading value.
max The maximum reading value recorded for the channel.
max_ts An integer epoch timestamp representing the time of the maximum reading value.
avg The average reading value recorded for the channel.
mkt An estimated Mean Kinetic Temperature for the channel. This is included in every summary, but only valid for Temperature channels.
unit The unit in which the readings are stored.

Readings data

GET https://dps.dicksonone.com/datapoints/036390d0-f790-4cf6-b903-cc0ee63f49b7/1566364361/1566365561 HTTP/1.1

The readings_urls for a channel lists a series of URLs for segments of data. Fetching the data at these URLs will yield all of the readings that have been recorded for the channel over its reporting lifetime.

Readings response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "records":[
    {"channel": "036390d0-f790-4cf6-b903-cc0ee63f49b7", "ts": 1566364361, "value": 14.5, "unit": "f"},
    {"channel": "036390d0-f790-4cf6-b903-cc0ee63f49b7", "ts": 1566364661, "value": 14.6, "unit": "f"},
    {"channel": "036390d0-f790-4cf6-b903-cc0ee63f49b7", "ts": 1566364961, "value": 14.8, "unit": "f"},
    {"channel": "036390d0-f790-4cf6-b903-cc0ee63f49b7", "ts": 1566365261, "value": 14.9, "unit": "f"},
    {"channel": "036390d0-f790-4cf6-b903-cc0ee63f49b7", "ts": 1566365561, "value": 14.5, "unit": "f"}
  ]
}

Fields

Name Description
channel A unique identifier used to store the readings for the channel.
ts An integer epoch timestamp representing the time that the reading was recorded.
value The reading value that was recorded by the data logger.
unit The unit in which the reading is stored.

Adding a channel annotation

Add an annotation to the specified channel, at the specified time. Any added annotations will show up when the relevant time period is rendered on a Data Logger Overview graph.

Request

POST /api/rest/channels/133/annotations HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "annotation": {
    "content": "Minus commodi sed. Sed nulla rerum. Sed et laborum.",
    "at": "2024-01-26T16:37:33Z"
  }
}

Endpoint

POST /api/rest/channels/:channel_id/annotations

Parameters

Name Description
annotation[content]

The text content to set for the new annotation.

annotation[at]

An ISO-8601 timestamp for the time relevant to the annotation.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 5,
    "content": "Minus commodi sed. Sed nulla rerum. Sed et laborum.",
    "at": "2024-01-26T16:37:33.000Z",
    "channel": {
      "id": 133,
      "uuid": "509776f4-4adb-4e82-9f98-e670facea5fc",
      "name": "Temperature CH:133",
      "type": "Temperature",
      "unit": "fahrenheit",
      "first_datapoint_at": null,
      "last_datapoint_at": null,
      "resource": "Channel",
      "sensor": null
    },
    "user": {
      "id": 64,
      "account_id": 54,
      "email": "schmeler_rachal@goodwin.example",
      "full_name": "Rachal Schmeler",
      "first_name": "Rachal",
      "last_name": "Schmeler",
      "current_login_at": "2024-02-02T15:37:33.000Z",
      "last_login_at": "2024-02-01T16:37:33.000Z",
      "last_request_at": "2024-02-02T16:37:33.000Z",
      "time_zone": "America/Chicago",
      "role": "manager",
      "locale": "en",
      "datetime_format": "MM/DD/YYYY h:mm:ss TT"
    }
  }
}

Fields

Name Description
id

The new annotation’s unique identifier.

content

The text content of the new annotation.

at

The ISO-8601 timestamp for the new annotation’s place on the channel’s timeline.

user

The data for the user that added the annotation.

Removing a channel annotation

Delete the specified annotation.

Request

DELETE /api/rest/channels/134/annotations/6 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

DELETE /api/rest/channels/:channel_id/annotations/:id

Listing account channels

Retrieve a list of all channels reporting for data loggers belonging to your account. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/channels HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/channels

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 136,
      "uuid": "7d63e121-6afa-4079-b3ff-00b25e08264c",
      "name": "Temperature CH:136",
      "type": "Temperature",
      "unit": "fahrenheit",
      "first_datapoint_at": "2024-01-12T16:37:35.000Z",
      "last_datapoint_at": "2024-02-02T16:36:35.000Z",
      "resource": "Channel",
      "sensor": null,
      "device": {
        "name": "Ceiling fan 89",
        "token": "829340296985977183",
        "sku": "B000AR9FZE",
        "serial": "534e21b8750f8d64",
        "battery": null,
        "firmware": "0.101.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "warnings": {
            "data": [
              {
                "type": "alert",
                "id": "24"
              }
            ],
            "meta": {
              "count": 1
            }
          },
          "excursions": {
            "data": [
              {
                "type": "alert",
                "id": "23"
              }
            ],
            "meta": {
              "count": 1
            }
          },
          "channels": {
            "meta": {
              "count": 1
            }
          }
        }
      },
      "location": {
        "id": 103,
        "name": "Daniel, Rolfson and Ullrich",
        "sublocation_ids": [

        ],
        "resource": "Location"
      },
      "relationships": {
        "warnings": {
          "data": [
            {
              "type": "alert",
              "id": "24"
            }
          ],
          "meta": {
            "count": 1
          }
        },
        "excursions": {
          "data": [
            {
              "type": "alert",
              "id": "23"
            }
          ],
          "meta": {
            "count": 1
          }
        }
      }
    },
    {
      "id": 137,
      "uuid": "e39383ba-342f-43b9-8494-bfa3cc2c7f11",
      "name": "Relative Humidity CH:137",
      "type": "RelativeHumidity",
      "unit": "rh",
      "first_datapoint_at": "2024-02-02T16:37:35.000Z",
      "last_datapoint_at": "2024-02-02T16:33:35.000Z",
      "resource": "Channel",
      "sensor": null,
      "device": {
        "name": "Washing machine 90",
        "token": "480261447669241673",
        "sku": "B0000AAGDL",
        "serial": "70073b1eea826eac",
        "battery": null,
        "firmware": "0.102.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "channels": {
            "meta": {
              "count": 1
            }
          }
        }
      },
      "location": {
        "id": 103,
        "name": "Daniel, Rolfson and Ullrich",
        "sublocation_ids": [

        ],
        "resource": "Location"
      },
      "relationships": {
        "warnings": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        },
        "excursions": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        }
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 2,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The channel’s unique identifier.

uuid

The channel’s identifier with the datapoint service.

name

The channel’s name.

type

The type of channel, e.g., Temperature or RelativeHumidity.

unit

The unit for readings reported to the channel, e.g., Fahrenheit or Celsius.

first_datapoint_at

The ISO-8601 timestamp of the first reading submitted to the channel.

last_datapoint_at

The ISO-8601 timestamp of the most recent reading submitted to the channel.

location

The location where this channel is being used.

device

The data logger that is associated with this channel.

Listing filtered channels

Retrieve a list of all channels for your account matching the specified search criteria. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/channels?search[name]=Temperature+CH%3A138 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/channels

Parameters

Name Description
search[name]

A partial name for channels to which you want to restrict your search.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 138,
      "uuid": "8d3876d1-0a5c-4a2b-b2f4-21b2bab36a43",
      "name": "Temperature CH:138",
      "type": "Temperature",
      "unit": "fahrenheit",
      "first_datapoint_at": "2024-02-02T16:37:35.000Z",
      "last_datapoint_at": "2024-02-02T16:33:35.000Z",
      "resource": "Channel",
      "sensor": null,
      "device": {
        "name": "Dishwasher 91",
        "token": "768412876312340194",
        "sku": "B000A70EAO",
        "serial": "c74ed3f5e4e84d68",
        "battery": null,
        "firmware": "0.103.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "warnings": {
            "data": [
              {
                "type": "alert",
                "id": "27"
              }
            ],
            "meta": {
              "count": 1
            }
          },
          "excursions": {
            "data": [
              {
                "type": "alert",
                "id": "26"
              }
            ],
            "meta": {
              "count": 1
            }
          },
          "channels": {
            "meta": {
              "count": 1
            }
          }
        }
      },
      "location": {
        "id": 104,
        "name": "Zboncak, Swift and Hudson",
        "sublocation_ids": [

        ],
        "resource": "Location"
      },
      "relationships": {
        "warnings": {
          "data": [
            {
              "type": "alert",
              "id": "27"
            }
          ],
          "meta": {
            "count": 1
          }
        },
        "excursions": {
          "data": [
            {
              "type": "alert",
              "id": "26"
            }
          ],
          "meta": {
            "count": 1
          }
        }
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 1,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The channel’s unique identifier.

uuid

The channel’s identifier with the datapoint service.

name

The channel’s name.

type

The type of channel, e.g., Temperature or RelativeHumidity.

unit

The unit for readings reported to the channel, e.g., Fahrenheit or Celsius.

first_datapoint_at

The ISO-8601 timestamp of the first reading submitted to the channel.

last_datapoint_at

The ISO-8601 timestamp of the most recent reading submitted to the channel.

location

The location where this channel is being used.

device

The data logger that is associated with this channel.

Listing annotations for a channel

Retrieve a list of all annotations added to a specific channel. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/channels/140/annotations HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/channels/:channel_id/annotations

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 7,
      "content": "Maiores eaque quia. Quos qui molestias.",
      "at": "2024-01-02T16:37:36.000Z",
      "channel": {
        "id": 140,
        "uuid": "f2fb8036-ed69-4d70-bf74-00d77f4cd2e2",
        "name": "Temperature CH:140",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": null,
        "last_datapoint_at": null,
        "resource": "Channel",
        "sensor": null
      },
      "user": {
        "id": 70,
        "account_id": 60,
        "email": "betty.farrell@cummings.test",
        "full_name": "Betty Farrell",
        "first_name": "Betty",
        "last_name": "Farrell",
        "current_login_at": "2024-02-02T15:37:36.000Z",
        "last_login_at": "2024-02-01T16:37:36.000Z",
        "last_request_at": "2024-02-02T16:32:36.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      }
    },
    {
      "id": 8,
      "content": "Est molestiae vel. Corporis qui ab.",
      "at": "2024-01-19T16:37:36.000Z",
      "channel": {
        "id": 140,
        "uuid": "f2fb8036-ed69-4d70-bf74-00d77f4cd2e2",
        "name": "Temperature CH:140",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": null,
        "last_datapoint_at": null,
        "resource": "Channel",
        "sensor": null
      },
      "user": {
        "id": 71,
        "account_id": 61,
        "email": "jasmine_kerluke@weimann-ritchie.test",
        "full_name": "Jasmine Kerluke",
        "first_name": "Jasmine",
        "last_name": "Kerluke",
        "current_login_at": "2024-02-02T15:37:36.000Z",
        "last_login_at": "2024-02-01T16:37:36.000Z",
        "last_request_at": "2024-02-02T16:32:36.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 2,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The annotation’s unique identifier.

content

The text content of the annotation.

at

The ISO-8601 timestamp for the annotation’s place on the channel’s timeline.

user

The data for the user that added the annotation.

Listing filtered annotations

Retrieve a list of annotations for the channel matching the specified search criteria. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/channels/143/annotations?search[after]=2023-12-29T16%3A37%3A38Z&search[before]=2024-01-12T16%3A37%3A38Z HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/channels/:channel_id/annotations

Parameters

Name Description
search[after]

An ISO-8601 timestamp. Results will be filtered to annotations added after this time.

search[before]

An ISO-8601 timestamp. Results will be filtered to annotations added prior to this time.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 9,
      "content": "Error ut reiciendis. Eum voluptatem quia.",
      "at": "2024-01-02T16:37:37.000Z",
      "channel": {
        "id": 143,
        "uuid": "452b9449-7a83-436e-8395-fe18c5d6d890",
        "name": "Temperature CH:143",
        "type": "Temperature",
        "unit": "fahrenheit",
        "first_datapoint_at": null,
        "last_datapoint_at": null,
        "resource": "Channel",
        "sensor": null
      },
      "user": {
        "id": 73,
        "account_id": 63,
        "email": "hegmann_tonya@mcglynn.example",
        "full_name": "Tonya Hegmann",
        "first_name": "Tonya",
        "last_name": "Hegmann",
        "current_login_at": "2024-02-02T15:37:37.000Z",
        "last_login_at": "2024-02-01T16:37:37.000Z",
        "last_request_at": "2024-02-02T16:32:37.000Z",
        "time_zone": "America/Chicago",
        "role": null,
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 1,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The annotation’s unique identifier.

content

The text content of the annotation.

at

The ISO-8601 timestamp for the annotation’s place on the channel’s timeline.

user

The data for the user that added the annotation.

Fetching a specific channel

By requesting details for a single channel, you can see more information, including URLs from which you can fetch readings and summary data for the logger.

Request

GET /api/rest/channels/146?readings[after]=2024-01-28T16%3A37%3A38Z&readings[before]=2024-01-29T16%3A37%3A38Z HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/channels/:id

Parameters

Name Description
readings[after]

An ISO-8601 timestamp. Summary and readings URLs will reflect readings captured after this time.

readings[before]

An ISO-8601 timestamp. Summary and readings URLs will reflect readings captured prior to this time.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 146,
    "uuid": "64fe70dd-ed62-470d-b6f3-ab9ce8b2c22c",
    "name": "Differential Pressure CH:146",
    "type": "DifferentialPressure",
    "unit": "inches_h2o",
    "first_datapoint_at": "2024-02-02T16:37:38.000Z",
    "last_datapoint_at": "2024-02-02T16:29:38.000Z",
    "resource": "Channel",
    "sensor": null,
    "summary_url": "http://dps.lvh.me/datapoints/64fe70dd-ed62-470d-b6f3-ab9ce8b2c22c/1706459858/1706546258/summary",
    "readings_urls": [
      "http://dps.lvh.me/datapoints/64fe70dd-ed62-470d-b6f3-ab9ce8b2c22c/1706459858/1706546258"
    ],
    "device": {
      "name": "Home server 95",
      "token": "435938382342218749",
      "sku": "B0007Z6BBA",
      "serial": "020d9558eb2ab3d3",
      "battery": null,
      "firmware": "0.107.0",
      "last_datapoint_at": null,
      "last_reported_at": null,
      "archived_at": null,
      "is_replaced": false,
      "resource": "Device",
      "relationships": {
        "channels": {
          "meta": {
            "count": 1
          }
        }
      }
    },
    "location": {
      "id": 111,
      "name": "Purdy Inc",
      "sublocation_ids": [

      ],
      "resource": "Location"
    },
    "relationships": {
      "warnings": {
        "data": [

        ],
        "meta": {
          "count": 0
        }
      },
      "excursions": {
        "data": [

        ],
        "meta": {
          "count": 0
        }
      }
    }
  }
}

Fields

Name Description
id

The channel’s unique identifier.

uuid

The channel’s identifier with the datapoint service.

name

The channel’s name.

type

The type of channel, e.g., Temperature or RelativeHumidity.

unit

The unit for readings reported to the channel, e.g., Fahrenheit or Celsius.

first_datapoint_at

The ISO-8601 timestamp of the first reading submitted to the channel.

last_datapoint_at

The ISO-8601 timestamp of the most recent reading submitted to the channel.

summary_url

A URL from which to fetch a summary of the recent readings data for the channel.

readings_urls

A list of URLs from which to fetch readings data.

location

The location where this channel is being used.

device

The data logger that is associated with this channel.

Listing channels by data logger

Retrieve a list of the channels reporting for a specific logger. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/devices/607640782512771364/channels HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/devices/:token/channels

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 147,
      "uuid": "f4e1b02d-0247-45b3-b0ee-608009d0b729",
      "name": "Temperature CH:147",
      "type": "Temperature",
      "unit": "fahrenheit",
      "first_datapoint_at": "2024-01-26T16:37:39.000Z",
      "last_datapoint_at": "2024-02-02T16:19:39.000Z",
      "resource": "Channel",
      "sensor": {
        "id": 1,
        "serial": "360-12-2590",
        "model": "Stronghold",
        "factory_calibration_date": "2023-07-10T00:00:00.000Z",
        "user_calibration_date": "2023-08-02T00:00:00.000Z",
        "created_at": "2024-02-02T16:37:39.000Z",
        "updated_at": "2024-02-02T16:37:39.000Z"
      },
      "device": {
        "name": "Blender 96",
        "token": "607640782512771364",
        "sku": "B000GLXHGC",
        "serial": "0629e30b5a374ef9",
        "battery": null,
        "firmware": "0.108.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "channels": {
            "meta": {
              "count": 1
            }
          }
        }
      },
      "location": {
        "id": 112,
        "name": "Gorczany, Wilkinson and Kessler",
        "sublocation_ids": [

        ],
        "resource": "Location"
      },
      "relationships": {
        "warnings": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        },
        "excursions": {
          "data": [

          ],
          "meta": {
            "count": 0
          }
        }
      }
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 1,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The channel’s unique identifier.

uuid

The channel’s identifier with the datapoint service.

name

The channel’s name.

type

The type of channel, e.g., Temperature or RelativeHumidity.

unit

The unit for readings reported to the channel, e.g., Fahrenheit or Celsius.

first_datapoint_at

The ISO-8601 timestamp of the first reading submitted to the channel.

last_datapoint_at

The ISO-8601 timestamp of the most recent reading submitted to the channel.

device

The data logger that is associated with this channel.

sensor

The sensor that is associated with this channel.

Updating a channel annotation

Update the specified annotation with new content or a modified timestamp.

Request

PATCH /api/rest/channels/149/annotations/11 HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

{
  "annotation": {
    "content": "Odio minus explicabo. Illo ut aliquam. Quae earum ipsum."
  }
}

Endpoint

PATCH /api/rest/channels/:channel_id/annotations/:id

Parameters

Name Description
annotation[content]

The new text content to set for the new annotation.

annotation[at]

An updated ISO-8601 timestamp for the annotation.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": {
    "id": 11,
    "content": "Odio minus explicabo. Illo ut aliquam. Quae earum ipsum.",
    "at": "2024-02-02T16:37:40.000Z",
    "channel": {
      "id": 149,
      "uuid": "5df552f3-05da-47a8-9de8-7d61743c793a",
      "name": "Temperature CH:149",
      "type": "Temperature",
      "unit": "fahrenheit",
      "first_datapoint_at": null,
      "last_datapoint_at": null,
      "resource": "Channel",
      "sensor": null
    },
    "user": {
      "id": 78,
      "account_id": 68,
      "email": "bradtke.conrad@braun-bergstrom.example",
      "full_name": "Conrad Bradtke",
      "first_name": "Conrad",
      "last_name": "Bradtke",
      "current_login_at": "2024-02-02T15:37:40.000Z",
      "last_login_at": "2024-02-01T16:37:40.000Z",
      "last_request_at": "2024-02-02T16:32:40.000Z",
      "time_zone": "America/Chicago",
      "role": null,
      "locale": "en",
      "datetime_format": "MM/DD/YYYY h:mm:ss TT"
    }
  }
}

Fields

Name Description
id

The annotation’s unique identifier.

content

The updated text content of the annotation.

at

The updated ISO-8601 timestamp for the annotation.

user

The data for the user that added the annotation.

Events

View the event logs for your account. Each record represents an event that took place on the account. Events can take multiple formats.

Supported event types

There are multiple types of activity captured in the event logs for an account. The type of activity is exposed in the type field in each response, and the list of events can be filtered by supplying one of these values for the search[type] parameter.

Name Description
Account Activity tied to registration of an account, or settings updates.
Alarm Activity tied to the creation, update, or triggering of alarms.
Annotation Activity tied to the creation, update, or removal of channel annotations.
ApiKey Activity tied to the generation and revocation of API keys.
Contact Activity tied to the creation or modification of user/contact information.
Device Activity tied to the registration of a data logger or update of logger settings.
EscalationPolicy Activity tied to the creation or update of notification policies on the account.
Export Activity tied to generation of account, data logger, or equipment exports for the account.
Location Activity tied to the management of Locations on the account.
Report Activity tied to the creation, update, or generation of a report.
Subscription Activity tied to redemption or update of a Subscription for the account.
TemplateGroup Activity tied to the creation or update of an alarm template.

Listing all events

Retrieve a list of all events for your account, in reverse chronological order. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/events HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/events

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 10,
      "message": "Data Logger setting(s) updated:\n  - Temperature Display Unit changed to \"°C\" from \"°F\"",
      "created_at": "2024-02-02T16:07:40.000Z",
      "type": "Device",
      "user": {
        "id": 79,
        "account_id": 69,
        "email": "block_donn@crona.test",
        "full_name": "Donn Block",
        "first_name": "Donn",
        "last_name": "Block",
        "current_login_at": "2024-02-02T15:37:40.000Z",
        "last_login_at": "2024-02-01T16:37:40.000Z",
        "last_request_at": "2024-02-02T16:37:40.000Z",
        "time_zone": "America/Chicago",
        "role": "manager",
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      },
      "device": {
        "name": "Domestic robot 98",
        "token": "751813296801580662",
        "sku": "B000A2O26G",
        "serial": "caf2d4dab2224e55",
        "battery": null,
        "firmware": "0.110.0",
        "last_datapoint_at": null,
        "last_reported_at": null,
        "archived_at": null,
        "is_replaced": false,
        "resource": "Device",
        "relationships": {
          "channels": {
            "meta": {
              "count": 0
            }
          }
        }
      },
      "location": {
        "id": 115,
        "name": "Goyette-Johnson",
        "sublocation_ids": [

        ],
        "resource": "Location"
      }
    },
    {
      "id": 9,
      "message": "Logged In",
      "created_at": "2024-02-02T15:47:40.000Z",
      "type": "User",
      "user": {
        "id": 79,
        "account_id": 69,
        "email": "block_donn@crona.test",
        "full_name": "Donn Block",
        "first_name": "Donn",
        "last_name": "Block",
        "current_login_at": "2024-02-02T15:37:40.000Z",
        "last_login_at": "2024-02-01T16:37:40.000Z",
        "last_request_at": "2024-02-02T16:37:40.000Z",
        "time_zone": "America/Chicago",
        "role": "manager",
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      },
      "device": null,
      "location": null
    },
    {
      "id": 8,
      "message": "Failed Login Attempt",
      "created_at": "2024-02-02T15:37:40.000Z",
      "type": "User",
      "user": {
        "id": 79,
        "account_id": 69,
        "email": "block_donn@crona.test",
        "full_name": "Donn Block",
        "first_name": "Donn",
        "last_name": "Block",
        "current_login_at": "2024-02-02T15:37:40.000Z",
        "last_login_at": "2024-02-01T16:37:40.000Z",
        "last_request_at": "2024-02-02T16:37:40.000Z",
        "time_zone": "America/Chicago",
        "role": "manager",
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      },
      "device": null,
      "location": null
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 3,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The unique identifier for this Event record.

message

A description of the event that took place.

type

The type of event.

created_at

An ISO-8601 timestamp representing the time that the event took place.

user

The data for the user responsible for this event.

device

The data for the data logger related to this event.

location

The data for the location related to this event.

Listing filtered events

Retrieve a list of all events for your account matching the specified search criteria. This list is paginated. For more information about interacting with paginated data, see Pagination.

Request

GET /api/rest/events?search[user_ids][]=80&search[type][]=Contact HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/events

Parameters

Name Description
search[tokens]

A list of tokens for the data loggers to which you want to restrict your search.

search[user_ids]

A list of IDs for the users to which you want to restrict your search.

search[location_ids]

A list of IDs for the locations containing data loggers to which you want to restrict your search.

search[type]

The type(s) of event to which you want to restrict your search. See above for acceptable values.

search[after]

An ISO-8601 timestamp. Results will be filtered to events that took place after this time.

search[before]

An ISO-8601 timestamp. Results will be filtered to events that took place prior to this time.

Response

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": [
    {
      "id": 12,
      "message": "Logged In",
      "created_at": "2024-02-02T15:47:41.000Z",
      "type": "User",
      "user": {
        "id": 80,
        "account_id": 70,
        "email": "kunze.bettye@heller.example",
        "full_name": "Bettye Kunze",
        "first_name": "Bettye",
        "last_name": "Kunze",
        "current_login_at": "2024-02-02T15:37:41.000Z",
        "last_login_at": "2024-02-01T16:37:41.000Z",
        "last_request_at": "2024-02-02T16:37:41.000Z",
        "time_zone": "America/Chicago",
        "role": "manager",
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      },
      "device": null,
      "location": null
    },
    {
      "id": 11,
      "message": "Failed Login Attempt",
      "created_at": "2024-02-02T15:37:41.000Z",
      "type": "User",
      "user": {
        "id": 80,
        "account_id": 70,
        "email": "kunze.bettye@heller.example",
        "full_name": "Bettye Kunze",
        "first_name": "Bettye",
        "last_name": "Kunze",
        "current_login_at": "2024-02-02T15:37:41.000Z",
        "last_login_at": "2024-02-01T16:37:41.000Z",
        "last_request_at": "2024-02-02T16:37:41.000Z",
        "time_zone": "America/Chicago",
        "role": "manager",
        "locale": "en",
        "datetime_format": "MM/DD/YYYY h:mm:ss TT"
      },
      "device": null,
      "location": null
    }
  ],
  "meta": {
    "pagination": {
      "record_count": 2,
      "page_size": 25,
      "page_count": 1,
      "current_page": 1,
      "prev_page": null,
      "next_page": null
    }
  }
}

Fields

Name Description
id

The unique identifier for this Event record.

message

A description of the event that took place.

type

The type of event.

created_at

An ISO-8601 timestamp representing the time that the event took place.

user

The data for the user responsible for this event.

device

The data for the data logger related to this event.

location

The data for the location related to this event.

Searching for an invalid event type

Attempting to filter the list of results with an unsupported search[type] (see above for the list of supported types) will result in a 400 error.

Request

GET /api/rest/events?search[type]=Other HTTP/1.1
Authorization: Bearer YOUR-API-TOKEN
Content-Type: application/json

Endpoint

GET /api/rest/events

Parameters

Name Description
search[tokens]

A list of tokens for the data loggers to which you want to restrict your search.

search[user_ids]

A list of IDs for the users to which you want to restrict your search.

search[location_ids]

A list of IDs for the locations containing data loggers to which you want to restrict your search.

search[type]

The type(s) of event to which you want to restrict your search. See above for acceptable values.

search[after]

An ISO-8601 timestamp. Results will be filtered to events that took place after this time.

search[before]

An ISO-8601 timestamp. Results will be filtered to events that took place prior to this time.

Response

HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8

{
  "errors": [
    "The requested type (Other) is not supported."
  ]
}

Fields

Name Description
errors

A description of the error that prevented the search.