Users
This is the user who owns and/or operates one or many locations (e.g. ABC Pty Ltd.)
| API | Description |
|---|---|
| DELETE api/Users/{id} |
Delete a User if you have the permissions to do so |
| DELETE api/Users?username={username} |
Delete a User if you have the permissions to do so |
| GET api/Users |
Gets all Users you have access to. |
| GET api/Users/{id} |
Gets a specific user by integer ID |
| GET api/Users/Logs?clientID={clientID}&descending={descending} |
Retrieve Check-In/Check-Out Logs, based on the input client |
| GET api/Users/Logs?descending={descending} |
Retrieve Check-In/Check-Out Logs, based on the current user |
| GET api/Users/Logs?username={username}&descending={descending} |
Retrieve Check-In/Check-Out Logs, based on the input username |
| GET api/Users?clientID={clientID} |
Get all Users under a specific Client ID |
| GET api/Users?username={username} |
Get a specific User by username |
| POST api/Users |
Create User |
| PUT api/Users |
Update user |
| PUT api/Users/CheckIn |
User Check-In |
| PUT api/Users/CheckOut |
User Check-Out |
Clients
This is the client who owns and/or operates one or many locations (e.g. ABC Pty Ltd.)
| API | Description |
|---|---|
| DELETE api/Clients/{id} |
Delete a Client if you are a System Admin |
| GET api/Clients/{id}?subLevels={subLevels}&includeLatestReadings={includeLatestReadings} |
Get a specific Client by ID |
| GET api/Clients/SubClients?id={id}&subLevels={subLevels} |
Gets all of the SubClients for a specified Client |
| GET api/Clients?subLevels={subLevels}&includeLatestReadings={includeLatestReadings} |
Gets all Clients you have access to. |
| POST api/Clients |
Create a new Client |
| PUT api/Clients/Archive?id={id}&minimumLogsToArchive={minimumLogsToArchive} |
Performs the Log Archival process on this object and all child objects |
| PUT api/Clients?subLevels={subLevels} |
Update client |
Locations
This is the general location of one or more networks (e.g. Cattle station 1 or base hospital)Details of the location are stored here.
| API | Description |
|---|---|
| GET api/Locations/{id}?subLevels={subLevels}&includeLatestReadings={includeLatestReadings} |
Get a specific Location by ID |
| GET api/Locations?subLevels={subLevels}&includeLatestReadings={includeLatestReadings} |
Gets all Locations you have access to. |
| POST api/Locations |
Creates a new location |
| PUT api/Locations |
Update Location |
| PUT api/Locations/Archive?id={id}&minimumLogsToArchive={minimumLogsToArchive} |
Performs the Log Archival process on this object and all child objects |
Networks
This is the network at a particular location which may have 1 or more DataNodes operating from that network.A network has a Gateway DataNode (with attached Comms Interface and other equipment) that handles all communications to and from the other DataNodes in the network.A particular network might consist of one or more actual boxes with the capability to communicate with the other boxes on the network.
DataNodes
A DataNode is a collection of devices (e.g. An irrigation DataNode may have pumps, valves, and meters)This is the hardware that the actual devices connect to.
Devices
A device is an abstract object that represents the basic info about physical devices, such as sensors, pumps, valves, etc.The individual devices are physically connected to the DataNode and the DataNode is configured to handle this type of device.
| API | Description |
|---|---|
| DELETE api/Devices/{id} |
Delete a ConnectedDevice if you have the Credentials to do so |
| DELETE api/Devices/Logs |
Used to delete the Device Log that matches the input Integer ID |
| GET api/Devices/{id}?includeLatestReading={includeLatestReading}&includeProperties={includeProperties} |
Get a specific Device by ID |
| GET api/Devices/Controllable?includeLatestReading={includeLatestReading}&includeProperties={includeProperties} |
Gets all Devices you have access to that are controllable |
| GET api/Devices/Logs?id={id}&numberOfEntries={numberOfEntries}&startDate={startDate}&endDate={endDate}&includeNR={includeNR}&includeDeviceProperties={includeDeviceProperties} |
Returns a log of readings for the specified device, for the specified DateTimes. Note: Always expects a time value. i.e. if an end date of 2017-01-01 with no time is given, 00:00:00 of 2017-01-01 will be assumed and data from prior to this point in time will be returned. For a start date, the same assumption applies, and data after this point will be returned. |
| GET api/Devices/Logs?ids[0]={ids[0]}&ids[1]={ids[1]}&numberOfEntries={numberOfEntries}&startDate={startDate}&endDate={endDate}&includeNR={includeNR}&includeDeviceProperties={includeDeviceProperties} |
Returns a log of readings for the specified device, for the specified DateTimes. Note: Always expects a time value. i.e. if an end date of 2017-01-01 with no time is given, 00:00:00 of 2017-01-01 will be assumed and data from prior to this point in time will be returned. For a start date, the same assumption applies, and data after this point will be returned. |
| GET api/Devices/Schedulable?includeLatestReading={includeLatestReading}&includeProperties={includeProperties} |
Gets all Devices you have access to that are schedulable |
| GET api/Devices?includeLatestReading={includeLatestReading}&includeProperties={includeProperties} |
Gets all Devices you have access to. |
| POST api/Devices |
Creates a new Device |
| POST api/Devices/{id}/Reading |
Posts a new Reading for the input Device ID |
| POST api/Devices/Logs/Bulk |
Used to post bulk Device logs. This must be done with the body of the call set to form-data.Data must be supplied in an appropriately formatted text file with the key "data". The file must be less than 5 MB.Log mapping information must be supplied as a Base64-encoded JSON Body based on with the key "mapping".Optionally a DateTime Offset may be provided with the key "offset", with the format of hh:mm:ss.This is to be used by System Administrators only |
| POST api/Devices?decimalPlaces={decimalPlaces} |
Converts the stored info to info for sending via API |
| PUT api/Devices |
Update the information for one particular Device |
| PUT api/Devices/DisableBandActions/{id} |
Disables Band Actions on the device indicated by the provided ID |
| PUT api/Devices/EnableBandActions/{id} |
Enables Band Actions on the device indicated by the provided ID |
| PUT api/Devices/Logs |
No documentation available. |
| PUT api/Devices/RequestReading?ids[0]={ids[0]}&ids[1]={ids[1]} |
Request that a reading be taken of the physical device and the records updated as soon as possible. NOTE: the returned details may or may not contain the readings that have been requested. Check reading date/time |
| PUT api/Devices/Set?ids[0]={ids[0]}&ids[1]={ids[1]}&values[0]={values[0]}&values[1]={values[1]} |
If possible, set the analog output on the Devices passed in via IDs, to the values provided, in respective order |
| PUT api/Devices/TurnOff?ids[0]={ids[0]}&ids[1]={ids[1]} |
If possible, turn off Devices by passed in IDs |
| PUT api/Devices/TurnOn?ids[0]={ids[0]}&ids[1]={ids[1]} |
If possible, turn on Devices by passed in IDs |
| PUT api/Devices?ids[0]={ids[0]}&ids[1]={ids[1]} |
Request that a reading be taken of the physical device and the records updated as soon as possible. NOTE: the returned details may or may not contain the readings that have been requested. Check reading date/time |
CalculatedDevices
A Calculated Device represents a Device that is calculated/devised based on a number of other devices.For example, this can represent the Sum of multiple Connected Devices, the Average, or even the difference over a specified time scale.
| API | Description |
|---|---|
| DELETE api/CalculatedDevices/{id} |
Delete a CalculatedDevice if you have the Credentials to do so |
| DELETE api/CalculatedDevices/Logs |
Used to delete the CalculatedDevice Log that matches the input Integer ID |
| GET api/CalculatedDevices/{id}?subLevels={subLevels}&includeLatestReading={includeLatestReading}&includeDeviceProperties={includeDeviceProperties} |
Get a specific CalculatedDevice by ID |
| GET api/CalculatedDevices/Logs?id={id}&numberOfEntries={numberOfEntries}&startDate={startDate}&endDate={endDate}&includeNR={includeNR}&includeDeviceProperties={includeDeviceProperties} |
Returns a log of readings for the specified Calculated Device, for the specified DateTimes. Note: Always expects a time value. i.e. if an end date of 2017-01-01 with no time is given, 00:00:00 of 2017-01-01 will be assumed and data from prior to this point in time will be returned. For a start date, the same assumption applies, and data after this point will be returned. |
| GET api/CalculatedDevices/Logs?ids[0]={ids[0]}&ids[1]={ids[1]}&numberOfEntries={numberOfEntries}&startDate={startDate}&endDate={endDate}&includeNR={includeNR}&includeDeviceProperties={includeDeviceProperties} |
Returns a log of readings for the specified device, for the specified DateTimes. Note: Always expects a time value. i.e. if an end date of 2017-01-01 with no time is given, 00:00:00 of 2017-01-01 will be assumed and data from prior to this point in time will be returned. For a start date, the same assumption applies, and data after this point will be returned. |
| GET api/CalculatedDevices?calculatedDeviceType={calculatedDeviceType}&subLevels={subLevels}&includeLatestReading={includeLatestReading}&includeDeviceProperties={includeDeviceProperties} |
Get all CalculatedDevices you have access to, by CalculatedDevice type |
| GET api/CalculatedDevices?category={category}&subLevels={subLevels}&includeLatestReading={includeLatestReading}&includeDeviceProperties={includeDeviceProperties} |
Get CalculatedDevices by Category |
| GET api/CalculatedDevices?subLevels={subLevels}&includeLatestReading={includeLatestReading}&includeDeviceProperties={includeDeviceProperties} |
Gets all CalculatedDevices you have access to. |
| POST api/CalculatedDevices |
Creates a new CalculatedDevice |
| POST api/CalculatedDevices/{id}/Reading?includeDeviceProperties={includeDeviceProperties} |
Posts a new Reading for the input CalculatedDevice ID |
| PUT api/CalculatedDevices |
Update the information for a specific CalculatedDevice |
| PUT api/CalculatedDevices/BackCalculate/{id}?startDate={startDate}&endDate={endDate}&overwriteExisting={overwriteExisting}&includeDeviceProperties={includeDeviceProperties}&evaluateReliantDevices={evaluateReliantDevices} |
Handles back-calculating readings for a specified Calculated Device (covering a date range specified by the inputs) and returns the new readings.Note: This will cache and return all new readings at the end of the call, which can have a high impact on memory usage. If back-calculating data over a large span of time, consider using BackCalculate2. |
| PUT api/CalculatedDevices/BackCalculate2/{id}?startDate={startDate}&endDate={endDate}&overwriteExisting={overwriteExisting}&includeDeviceProperties={includeDeviceProperties}&evaluateReliantDevices={evaluateReliantDevices} |
Handles back-calculating readings for a specified Calculated Device (covering a date range specified by the inputs) and returns the number of new readings made.Note: It is recommended to use this if back-calculating a large quantity of data. This does not return the new readings in the response, only the number of new readings made. If back-calculating data over a small span of time or the results are desired, consider using BackCalculate. |
| PUT api/CalculatedDevices/DisableBandActions/{id} |
Disables Band Actions on the device indicated by the provided ID |
| PUT api/CalculatedDevices/EnableBandActions/{id} |
Enables Band Actions on the device indicated by the provided ID |
| PUT api/CalculatedDevices/Logs |
No documentation available. |
| PUT api/CalculatedDevices/StartBackCalculate/{id}?startDate={startDate}&endDate={endDate}&overwriteExisting={overwriteExisting}&includeDeviceProperties={includeDeviceProperties} |
Handles starting the process of back-calculating readings for a specified Calculated Device (covering a date range specified by the inputs). Calling this endpoint will have it return immediately to notify if the process has started or not.Note: It is recommended to use this if back-calculating a large quantity of data. This does not return the new readings in the response, only the number of new readings made. If back-calculating data over a small span of time or the results are desired, consider using BackCalculate. |
ConfiguredAlert
Controller for the alert page
| API | Description |
|---|---|
| GET api/ConfiguredAlert |
Gets all Alerts you have access to |
| GET api/ConfiguredAlert/{id} |
Gets an ConfiguredAlert by id |
| POST api/ConfiguredAlert |
Creates a new instance of an ConfiguredAlert in the database. |
| PUT api/ConfiguredAlert |
Update an existing ConfiguredAlert in the database. |
Alert
Controller for the alert page
| API | Description |
|---|---|
| GET api/Alert |
Gets all Alerts you have access to |
| GET api/Alert/{id} |
Gets an Alert by Guid ID |
| GET api/Alert/GetByFilter?alertType={alertType}&message={message}&isSent={isSent}&requiresAcknowledgement={requiresAcknowledgement}&acknowledgedDate={acknowledgedDate}&category={category}&subCategory={subCategory} |
GET: Alerts |
| GET api/Alert/Subscriptions |
Gets the Alert Subscriptions for the filtered user (if applicable) or otherwise the current user |
| GET api/Alert/Subscriptions/{id} |
Gets an Alert Subscription by ID |
| GET api/Alert/UnacknowledgedAlerts |
Retrieves a list of all Unacknowledged Alerts for the filtered user (if applicable) or otherwise the current user |
| POST api/Alert |
Creates a new instance of an Alert in the database. |
| POST api/Alert/Acknowledge |
Acknowledges any number of Alerts based on the input details provided within |
| POST api/Alert/Acknowledge/{id} |
Acknowledges (Resets) the Alert that matches the input ID. This clears the Alert and allows the alert to trigger again. |
| POST api/Alert/Ignore/{id} |
Ignores the Alert that matches the input ID. This keeps the Alert active but flags it as ignored |
AlertSubscriptions
Controller for Alert Subscriptions
| API | Description |
|---|---|
| DELETE api/AlertSubscriptions/{id} |
Delete an AlertSubscription if you have the Credentials to do so |
| GET api/AlertSubscriptions |
Gets all Alert Subscriptions you have access to. |
| GET api/AlertSubscriptions/{id} |
Gets all Alert Subscriptions you have access to. |
| GET api/AlertSubscriptions?username={username} |
Gets all Alert Subscriptions by Username. |
| POST api/AlertSubscriptions |
Creates a new instance of an AlertSubscription in the database. |
| PUT api/AlertSubscriptions |
Update AlertSubscription |
| PUT api/AlertSubscriptions/Disable?ids[0]={ids[0]}&ids[1]={ids[1]} |
Enables a number of Alert Subscriptions by Integer ID determined by the input array |
| PUT api/AlertSubscriptions/DisableAll?username={username} |
Disables all Alert Subscriptions for the input username, if allowed |
| PUT api/AlertSubscriptions/Enable?ids[0]={ids[0]}&ids[1]={ids[1]} |
Enables a number of Alert Subscriptions by Integer ID determined by the input array |
| PUT api/AlertSubscriptions/EnableAll?username={username} |
Enables all Alert Subscriptions for the input username, if allowed |
Groups
This is an abstract structure that contains one or many SubGroups
| API | Description |
|---|---|
| DELETE api/Groups/{id} |
Delete a Group if you have the Credentials to do so. NOTE: This will also delete all associated SubGroups under this Group. |
| GET api/Groups/{id}?subLevels={subLevels} |
Get a specific Group by ID |
| GET api/Groups?subLevels={subLevels} |
Gets all Groups you have access to. |
| POST api/Groups |
Create a Group |
| PUT api/Groups/RequestReading?ids[0]={ids[0]}&ids[1]={ids[1]} |
Request that a reading be taken of the physical device and the records updated as soon as possible. NOTE: the returned details may or may not contain the readings that have been requested. Check reading date/time |
| PUT api/Groups?subLevels={subLevels} |
Update a Group |
SubGroups
This is an abstract structure that contains one or many devices
| API | Description |
|---|---|
| DELETE api/SubGroups/{id} |
Delete a SubGroup if you have the Credentials to do so. NOTE: This will remove the relationship with all associated devices under this SubGroup, however the devices are un-touched. |
| GET api/SubGroups |
Gets all SubGroups you have access to. |
| GET api/SubGroups/{id} |
Get a specific SubGroup by ID |
| GET api/SubGroups?category={category} |
Get SubGroups by Category |
| POST api/SubGroups |
Create a SubGroup |
| PUT api/SubGroups |
Update a SubGroup |
| PUT api/SubGroups/RequestReading?category={category} |
Request that a reading be taken of the physical device and the records updated as soon as possible. for a particular category. NOTE: the returned details may or may not contain the readings that have been requested. Check reading date/time |
| PUT api/SubGroups/RequestReading?ids[0]={ids[0]}&ids[1]={ids[1]} |
Request that a reading be taken of the physical device and the records updated as soon as possible. NOTE: the returned details may or may not contain the readings that have been requested. Check reading date/time |
Timetables
This is the Controller for handling Timetable-related actions, such as creating and editing
| API | Description |
|---|---|
| DELETE api/Timetables/{id} |
Delete a Timetable if you have the Credentials to do so |
| GET api/Timetables |
Gets all Timetables you have access to. |
| GET api/Timetables/{id} |
Get a specific Timetable by ID |
| POST api/Timetables |
Create a Timetable |
| PUT api/Timetables |
Update a Timetable |
| PUT api/Timetables/Disable/{id} |
Disables the Timetable indicated by the input ID |
| PUT api/Timetables/Disable?ids[0]={ids[0]}&ids[1]={ids[1]} |
Disables any number of Timetables indicated by the input IDs |
| PUT api/Timetables/Enable/{id} |
Enables the Timetable indicated by the input ID |
| PUT api/Timetables/Enable?ids[0]={ids[0]}&ids[1]={ids[1]} |
Enables any number of Timetables indicated by the input IDs |
Programs
This is an abstract structure that contains one or many Groups, which in turn contain one or many Steps. This is used to create/spawn Schedules for sending to DataNodes, similar to a Template but with much more detail included.
Schedules
This is an abstract structure that contains one or many Groups, which in turn contain one or many Steps
UserAccess
API Controller for User Access. Used to allow or deny access to various systems for an individual user
| API | Description |
|---|---|
| DELETE api/UserAccess/{id} |
Deletes a UserAccess item |
| DELETE api/UserAccess?userName={userName}&objectID={objectID}&objectType={objectType} |
Deletes a user access item |
| GET api/UserAccess |
Gets all of user access items |
| GET api/UserAccess/{id} |
Get by a specific User Access integer ID |
| GET api/UserAccess?username={username} |
Returns a list of User Access settings for a specified user |
| GET api/UserAccess?username={username}&ownerID={ownerID}&ownerType={ownerType} |
Returns a User Access setting for a specific object for the specified user |
| POST api/UserAccess |
Creates User Access settings for a user |
| PUT api/UserAccess |
Updates User Access settings for a user |
Batch
Controller for the batch page
| API | Description |
|---|---|
| GET Batch/AlertCleanup |
Performs a Cleanup of all Alerts in the API, archiving any that meet the right criteria for archival. |
| GET Batch/HandleCalculatedDeviceTimescales?timescale={timescale} |
Handles the evaluation of CalculatedDevice Timescale readings based on the input |
| GET Batch/LogCleanup?clientID={clientID} |
Performs the Log Cleanup process, depending on the input. If a ClientID is provided, it will perform it for that Client only. If no ClientID is provided, it will perform it for all Clients. |
| GET Batch/Poll |
Performs a Poll of all configured networks in the API. |
| GET Batch/RunScheduleMonitor |
Runs the Schedule Monitor, which will scan over all active Schedules and perform any actions it deems necessary to maintain the Schedules. |
| GET Batch/SendPendingAlerts |
Sends out all pending Alerts to their appropriate end points, i.e. sends out emails and text messages where needed, if they've not already been sent. |
| GET Batch/VersionSweep |
Performs a sweep of all DataNode Versions in the API. If any are found where their records need to be updated, it will update them. |
Admin
Controller for the Admin interface
| API | Description |
|---|---|
| DELETE api/Admin/Config?name={name} |
Deletes a Configuration setting from the database with the matching name |
| GET api/Admin/ClientReport |
Returns a Client Report |
| GET api/Admin/Config |
Get all currently cached Configuration settings |
| GET api/Admin/Test |
Test endpoint |
| POST api/Admin/Config |
Creates a new Configuration settings in the database |
| PUT api/Admin/Config |
Edits the Configuration settings on the database |
| PUT api/Admin/Config/Reload |
Reloads the Configuration settings from the database |
CommsInterfaces
This is the Controller for handling Comms Interface-related actions, such as creating and editing
| API | Description |
|---|---|
| DELETE api/CommsInterfaces/{id} |
Delete a Comms Interface if you have the Credentials to do so |
| GET api/CommsInterfaces |
Gets all Comms Interfaces you have access to. |
| GET api/CommsInterfaces/{id} |
Get a specific Comms Interface by ID |
| GET api/CommsInterfaces/Unclaimed |
Gets all Comms Interfaces you have access to that are currently not claimed by any Networks |
| GET api/CommsInterfaces?gatewayID={gatewayID} |
Gets a Comms Interface by the input Gateway ID |
| GET api/CommsInterfaces?imei={imei} |
Gets a Comms Interface by the input IMEI |
| GET api/CommsInterfaces?macAddress={macAddress} |
Gets a Comms Interface by the input MAC Address |
| GET api/CommsInterfaces?type={type} |
Gets all Comms Interfaces you have access to that have a CommsType that matches the input type |
| POST api/CommsInterfaces |
Create a Comms Interface |
| PUT api/CommsInterfaces |
Update a Comms Interface |
Equations
This is the Controller for handling Equation-related actions, such as accessing the publicly available or Client-owned Equations
| API | Description |
|---|---|
| DELETE api/Equations/{id} |
Delete an Equation by its integer ID |
| GET api/Equations/{id}?subLevels={subLevels} |
Gets an Equation that matches the input ID |
| GET api/Equations?subLevels={subLevels} |
Gets all Equation items |
| POST api/Equations |
Creates a new Equation |
| PUT api/Equations |
Updates an existing Equation |
Conditions
This is the Controller for handling Condition-related actions (ConditionTree, ConditionBranch, ConditionNode), such as creating and editing
| API | Description |
|---|---|
| DELETE api/Conditions/Branches/{id} |
Delete a ConditionBranch if you have the Credentials to do so |
| DELETE api/Conditions/Leaves/{id} |
Delete a ConditionLeaf if you have the Credentials to do so |
| DELETE api/Conditions/Trees/{id} |
Delete a ConditionTree if you have the Credentials to do so |
| GET api/Conditions/Branches/{id}?subLevels={subLevels} |
Get a specific ConditionBranch by ID |
| GET api/Conditions/Leaves/{id} |
Get a specific ConditionLeaf by ID |
| GET api/Conditions/Trees/{id}?subLevels={subLevels} |
Get a specific ConditionTree by ID |
| GET api/Conditions/Trees?subLevels={subLevels} |
Gets all ConditionTrees you have access to. |
| POST api/Conditions/Trees |
Create a ConditionTree |
| PUT api/Conditions/Branches?subLevels={subLevels} |
Update a ConditionBranch |
| PUT api/Conditions/Leaves |
Update a ConditionLeaf |
| PUT api/Conditions/Trees/Test/{id} |
Test the current evaluation of a Tree using the latest applicable readings |
| PUT api/Conditions/Trees?subLevels={subLevels} |
Update a ConditionTree |
SIMs
This is the Controller for handling SIM-related actions, such as creating and editing
| API | Description |
|---|---|
| DELETE api/SIMs/{id} |
Delete a SIM if you have the Credentials to do so |
| GET api/SIMs |
Gets all SIMs you have access to. |
| GET api/SIMs/{id} |
Get a specific SIM by ID |
| GET api/SIMs/Unclaimed |
Gets all SIMs that are unclaimed (i.e. do not belong to a CommsInterface) |
| GET api/SIMs?phoneNumber={phoneNumber} |
Get a specific SIM by Phone Number |
| GET api/SIMs?serialNumber={serialNumber} |
Get a specific SIM by Serial Number |
| GET api/SIMs?state={state} |
Get all SIM Card that fall into the input |
| POST api/SIMs |
Create a SIM |
| PUT api/SIMs |
Update a SIM |
Enums
This is the Controller for handling Enum-related actions, such as accessing the current lists and adding new enums
| API | Description |
|---|---|
| DELETE api/Enums/DeviceType?internalName={internalName} |
Delete a customisable enum by internal name |
| DELETE api/Enums/DeviceType?value={value} |
Delete a customisable enum by value |
| DELETE api/Enums/ReadingType?internalName={internalName} |
Delete a customisable enum by internal name |
| DELETE api/Enums/ReadingType?value={value} |
Delete a customisable enum by value |
| DELETE api/Enums/ReadingUnitType?internalName={internalName} |
Delete a customisable enum by internal name |
| DELETE api/Enums/ReadingUnitType?value={value} |
Delete a customisable enum by value |
| GET api/Enums/DeviceType |
Gets all enums |
| GET api/Enums/ReadingType |
Gets all enums |
| GET api/Enums/ReadingUnitType |
Gets all enums |
| POST api/Enums/DeviceType |
Creates a new object |
| POST api/Enums/ReadingType |
Creates a new object |
| POST api/Enums/ReadingUnitType |
Creates a new object |
| PUT api/Enums/DeviceType |
Updates an existing enum |
| PUT api/Enums/ReadingType |
Updates an existing enum |
| PUT api/Enums/ReadingUnitType |
Updates an existing enum |