MultiDrive Web API 2.8 User Guide
MultiDrive Web API 2.8 User Guide
EDMI Limited
Version 2.87
Revision 2.30
21/06/2023
MultiDrive Web API 2.8 User Guide
Revision History
Date Synopsis of change Author Revision
11/07/2013 Added notes on how comms server is assigned for new sites TP 1.10
31/07/2013 Added MultiDrive permission information DY 1.20
15/08/2013 Modify Register Data touRate from "T" to "TOTAL" DY 1.21
19/08/2013 Making sure all IDs are Integer (deviceId, deviceConfigurationId, siteId, DY 1.22
deviceGroupId,
parentDeviceGroupId, deliveryId, scheduleId, executionId, executionJobId,
eventLogId)
28/08/2013 • Data Delivery API DY 1.23
o Added deviceGroupName URI to all functions
• Diagnostic API
o Added plantNumber URI to "Read diagnostic register" and
"write diagnostic register"
• Fleet Management API/Commissioning API
o Added plantNumber URI to "Commission a device in the
system", "Decomission a device in the system"
• Fleet Management API/Device Configurations API
o Added deviceConfigurationName URI to "Get Device
Configuration"
• Fleet Management API/Device Group API
o Added deviceGroupName URI to "Get Device Group", "Update
Device Group", "Delete DeviceGroup", "List / Search Devices in
Device Group", "Add Devices to Device Group", "Remove Device
From Device Group"
• Fleet Management API/Devices API
o Corrected URI for "create device"
o Added plantNumber URI to "update device", "delete device",
"Last Device Access Time", "Next Schedule Device Access Time"
o Added limit and offset to "List / Search Devices"
• Fleet Management API/Sites API
o Added siteCode URI to "Delete Site"
o Added limit and offset to "List / Search Sites"
• Measured Data API
o Added plantNumber URI to "GetProfileData", "Get Time of Use
Register Data", "Get Event Log Data", "Get Voltage Sag/Swell,
THD or Unbalance Event Data", "Rollback data to a specific
date/time"
o Remove DeviceId parameter from "GetProfileData", "Get Time
of Use Register Data", "Get Event Log Data", "Get Voltage
Sag/Swell, THD or Unbalance Event Data", "Rollback data to a
specific date/time"
• Schedule API
o Added limit and offset to "List Schedule Executions", "Search for
Schedule Execution Jobs"
o Added scheduleName URI to "Get Schedule", "Trigger Regular
Schedule As Configured", "Trigger Adhoc Schedule for particular
devices", "List Schedule Executions", "Search for Schedule
Execution Jobs"
o Remove name parameter from "List Schedule Executions"
• Supply Control API
o Added deviceGroupName URI to "Get Main Supply status for a
device group"
11/10/2013 • Fleet Management API DY 1.24
o Added Modem API and SIM Card API
• Fleet Management API/Commissioning API
o Added "Commission a SMETS Device in the System", "Request
ZigBee Pairing for SMETS Gas Device", "Request ZigBee Pairing
Page ii
MultiDrive Web API 2.8 User Guide
Page iii
MultiDrive Web API 2.8 User Guide
11/07/2016 • Update dynamic schedule settings for Pass Prepayment token to meter SM 2.03
and Supply Control API
15/07/2016 • Diagnostic API SM 2.04
o Added maximum limit in total number of registers
18/07/2016 • Scheduling API SM 2.05
o Update permission
29/07/2016 • Update “create device setup emplate” SM 2.06
15/09/2016 • Device Setup API SM 2.07
o Added Schedule Read Device Setup Stages
• Scheduling API
o Updated additional properties for schedule job payload
• API Error Codes
o Added new error codes
20/10/2016 • Device Setup API YM 2.08
o Removed “Delete Device Setup Template” as this is not
currently supported
• Added Device Setup Template sample
11/11/2016 • Data Delivery API SM 2.09
o Added new method “Trigger all-in-one export of available data”
14/02/2017 • Update test task in appendix C.2. SM 2.10
23/02/2017 • Prepayment API YM 2.11
o Added new method “Generate UTRN token”
26/04/2017 • MDDCS Configuration API SM 2.12
o Added new method “Suppress Load Profile downloads on
MDDCS”
o Added new method “Re-enable Load Profile downloads on
MDDCS”
16/05/2017 • Rename MDDCS Configuration API to MDDCS API SM 2.13
• Added new method “Request Load Profile Download”
03/07/2017 • Added setup stages for FUL’s GAS API implementation CM 2.14
02/07/2017 • API Error Codes SM 2.15
o Added new error codes
• Added optional payoad sections in 9.4.7, 9.4.8, 9.4.9, 15.1, 15.2
30/01/2018 • Updated this guide for MD Web API 2.2 WT 2.16
• System API
o Added description on auto-purging of expired authentication
tokens in section 14.1
13/07/2018 • Updated this guide for MD Web API 2.3 WT 2.17
• Prepayment API
o Added “Get Token Transfer History of 3rd-Party Vending System”
29/08/2018 • Measured Data API WT 2.18
o Added "accumulationPolicy" to returned payload of "Get Profile
Data"
o Added "billingSystem" to returned payload of "Get Time of Use
Register Data"
27/11/2018 • Devices API SM 2.19
o Added "Request Pinging a Device"
o Added "Get Ping Status"
12/12/2018 • Prepayment API WT 2.20
o Updated descriptions for "Write misc. prepayment info to
meter"
26/02/2019 • Scheduling API SM, 2.21
o Added "Get Schedule Execution Job Log By Device" NM
o Added "Get Schedule Execution Communications Log By Device"
• Supply Control API
o Added "Set Load Limiting Control”
Page v
MultiDrive Web API 2.8 User Guide
Page vi
MultiDrive Web API 2.8 User Guide
Page vii
MultiDrive Web API 2.8 User Guide
Table of Contents
Chapter 1 Overview ........................................................................................................................................ 1
1.1. MultiDrive Web APIs ................................................................................................................................... 1
1.2. REST Background ......................................................................................................................................... 3
1.3. API Patterns ................................................................................................................................................. 3
Chapter 2 API Versioning ................................................................................................................................ 5
Chapter 3 API Security .................................................................................................................................... 7
Chapter 4 API Success Responses.................................................................................................................... 8
4.1. 200 OK ......................................................................................................................................................... 8
4.2. 201 Created ................................................................................................................................................. 8
4.3. 202 Accepted ............................................................................................................................................... 8
Chapter 5 API Error Responses........................................................................................................................ 9
5.1. 400 Bad Request.......................................................................................................................................... 9
5.2. 401 Unauthorized ...................................................................................................................................... 10
5.3. 403 Forbidden ........................................................................................................................................... 10
5.4. 404 Not Found ........................................................................................................................................... 10
5.5. 405 Method Not Allowed .......................................................................................................................... 11
5.6. 409 Conflict ............................................................................................................................................... 11
5.7. 500 Internal Server Error ........................................................................................................................... 11
5.8. 501 Not Implemented ............................................................................................................................... 12
5.9. 503 Service Not Available .......................................................................................................................... 13
Chapter 6 Data Delivery API .......................................................................................................................... 14
6.1. Trigger export of any available data .......................................................................................................... 14
6.2. Trigger export of existing load profile data ............................................................................................... 15
6.3. Trigger export of existing Time of Use/Register data................................................................................ 15
6.4. Trigger export of existing event log data .................................................................................................. 16
6.5. Trigger all-in-one export of available data ................................................................................................ 16
6.6. Get data delivery status ............................................................................................................................ 17
Chapter 7 Measured Data API ....................................................................................................................... 19
7.1. Get Data Types .......................................................................................................................................... 19
7.2. Get Profile Data ......................................................................................................................................... 20
7.3. Get Time of Use Register Data .................................................................................................................. 23
7.4. Get Event Log Data .................................................................................................................................... 27
7.5. Get Voltage Sag/Swell, THD or Unbalance Event Data ............................................................................. 28
Chapter 8 Supply Control API ........................................................................................................................ 31
8.1. Change Main Supply Status (connect / disconnect) .................................................................................. 31
8.2. Get Main Supply status ............................................................................................................................. 33
8.3. Get Main Supply status for a device group ............................................................................................... 33
Page viii
MultiDrive Web API 2.8 User Guide
Page ix
MultiDrive Web API 2.8 User Guide
Page x
MultiDrive Web API 2.8 User Guide
Page xi
MultiDrive Web API 2.8 User Guide
Page xii
MultiDrive Web API 2.8 User Guide
Chapter
1
Overview
The MultiDrive Web APIs are divided into different components for different roles. APIs are intended to be
consistent in design and return responses in the MDX format.
Page 1
MultiDrive Web API 2.8 User Guide
Page 2
MultiDrive Web API 2.8 User Guide
The following table shows how the HTTP methods are typically used to implement a web service.
Element URI, such as Retrieve a Replace the Not generally used. Delete the
http://example.com/resources/i representation of the addressed member Treat the addressed
tem17 addressed member of of the collection addressed member member of
the collection, as a collection in its the
expressed in an own right collection.
appropriate Internet and create a new
media type. entry in it.
The PUT and DELETE methods are idempotent methods. The GET method is a safe method (or nullipotent),
meaning that calling it produces no side-effects.
Reference:
• http://www.codeproject.com/Articles/21258/Everything-about-REST-web-services-what-and-how-Pa
• http://rest.elkstein.org/
• http://www.peej.co.uk/articles/restfully-delicious.html
• http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services
• http://msdn.microsoft.com/en-us/library/system.web.mvc.httpverbs(v=vs.108).aspx
• http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
Page 3
MultiDrive Web API 2.8 User Guide
display the complete contents of all child documents. For ease of use, the collection endpoint may be
provided, without providing a separate endpoint for displaying child elements.
• Update / Create with PUT, Delete with DELETE - Where the URI is known in advance then creation is
performed using PUT. This is convenient when the element has a unique code of reference provided by
the client, as the server does not need to pass back a reference to the new document. Modification and
deletion is performed with PUT and DELETE respectively to the same endpoint address. When the URI
contains a component which is not predefined by the user (e.g. when an ID is included within the URI),
then a POST is required, and a 201 Created response is returned along with a reference to the new
document.
• Processing functions with POST - If processing functions are required a endpoint using POST is required.
• Including collection elements within documents. For ease of use, when possible the contents of a
collection for a document should be included within it's parent's document. In this case when creating or
modifying the document with PUT the contents of the collection can also be included.
• Modifying big collections with POST. If a collection could be too large to be included within a parent's
document then it is separated into a collection document. To modify elements the user can POST a set of
elements to a processing end point to add or remove items. The processing end point could be at the
collection documents end point itself.
• Id - where present, the data base ID is named \{x\}Id where \{x\} is the type of object.
• Including codes / names when referencing objects - When including the ID of a referenced element, the
related name or code is included for ease of the consumer.
• Creating objects - Objects are typically created with a PUT to the location of the desired document. For
example a site which has a unique site code would be PUT to /sites/{siteCode}. The object is passed as
JSON, XML or HTML and must correspond to the MDX specification for the object. However when creating
and modifying objects there will be attributes which cannot be set, for example IDs and collections of
related objects which are returned for ease of use. These attributes are marked as read-only in the API.
Page 4
MultiDrive Web API 2.8 User Guide
Chapter
Versioning is handled at the URI level. All resources will have a version number before them and will be
2
indicated as the version number alone. For example:
/measuredData/v1/loadProfile
There is only one version per base resource, even if accessing sub-resources, for instance.
/fleetManagement/v1/deviceGroups/{deviceGroupId}/devices
/fleetManagement/v2/deviceGroups/{deviceGroupId}/v1/devices
In this case trying to use version 2 of the device groups API and then version 1 of the devices objects is not
valid. You must accept the version of devices that is used in version 2 of the entire API for device groups.
• New resources
• New HTTP methods on existing resources
• New data formats
• New attributes or elements on existing data types
Page 5
MultiDrive Web API 2.8 User Guide
Any older version may be marked for deprecation once it becomes unused.
It will be general practice to do this once it becomes two versions out of date (so once get to version 3, mark
version 1 as deprecated).
Any APIs marked as deprecated will be removed in the next major release.
Page 6
MultiDrive Web API 2.8 User Guide
Chapter
ter3
p
a
h
C
3
API Security
The API is secured through the the use of SSL and proper certificates to secure the connection and basic HTTP
authentication to authorize users.
Basic HTTP authentication is done using the username/password of the user as current stored in
MultiDrive. This also provides the access capabilities for the user.
All users must first request an access token from the System Management API. That token then must be
passed in with all API calls.
All API calls must validate the token in the system before allowing any request.
• Any request for which the token does not exist (or has been deleted) will respond with a “HTTP 401
Unauthorised” response.
• Any request for which the token indicates that the user is not allowed to access will respond with a “HTTP
403 Forbidden” response.
Page 7
MultiDrive Web API 2.8 User Guide
Chapter
4
For successful operations, the API can respond with a number of different success responses. These responses
and their payloads are detailed below.
4.1. 200 OK
This indicates that the request was completed successfully.
The URN/URI to the new resource is indicated in the HTTP header Location field.
A URN/URI to access the status of the request is indicated in the HTTP header Location field.
The payload will contain the current copy of the status (same format as would be requested via the URI given
in the location field). This is different depending on the resource.
Page 8
MultiDrive Web API 2.8 User Guide
Chapter
5
The API can respond with a number of errors. The format of the responses provided with the errors is detailed
below.
Page 9
MultiDrive Web API 2.8 User Guide
For operations which request or delete a token, this indicates that the username or password provided via basic
authentication was not found or invalid.
For operations which request or delete a token, this indicates that the username provided has been disabled in
the system.
{
"errorMessage": {
"status" : "409",
"dateTime" : "2013-01-21T10:00:00",
"message" : "The device you try to create already exists",
"errorCode" : "Device-400",
"errors" : [
{
"message" : "The device already exists",
"errorCode" : "Device-400",
"detail" : "fleetManagement/device/123",
}
],
}
}
Description
Property Optional/ Format Description
Mandatory
errorMessage
status Mandatory Text HTTP status code associated with error
dateTime Mandatory Text Date and Time of error
message Mandatory Text User friendly error message
errorCode Mandatory Text A unique numeric code for the error. See API
Error Codes for more info.
errors This contains any items which are associated
with the error.
For example a 409 error would contain a list
of the ids which conflict here.
message Mandatory Text This contains a individual error message
errorCode Mandatory Text A unique numeric code for the individual
error. See API Error Codes for more info.
detail Optional Text This contains any detail (ie. URI, identifiers
etc) associated with the individual error
Page 10
MultiDrive Web API 2.8 User Guide
{
"errorMessage": {
"status" : "409",
"dateTime" : "2013-01-21T10:00:00",
"message" : "The device you try to create already exists",
"errorCode" : "Device-400",
"errors" : [
{
"message" : "The device already exists",
"errorCode" : "Device-400",
"detail" : "fleetManagement/device/123",
}
],
}
}
Description
Property Optional/ Format Description
Mandatory
errorMessage
status Mandatory Text HTTP status code associated with error
dateTime Mandatory Text Date and Time of error
message Mandatory Text User friendly error message
errorCode Mandatory Text A unique numeric code for the error. See API
Error Codes for more info.
errors This contains any items which are associated
with the error.
For example a 409 error would contain a list
of the ids which conflict here.
message Mandatory Text This contains a individual error message
errorCode Mandatory Text A unique numeric code for the individual
error. See API Error Codes for more info.
detail Optional Text This contains any detail (ie. URI, identifiers
etc) associated with the individual error
{
"errorMessage": {
"status" : "409",
"dateTime" : "2013-01-21T10:00:00",
"message" : "The device you try to create already exists",
"errorCode" : "Device-400",
"errors" : [
{
"message" : "The device already exists",
Page 11
MultiDrive Web API 2.8 User Guide
"errorCode" : "Device-400",
"detail" : "fleetManagement/device/123",
}
],
}
}
Description
Property Optional/ Format Description
Mandatory
errorMessage
status Mandatory Text HTTP status code associated with error
dateTime Mandatory Text Date and Time of error
message Mandatory Text User friendly error message
errorCode Mandatory Text A unique numeric code for the error. See API
Error Codes for more info.
errors This contains any items which are associated
with the error.
For example a 409 error would contain a list
of the ids which conflict here.
message Mandatory Text This contains a individual error message
errorCode Mandatory Text A unique numeric code for the individual
error. See API Error Codes for more info.
detail Optional Text This contains any detail (ie. URI, identifiers
etc) associated with the individual error
{
"errorMessage": {
"status" : "409",
"dateTime" : "2013-01-21T10:00:00",
"message" : "The device you try to create already exists",
"errorCode" : "Device-400",
"errors" : [
{
"message" : "The device already exists",
"errorCode" : "Device-400",
"detail" : "fleetManagement/device/123",
}
],
}
}
Description
Property Optional/ Format Description
Mandatory
errorMessage
status Mandatory Text HTTP status code associated with error
dateTime Mandatory Text Date and Time of error
message Mandatory Text User friendly error message
errorCode Mandatory Text A unique numeric code for the error. See API
Error Codes for more info.
errors This contains any items which are associated
with the error.
For example a 409 error would contain a list of
the ids which conflict here.
Page 12
MultiDrive Web API 2.8 User Guide
Page 13
MultiDrive Web API 2.8 User Guide
Chapter
6
URL /dataDelivery/all/{deviceId}
/dataDelivery/all/plantNumber/{plantNumber}
/dataDelivery/all/deviceGroup/{deviceGroupId}
/dataDelivery/all/deviceGroup/name/{deviceGroupName}
Method POST
Permission Permission checking will vary depending on the dataType specified:
LOADPROFILE : mdpProfileData [View]
TOU : mdpTOUData [View]
EVENTLOG : mdpDeviceEventLog [View]
Parameters Name Description Type Optional/ Valid values Default
Mandatory
startDate Inclusive start date of load date Mandatory
profile data to export
endDate Inclusive end date of load date Mandatory
profile data to export
dataType The types of data to export, string Optional LOAD_PROFILE, TOU, *
values seperated by commas. EVENT_LOG
If not specified, then any data
from the list is exported
Returns 202 Accepted
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device Id, plant number or device group Id does not exist)
500 Internal Server Error
{
"dataDeliveries" : [
{
"deviceId" : 1,
"deliveryId" : 8867,
"dataType" : "LOAD_PROFILE",
"data": "LOAD_PROFILE1"
},
{
"deviceId" : 2,
"deliveryId" : 8868,
"dataType" : "TOU",
"data": "BILLING_TOTAL"
},
{
"deviceId" : 3,
"dataType" : "LOAD_PROFILE",
"data": "LOAD_PROFILE2",
"errorMessage":
{
"status":"400",
"dateTime":"2013-11-08T08:18:32.6348671Z",
"message":"No associated data mapping for selected Load Profiles",
"errorCode":"DataDelivery-012"
}
},
{
"deviceId" : 4,
Page 14
MultiDrive Web API 2.8 User Guide
"dataType": "EVENT_LOG",
"data" : "TAMPER",
"errorMessage":
{
"status":"400",
"dateTime":"2013-11-08T08:24:01.796Z",
"message":"Selected Event Type is not supported",
"errorCode":"DataDelivery-009"
}
}
]
}
Page 15
MultiDrive Web API 2.8 User Guide
400 Bad Request (selected Period Type is not supported, no associated data mapping for selected TOU,
no associated manual mapping, no Quantity Channels for selected TOU, no devices under the selected
group )
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device Id, plant number or device group Id does not exist)
500 Internal Server Error
Page 16
MultiDrive Web API 2.8 User Guide
WARNING:
The following variations of the method may suffer from slow response when called for a device
group containing large number of devices.
/dataDelivery/all-in-one/deviceGroup/{deviceGroupId}
/dataDelivery/all-in-one/deviceGroup/name/{deviceGroupName}
Note This method triggers data delivery by generating an all-in-one process job (GUID: 6CAC301F-FFB7-
432C-8ADD-C9E1C8021704).
Description
Property Format Description
dataDeliveryStatus
deliveryId Integer A unique identifier for the data delivery (Map to tblProcessJobs.JobId)
createTime ISO8601 Date/Time job was created
statusTime ISO8601 Date/Time of last status update
priority Integer The current priority of the job
status String Current status of the job.
Valid statuses are:
• Unassigned
• Assigned
• Processing
• Successful
• Failed
• Aborted
log String Log string
Page 18
MultiDrive Web API 2.8 User Guide
Chapter
7
URL /measuredData/dataTypes
Method GET
Permission None
Parameters Name Description Type Optional/ Valid Default
Mandatory values
name Filter by a match in the data type name string Optional -
Returns 200 OK
400 Bad Request (Hash is not valid or timestamp is too old)
401 Unauthorized (Username/password is invalid)
403 Forbidden (Username has been disabled)
500 Internal Server Error
{
"dataTypes" : [
{
"bitRepresentation" : 4112,
"name" : "Import Wh Phase A",
"units" : "Wh",
"flowDirection" : "Consumption",
"phase" : "A"
"apportionPolicy" : "SUM" ,
"decimalPlaces" : 3,
"multiplier" : 1000
},...
]
}
Description
Property Optional/ Format Description
Mandatory
bitRepresentation Mandatory Integer Integer for binary representation of data type
name Mandatory Text ( ) Name of the data type
units Mandatory See appendix C Unit of measure.
flowDirection Mandatory Text ( ) Flow direction, e.g. "Consumption", "Absolute" or "Q1"
Flow direction must be valid for UOM. See Appendix C.
phase Mandatory See Appendix E Phase, e.g. "A" or "AB".
apportionPolicy Mandatory See Appendix F The rule to follow when apportioning (for example, when
viewing 15-minute day apportioned to 1-day intervals).
decimalPlaces Mandatory
multiplier Mandatory
Page 19
MultiDrive Web API 2.8 User Guide
Page 20
MultiDrive Web API 2.8 User Guide
"endOfInterval" : "2013-01-22T00:00:00+0000",
"values" : [ 3352, 3301.3, 56.6 ]
},{
"endOfInterval" : "2013-01-22T00:00:00+0000",
"values" : [ 2022.11, 3014.3, 23 ]
},{
"endOfInterval" : "2013-01-22T00:00:00+0000",
"values" : [ 2342.2, 3441.3, 23.1 ]
},{
"endOfInterval" : "2013-01-22T00:00:00+0000",
"values" : [ 2344.31, 2591.07, 80.33 ],
"statuses" : ["AR"]
}]
}]
}
Description – intervalDataSet
Mandatory. Each intervalDataSet normally corresponds to the data (values and per-interval status flags) read for a
particular load survey. All intervals within it must share the same length. However, different intervalDataSet elements
may have different interval lengths, different channels, etc. Where a meter has more than one load survey, the data for
each load survey should be supplied in a separate intervalDataSet.
Data Gaps
MultiDrive may export reads containing gaps - these will NOT be filled in automatically. Gaps between reads (i.e. between
data in separate files) can occur when a meter has been reset or when there is a sufficiently large gap between reads.
Unit Description
MILLISECOND Milliseconds.
SECOND Seconds.
MINUTE Minutes.
HOUR Hours.
DAY Days.
WEEK Weeks.
MONTH Months.
YEAR Years.
Page 22
MultiDrive Web API 2.8 User Guide
Page 23
MultiDrive Web API 2.8 User Guide
{
"registerDataSets": [{
"recordDateTime": "2012-06-10T12:30:00.000+0000",
"periodType": "PREVIOUS",
“billingSystem”: 1,
"billingResetCount": 2,
"billingResetTime": "2012-06-09T12:30:00.000+0000",
"registers": [{
"units": "WH",
"flowDirection": "DELIVERED",
"phase": "TOTAL",
"apportionPolicy": "SUM",
"touRate": "TOTAL",
"registerValue": {
"value": 123,
}
},{
"units": "WH",
"flowDirection": "DELIVERED",
"phase": "TOTAL",
"apportionPolicy": "SUM",
"touRate": "1",
"registerValue": {
"value": 100
}
},{
"units": "WH",
"flowDirection": "DELIVERED",
"phase": "TOTAL",
"apportionPolicy": "SUM",
"touRate": "2",
"registerValue": {
"value": 23
}
},{
"units": "varh",
"flowDirection": "DELIVERED",
"phase": "TOTAL",
"apportionPolicy": "SUM",
"touRate": "TOTAL",
"registerValue": {
"value": 345
}
},{
"units": "W",
"flowDirection": "NONE",
"phase": "TOTAL",
"apportionPolicy": "MAX", // value recorded is MAXIMUM demand
"touRate": "TOTAL",
"registerValue": {
"value": 567,
"dateTime": "2012-06-10T12:42:00.000+0000", // time of max demand
Page 24
MultiDrive Web API 2.8 User Guide
}
},{
"units": "var",
"flowDirection": "NONE",
"phase": "TOTAL",
"apportionPolicy": "MAX",
"touRate": "TOTAL",
"registerValue": {
"value": 890,
"dateTime": "2012-06-10T12:45:04.000+0000", // time of max demand
}
}]
}]
Description – registerDataSet
Mandatory. All the (tou) registers for a single billing reset.
Page 25
MultiDrive Web API 2.8 User Guide
Period Types
Type of period a register value relates to.
Example showing monthly billing reset for an interval based meter configuration.
Page 26
MultiDrive Web API 2.8 User Guide
Page 27
MultiDrive Web API 2.8 User Guide
Description
Property Optional/ Format Description Notes
Mandatory
code Mandatory As per the EndDeviceEvent Codes will be supported
'EndDeviceEvent' category covering all meter
definition in IEC types. iBO will handle
61968-9: translation from MD
"<domain>. codes to iBO's internal
<domainpart>. event types.
<type>.<index>" Parameters will be more
(each of these 4 meter specific to provide
fields are richer detail where this
numeric only) exists
description Optional Text Description of This is useful if the code
type of event, is
e.g. "Power on" not understood/mappabl
e at importion for
context
logNumber Optional Numeric The log in This will be ignored by
which this the importer
event was
recorded in.
eventDateTime Mandatory ISO8601 Date and time
event was
recorded by the
meter.
parameters Optional Defines an
event
parameter
name/value
pair
parameter Optional There could be 0, 1 or
(0..* multiple parameters for
occurrences) each event
name Mandatory Text The name of
the parameter
value Mandatory Text The value of
the parameter
Page 28
MultiDrive Web API 2.8 User Guide
All device events are encapsulated into this object. This includes normal device events, voltage sag/swell
events, THD/Unbalance events and tamper events.
{
"events": [{
"code": "1.0.1.1",
"logNumber": 0,
"description": "Power on: connected",
"eventDateTime": "2012-06-11T00:00:00.000+0000",
"parameters": [{
"name": "extremeAmplitude",
"value": "1.00"
}]
},
{
"code": "3.4.17.42",
"description": "Relay connected",
"parameters": [{
"name": "relayNumber",
"value": "Relay 3"
},{
"name": "relayOperationType",
"value": "Disconnect Button"
}]
}]
}
Description of Events
Property Optional/ Format Description Notes
Mandatory
code Mandatory As per the EndDeviceEvent Codes will be supported
'EndDeviceEvent' category covering all meter
definition in IEC types. iBO will handle
61968-9: translation from MD
"<domain>. codes to iBO's internal
<domainpart>. event types.
<type>.<index>" Parameters will be more
(each of these 4 meter specific to provide
fields are richer detail where this
numeric only) exists
description Optional Text Description of This is useful if the code
type of event, is
e.g. "Power on" not understood/mappabl
Page 29
MultiDrive Web API 2.8 User Guide
e at importion for
context
logNumber Optional Numeric The log in This will be ignored by
which this the importer
event was
recorded in.
eventDateTime Mandatory ISO8601 Date and time
event was
recorded by the
meter.
parameters Optional Defines an
event
parameter
name/value
pair
parameter Optional There could be 0, 1 or
(0..* multiple parameters for
occurrences) each event
name Mandatory Text The name of
the parameter
value Mandatory Text The value of
the parameter
Description of parameters
Property Format Description
eventType Text The type of sag/swell event this is.
Valid values:
• Voltage
• THD
• Unbalance
startTime ISO8601 Date and time the sag/swell event started.
phase Text The phase the sag/swell occurred on.
Valid values
• PhaseA
• PhaseB
• PhaseC
• Main
• Load
• Load1
duration Double Total number of seconds the event occurred for
extremeAmplitude Double The worst amplitude for the event (lowest or highest value before returning)
averageAmplitude Double The average amplitude for the event over the duration
Page 30
MultiDrive Web API 2.8 User Guide
Chapter
8
URL /supplyControl/mainSupply/{deviceid}
/supplyControl/mainSupply/plantNumber/{plantNumber}
Method POST
Permission mdpMainsControl [View]
Parameters Name Description Type Optional/ Valid values Default
Mandato
ry
startDate The date the date Optional -
device should
change it's relay
to the new state
endDate The date the date Optional -
device's relay
should revert to
its previous state.
If empty, then do
not revert.
controlCod The code which string Mandator Connect,
e will be issued to y EnableAndDisconn
the meter to ect,
change the relay DisableAndDisconn
state ect
mainsCont The number of int Optional 5 or greater Value of
rolDuratio seconds to be "MainsControlDuration"
n used as the in web.config (if
duration of the present);
Mains Control
Schedule otherwise 86400
seconds (i.e. 1 day)
Note: To configure a system-wide default (other than 86400 seconds), use the
“MainsControlDuration” key in web.config.
For example, to set the system-wide default to 3600 seconds (i.e. 1 hour), add the
following settings in web.config:
<appSettings>
…
<add key=” MainsControlDuration” value=”3600” />
</appSettings>
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can be
Empty.
Page 31
MultiDrive Web API 2.8 User Guide
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "<scheme>://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 32
MultiDrive Web API 2.8 User Guide
Description
Property Optional/ Format Description
Mandatory
relayStatus
deviceId Mandatory Integer Device Id
statusTime Mandatory ISO8601 Date/Time of when status was read
status Mandatory String Current (or pending) status of the relay.
Valid statuses are:
• Connected
• EnabledAndDisconnected
• DisabledAndDisconnected
• Error
changePending Optional Boolean True if change is still pending
False is already changed
info Optional Text Misc information
Method GET
Permission mdpDevice [View] and mdpMeterGroup [View]
Parameters Name Description Type Optional/ Valid values Default
Mandatory
limit Maximum number of devices to return Integer Optional 0 - 5000 5000
status for in response
offset Offset in devices to start returning Integer Optional * 0
statuses for in response
Returns 200 OK
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device Group Id Does not exist)
500 Internal Server Error
{
"relayStatus" :
{
"deviceId" : 14,
"statusTime" : "2013-01-21T10:00:00",
"lastCmdStartTime" : "2013-01-21T10:00:00",
"lastCmdEndTime" : "2013-01-21T10:00:00",
"changePending" : "False",
"status" : "Connected",
"info" : "",
},
}
Description
Property Optional/ Format Description
Mandatory
relayStatus
deviceId Mandatory Integer Device Id
statusTime Mandatory ISO8601 Date/Time of when status was read
status Mandatory String Current (or pending) status of the relay.
Valid statuses are:
• Connected
• EnabledAndDisconnected
• DisabledAndDisconnected
• Error
changePending Optional Boolean True if change is still pending
False is already changed
info Optional Text Misc information
URL /supplyControl/loadControl/{deviceid}
/supplyControl/loadControl/plantNumber/{plantNumber}
Method POST
Permission mdpMainsControl [View]
Parameters Name Description Type Optional/ Valid values Default
Mandatory
controlMo To disable the load String Mandatory Disable,
de limiting, or enable the ActivePower,
load limiting by one of Current,
the supported ActiveDemand
measurements
startTime The time at which the ISO8601 Optional Now
load limiting control Date
becomes active
Page 34
MultiDrive Web API 2.8 User Guide
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback Service,
callback the callback will be sent to a RabbitMQ queue or a Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the queue
"schedule-execution-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the topic
"schedule-execution-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId": 33,
"scheduleId": 0,
"startDate": "2019-02-15T10:21:00Z",
"endDate": "2019-02-15T10:42:33Z",
"jobsWithSuccess": 0,
"jobsWithFailure": 1,
"status": "Complete",
"hasWarning": false,
"totalJobs": 1,
"queuedJobs": 0
}
}
Page 35
MultiDrive Web API 2.8 User Guide
Description
Property Format Default Valid Values Description
Value
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given
before failing.
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", MultiDrive schedules.
"Very Low"
retryCount Integer 2 0 to 255 Maximum number of retries for the
schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the
schedule retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution
status will remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should
String run. If the specified time has passed when
the request reaches, MultiDrive, the
schedule will be executed immediately.
Note: This property is currently not
supported in
• Supply Control API
• Prepayement API (Pass prepayment
token to meter)
8.5. Change Main Supply Status (connect / disconnect) for Multiple Devices
URL /supplyControl/mainSupply/devices
Method POST
Permission mdpMainsControl [View]
Parameters Name Description Type Optional/ Valid values Default
Mandato
ry
startDate The date the date Optional -
device should
change it's relay
to the new state
endDate The date the date Optional -
device's relay
should revert to
its previous state.
If empty, then do
not revert.
controlCod The code which string Mandator Connect,
e will be issued to y EnableAndDisconn
the meter to ect,
change the relay DisableAndDisconn
state ect
Page 36
MultiDrive Web API 2.8 User Guide
Note: To configure a system-wide default (other than 86400 seconds), use the
“MainsControlDuration” key in web.config.
For example, to set the system-wide default to 3600 seconds (i.e. 1 hour), add the
following settings in web.config:
<appSettings>
…
<add key=” MainsControlDuration” value=”3600” />
</appSettings>
Payload by device id
{
"devices" : [
{
"deviceId" : 12
},
{
"deviceId" : 13
},
{
"deviceId" : 14
}, ...
]
}
{
"devices" : [
{
"plantNumber" : "Meter at Level 1"
},
{
"plantNumber" : "Meter at Level 2"
},
{
"plantNumber" : "Meter at Level 3"
}, ...
]
}
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can be
Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
Page 37
MultiDrive Web API 2.8 User Guide
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Description
Page 38
MultiDrive Web API 2.8 User Guide
{
"devices" : [
{
"plantNumber" : "Meter at Level 1"
},
{
"plantNumber" : "Meter at Level 2"
},
{
"plantNumber" : "Meter at Level 3"
}, ...
]
}
Returns 200 OK
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device Id or plant number does not exist)
500 Internal Server Error
{
"relayStatus": [
{
"deviceId" : 14,
"plantNumber" : "Meter at Level 3",
"statusTime" : "2013-01-21T10:00:00",
"lastCmdStartTime" : "2013-01-21T10:00:00",
"lastCmdEndTime" : "2013-01-21T10:00:00",
"changePending" : "False",
"status" : "Connected",
"info" : "",
},
...
]
}
Description
Property Optional/ Format Description
Mandatory
relayStatus
deviceId Mandatory Integer Device Id
plantNumber Mandatory String Device plant number
statusTime Mandatory ISO8601 Date/Time of when status was read
status Mandatory String Current (or pending) status of the relay.
Valid statuses are:
• Connected
• EnabledAndDisconnected
• DisabledAndDisconnected
• Error
Page 39
MultiDrive Web API 2.8 User Guide
{
"devices" : [
{
"plantNumber" : "Meter at Level 1"
},
{
"plantNumber" : "Meter at Level 2"
},
{
"plantNumber" : "Meter at Level 3"
}, ...
]
}
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can be
Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
Page 40
MultiDrive Web API 2.8 User Guide
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback Service,
callback the callback will be sent to a RabbitMQ queue or a Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the queue
"schedule-execution-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the topic
"schedule-execution-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Status can be Unknown, Queued, Running, Complete, No Jobs, Cancel, Paused
Dynamic Schedule Settings
The following payload can optionally be specified to control some aspects of the dynamic schedule being
triggered.
{
"dynamicScheduleSettings": {
"duration": 86400, // seconds
"priority": "Medium",
"retryCount": 2,
"retryDelay": 300000, // milliseconds
"timeToLive": 96, // hours
"executionTime": "2016-05-16T16:50:00Z"
}
}
Description
Property Format Default Valid Values Description
Value
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given
before failing.
Page 41
MultiDrive Web API 2.8 User Guide
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", MultiDrive schedules.
"Very Low"
retryCount Integer 2 0 to 255 Maximum number of retries for the
schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the
schedule retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution
status will remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should
String run. If the specified time has passed when
the request reaches, MultiDrive, the
schedule will be executed immediately.
Note: This property is currently not
supported in
• Supply Control API
• Prepayement API (Pass prepayment
token to meter)
Page 42
MultiDrive Web API 2.8 User Guide
Chapter
9.1. Devices
Fleet Management API
ter9
p
a
h
C
9
9.1.1. List / Search Devices
URL /fleetManagement/devices
Method GET
Permission mdpDevice [View]
Parameters Name Description Type Optional/ Valid values Default
Mandatory
serialNumber Filter by serial string Optional *
number
plantNumber Filter by plant string Optional *
number
deviceTypeName Filter by device string Optional *
type name
status Filter by the string Optional AWAITING_INSTALLATI *
meter status ON, INSTALLED,
COMMISSIONED,
NOT_IN_SERVICE
siteAssigned Whether the site boolean Optional true, false *
is assigned.
siteCode Filter by the site string Optional *
code
installDate Date meter was Date Optional *
started to be
read from
commissionDate Date device was Date Optional *
commissioned
decommissionDate Date device was Date Optional *
decommissioned
limit Maximum Integer Optional 0 - 5000 5000
number of
devices to
return status for
in response
offset Offset in devices Integer Optional * 0
to start
returning
statuses for in
response
Returns 200 OK
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
500 Internal Server Error
{
"devices" : [
{
Page 43
MultiDrive Web API 2.8 User Guide
"deviceID" : 156312,
"plantNumber" : "ABC1234"
"serialNumber" : "41545456",
"series" : "Atlas 2.0"
"model" : "EDMI Mk10E",
"installDate" : "2013-01-22T10:50:32",
"commissionDate" : "2013-01-25T12:02:03",
"decommissionDate" : "",
"status" : "INSTALLED",
"siteCode" : "SiteABC",
"siteID" : 134980,
"deviceConfiguration" : "Mk 10 Import 2 Ch",
"deviceConfigurationId" : 33
},...
]
}
Description
Property Optional/ Format Valid Values Description
Mandatory
deviceId Mandatory Integer A unique identifier for the device
plantNumber Mandatory String The manufacturer serial number
of the device
serialNumber Mandatory String The market identifier for the
device
series Mandatory String The name of the series this
meter is from, e.g. "Atlas"
model Mandatory String The name of the meter's model
within its series, e.g. "Mk 10A"
installDate Mandatory String The date and time the meter was
installed
commissionDate Mandatory String The date the meter was
commissioned
decommissionDate Mandatory String The date the meter was
decommissioned in the system
status Mandatory String AWAITING_INSTALLATION, The status of the device
INSTALLED, COMMISSIONED,
NOT_IN_SERVICE
siteCode Mandatory String The site code of the site used to
communicate with the meter
siteId Mandatory Integer The siteId of the site used to
communicate with the meter
deviceConfiguration Mandatory String The name of the device
configuration used by the meter
deviceConfigurationId Mandatory Integer The id of the device configuration
used by the meter
Page 44
MultiDrive Web API 2.8 User Guide
"model": "Mk10B",
"deviceConfiguration": "Mk 10 Import 2 Ch",
"deviceConfigurationId": 33,
"siteId": 15,
"calorificValueId": 0,
"installDate": "2013-01-22T00:00:00",
"commissionDate": "2013-01-23T00:00:00",
"decommissionDate": "",
"status": "INSTALLED",
"misc": "",
"meterAppliesTransformer": "true",
"timeOffsetMins": 1,
"userLogins": [{
"role": "SUPER",
"username": "Bob",
"password": "kb3rsf"
},
{
"role": "SUPER",
"username": "Bob",
"password": "jd83hf"
}],
"deviceCommsSettings": [{
"order": 1,
"protocol": "Edmi MiniE",
"loginTimeoutSecs": 90,
"maxRetries": 3,
"unitAddress": 0,
"devicePort": 0
},
{
"order": 2,
"protocol": "Edmi MiniE",
"loginTimeoutSecs": 75,
"timeoutSecs": 90,
"maxRetries": 3,
"unitAddress": 0
}],
"ct": {
"primary": 2000,
"secondary": 5
},
"pt": {
"primary": 110,
"secondary": 110
},
"deviceGroups": [{
"deviceGroupId": 33,
"name": "Inbound Daily Read"
}]
}
}
Description
Property Optional/ Format Description
Mandatory
device
Page 45
MultiDrive Web API 2.8 User Guide
serial number or an
internal ID such as a GUID
or integer database ID. It
is normally generated and
controlled by the
collection system.
serialNumber Mandatory String The manufacturer serial
number of the device
plantNumber Mandatory String The market identifier for
the device. Default to
serialNumber if
plantNumber is not
configured in meter.
series Mandatory See The name of the series
Meter this meter is from, e.g.
Series "Atlas".
section
below
model Mandatory See The name of the meter's
Meter model within its series,
Series e.g. "Mk 10A".
section
below
device- Either of the String The name of
Configuration two needs to the MultiDrive Device
be provided Configuration containing
but cannot be the interval and TOU
both channel mappings for the
(Mandatory) meter. Use"default" for
non MultiDrive systems
device- Integer Device configuration Id in
ConfigurationId MultiDrive
installDate Mandatory ISO8601 The date and time the
meter was installed. This
must be on or before the
first interval of data that
needs to be
collected. MultiDrive will
ignore any data prior to
this date.
commission- Unused ISO8601 The date the meter was
Date commissioned on. This is
separate to install date
and is updated if the
device is recommissioned.
decommission- Unused ISO8601 The date the meter was
Date decommissioned on.
status Mandatory See The status of the device.
Device Must be one of
Statuses AWAITING_INSTALLATION
section , INSTALLED,
COMMISSIONED,
NOT_IN_SERVICE.
Only meters with a status
of INSTALLED or
COMMISSIONED are
eligible for reading.
misc Unused String This field stores misc
information in a free form
format.
Page 46
MultiDrive Web API 2.8 User Guide
Page 47
MultiDrive Web API 2.8 User Guide
create/update
s
deviceComms- Mandatory Contains additional
Settings meter-level settings for all
the comms settings
specified at the site level.
comms- Mandatory The wrapper element in
Settings xml (not needed for json)
order Mandatory Integer The order of the
equivalent site level
comms settings.
Currently, only 1 and 2 are
supported.
protocol Mandatory See The protocol used to talk
Protocols to the meter.
section
loginTimeout- Mandatory Integer The maximum
Secs time MultiDrive should
wait for a response when
attempting to log in to the
meter.
timeoutSecs Mandatory Integer The maximum time
MultiDrive should wait for
a response when a
command (other than a
login command) has been
sent to a meter.
maxRetries Mandatory Integer Maximum number of
retries MultiDrive will
perform during a single
read attempt.
devicePort Optional Integer Device port number that
is used by POD based
devices (e.g. Mk7B). For
POD based devices,
communication with POD,
Elec. Meter and Gas
Meter will be using
different device port.
unitAddress Unused Integer
deviceGroups Optional Contains the list of groups
the device belongs to.
deviceGrou Optional
p
deviceGroupI Mandatory Integer The groupID of a group
d the device belongs to.
name Optional String Name of the device group
Note that username/passwords and security keys are not returned in the MDX. They are only allowed in the Create/
Update functions.
9.1.3. Protocols
Default
Edmi Command Line
Edmi Command Line Packet
Edmi MiniE
Edmi MiniE Packet
Page 48
MultiDrive Web API 2.8 User Guide
Page 49
MultiDrive Web API 2.8 User Guide
Page 50
MultiDrive Web API 2.8 User Guide
Page 51
MultiDrive Web API 2.8 User Guide
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback Service,
callback the callback will be sent to a RabbitMQ queue or a Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the queue
"schedule-execution-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the topic
"schedule-execution-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 52
MultiDrive Web API 2.8 User Guide
Description
Property Format Description
pingStatus Object containing
information of the
inquired ping
operations
executionId Integer ID of schedule
execution that
performed the ping
operations
devices deviceId Integer ID of the pinged
device
plantNumber String Plant code of
the pinged device
serialNumber String Serial Number of
the pinged device
pings A collection of ping
objects
pingTime ISO8601 Date/Time at which
the ping packet is sent
responseTime Integer The amount of time
(in milliseconds) for
the ping to response
ttl Integer Time-to-live value of
the ping
statistics Object containing
statistics of the ping
operations
Page 53
MultiDrive Web API 2.8 User Guide
9.2. Sites
9.2.1. List / Search Sites
URL /fleetManagement/sites
Method GET
Permission mdpSite [View]
Parameters Name Description Type Optional/ Valid Default
Mandatory values
siteCode Filter by match in Site code string Optional *
isPersistentComms Limits returned sites to those boolean Optional True *
which have a comms device with or
persistence of the specified type False
limit Maximum number of devices to Integer Optional 0- 5000
return status for in response 5000
offset Offset in devices to start Integer Optional * 0
returning statuses for in
response
Returns 200 OK
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
500 Internal Server Error
{
"sites" : [
{
"siteId" : 1,
"siteCode" : "SiteOne"
},...
]
}
Page 54
MultiDrive Web API 2.8 User Guide
Description
Property Optional/ Format Description
Mandatory
siteId Mandatory Integer A unique identifier for
the site
code Mandatory Text(50) A unique name for the
site, e.g. IMEI number.
communications- Mandatory STANDARD, OTHER is not supported
Type GPRS, by iE2
RF_MESH,
ZIGBEE, PLC,
OTHER
modemid Optional Integer Modem attached to this
site
simid Optional Integer SIM Card attached to this
site
signalStrength Optional Integer Signal Strength of the
GPRS/3G network
attached.
baseStation Optional String base station/cell tower
the site attached to.
siteComms- Mandatory
Settings
comms- Mandatory Must have at least one
Settings ipSettings or
modemSettings.
Holds any comms
settings that can be used
to communicate with the
site.
Page 55
MultiDrive Web API 2.8 User Guide
Page 56
MultiDrive Web API 2.8 User Guide
Page 57
MultiDrive Web API 2.8 User Guide
"model": "Mk10E",
"description": "The default device configuration for the EDMI MK10E metering
device.",
"channelSets": [
{
"code": "LS1",
"description": "_Default Profile Mapping",
"channels": [
{
"name":"E1",
"units":"Wh",
"flowDirection":"DELIVERED",
"apportionPolicy":"SUM",
"phase":"NONE"
},...
]
},
{
"code": "LS2",
"description": "Profile Mapping 2 (Auto)",
"channels": []
},...
],
"registerSets": [
{
"code": "RegisterSet1",
"registers": [
{
"name": "Wh Consumption Total",
"units": "WH",
"flowDirection": "DELIVERED",
"phase": "TOTAL",
"apportionPolicy": "SUM",
"touRate": "TOTAL"
},...
]
}
],
"eventLogs": [
{
"eventLogId": 1,
"name": "Event Log 1(Default)"
},...
]
}
}
Page 59
MultiDrive Web API 2.8 User Guide
Page 60
MultiDrive Web API 2.8 User Guide
Method POST
Permission mdpMeterGroup [Modify]
Payload {
"devices" : [
{
"deviceId" : 12,
},
{
"deviceId" : 13,
},
{
"deviceId" : 14,
}, ...
]
}
{
"devices" : [
{
"plantNumber" : "Meter at Level 1",
},
{
"plantNumber" : "Meter at Level 2",
},
{
"plantNumber" : "Meter at Level 3",
}, ...
]
}
Optional Non-async call back notification is an optional element. When present in the request, a notification
Payload will be POSTed to the URI provided when the processing of the request is complete.
Payload
Additional parameter to be added to existing payload if non-async callback is required:
{
"notification":
{
"uri": "<scheme>://someserver/notifyme"
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://non-async-callback Depending on the "callbackQueueType" setting in Callback
Service, the callback will be sent to a RabbitMQ queue or a
Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the
queue "non-async-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the
topic "non-async-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request with the following payload format
{
"callback":
{
"requestUri": "http://server/api/xxxx/1",
"callbackId": "653a20db-adbb-41c9-a09b-371798fbc058",
"statusCode": "404",
"message": "Device Id (17) not found",
"errorCode": "XXXXX-002"
}
}
Property Description
Page 62
MultiDrive Web API 2.8 User Guide
Payload
Additional parameter to be added to existing payload if non-async callback is required:
{
"notification":
{
"uri": "<scheme>://someserver/notifyme"
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
Page 63
MultiDrive Web API 2.8 User Guide
Notification
URI passed in will be called back as a POST request with the following payload format
{
"callback":
{
"requestUri": "http://server/api/xxxx/1",
"callbackId": "653a20db-adbb-41c9-a09b-371798fbc058",
"statusCode": "404",
"message": "Device Id (17) not found",
"errorCode": "XXXXX-002"
}
}
Property Description
requestUri The URI of the original Web API request
callbackId The unique identifier used to correlate the current callback to the
original Web API request
statusCode The response HTTP status code of the Web API request
message (Optional) Response message from the Web API
errorCode (Optional) Error code from the Web API, when statusCode is not 2XX.
Page 64
MultiDrive Web API 2.8 User Guide
{
"deviceGroupId" : 59,
}, ...
]
}
or by device group name
{
"leave" : [
{
"deviceGroupName" : "Device Group 1",
},
{
"deviceGroupName" : "Device Group 2",
},
{
"deviceGroupName" : "Device Group 3",
}, ...
],
"join" : [
{
"deviceGroupName" : "New Device Group 1",
},
{
"deviceGroupName" : "New Device Group 2",
}, ...
]
}
Note: When a wildcard match is required, a regular expression can be used in place of the specific
device group name.
E.g.
{
"leave" : [
{
"deviceGroupName" : "^Device Group (\d+)$",
}
],
"join" : [
{
"deviceGroupName" : "New Device Group 1",
}, ...
]
}
Property Required Type Description
Leave No Array of device Specifies the list of
group Ids or device groups from
Names which the device must
leave
deviceGroupId Yes, Integer Id of the device group
either deviceGroupId which the device must
or deviceGroupName leave
deviceGroupName (but not both) must String Name of the device
be specified group which the device
must leave. A regular
expression can be used
in place of the specific
device group name.
The device will leave all
the device groups with
names matching the
regular expression.
Join No Array of device Specifies the list of
group Ids or device groups which
Names the device must join.
deviceGroupId Yes, Integer Id of the device group
either deviceGroupId which the device must
or deviceGroupName join
deviceGroupName (but not both) must String Name of the device
be specified group which the device
must join.A regular
expression can be used
in place of the specific
Page 65
MultiDrive Web API 2.8 User Guide
Optional Non-async call back notification is an optional element. When present in the request, a notification will
Payload be POSTed to the URI provided when the processing of the request is complete.
Payload
Additional parameter to be added to existing payload if non-async callback is required:
{
"notification":
{
"uri": "<scheme>://someserver/notifyme"
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://non-async-callback Depending on the "callbackQueueType" setting in Callback
Service, the callback will be sent to a RabbitMQ queue or a Kafka
topic
callbackQueueType Description
RabbitMQ The callback will be sent to the queue
"non-async-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the topic
"non-async-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request with the following payload format
{
"callback":
{
"requestUri": "http://server/api/xxxx/1",
"callbackId": "653a20db-adbb-41c9-a09b-371798fbc058",
"statusCode": "404",
"message": "Device Id (17) not found",
"errorCode": "XXXXX-002"
}
}
Property Description
requestUri The URI of the original Web API request
callbackId The unique identifier used to correlate the current callback to the
original Web API request
statusCode The response HTTP status code of the Web API request
message (Optional) Response message from the Web API
errorCode (Optional) Error code from the Web API, when statusCode is not 2XX.
Page 66
MultiDrive Web API 2.8 User Guide
9.5. Commissioning
9.5.1. Commission a SMETS device in the system
URL /fleetManagement/smets/commission/
Method POST
Permission mdpDevice [Create]
Parameters Name Description Type Optional/ Valid Default
Mandatory values
SerialNumber Electrical / Gas Meter Serial String Mandatory
Number
IMEI HUB IMEI Number String Mandatory
ICCID SIM ICCID (In case the original String Optional
linked SIM card doesn't work)
NotifyPhoneNumber Phone number to notify on String Optional
commissioning success/fail
Returns 200 OK
400 Bad Request (empty serial number or IMEI)
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Serial Number, IMEI, ICCID does not exist)
500 Internal Server Error
Notes This API method results in a commissioning event created, which is searchable using "List / Search
Commissioning Events".
Page 67
MultiDrive Web API 2.8 User Guide
Page 68
MultiDrive Web API 2.8 User Guide
/fleetManagement/commission/plantNumber/{plantNumber}
Method POST
Permission mdpDevice [Create]
Parameters Name Description Type Optional/ Valid Default
Mandatory values
siteId Link device to this site String Optional *
deviceGroupId Assign device to this group Integer Optional *
scheduleId Run this schedule against the device String Optional *
Returns 200 OK
201 Created - includes location header containing the URN of the created execution
(/scheduling/executions/{executionId}) if a schedule id is included
400 Bad Request (Site id, deviceGroupId or schedule id is not valid)
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device id does not exist)
500 Internal Server Error
Notes This API method does not result in a commissioning event, hence it is not included in the results of "List /
Search Commissioning Events".
}
Or by plant number
{
"devices" : [
{
"plantNumber" : "Meter at Level 1",
},
{
"plantNumber" : "Meter at Level 2",
},
{
"plantNumber" : "Meter at Level 3",
}, ...
]
}
Returns 200 OK
400 Bad Request (deviceGroup id is not valid)
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device id does not exist)
500 Internal Server Error
Page 70
MultiDrive Web API 2.8 User Guide
"firmwareEdition" : 0,
"firmwareRevision" : 0,
"IPAddress" : "",
"ICCID" : "",
"MSISDN" : "",
"baseStation" : "",
"signalStrength" : 0,
"date" : "2013-01-22T12:14:33",
"status" : "FAILED",
"commissioningCode" : "" ,
"errorMessage" : "Signal Strength is too low"
},...
]
}
Notes This API method lists/searches the commissioning events created by "Commission a SMETS device in the
system".
Description
Property Optional/ Format Valid Values Description
Mandatory
deviceId Mandatory Integer Multidrive identifier
serialNumber Mandatory String Manufacturer serial number
plantNumber Mandatory String Customer assigned market identifier
modemIMEI Mandatory String Modem IMEI number
firmwareVersion Mandatory String Firmware Version
firmwareEdition Mandatory Integer Firmware Edition
firmwareRevision Mandatory Integer Firmware Revision
IPAddress Mandatory String IP address and port number
ICCID Mandatory String SIM ICC-ID
MSISDN Mandatory String SIM MSISDN (Phone number)
baseStation Mandatory String Base Station infomation
signalStrength Mandatory Integer Signal Strength
date Mandatory String Date of commissioning event
status Mandatory String PROCESSING, FAILED, Status of commissioning
SUCCESS
commissioningCode Mandatory String Commissioning code assigned
bymultidrive
errorMessage Mandatory String Error message which caused the
commission to fail
Page 71
MultiDrive Web API 2.8 User Guide
"status" : "FAILED",
"commissioningCode" : "" ,
"errorMessage" : "Signal Strength is too low"
},...
]
}
Description
Property Optional/ Format Valid Values Description
Mandatory
serialNumber Mandatory String Serial Number of Gas Meter involved
date Mandatory String Date of commissioning event
status Mandatory String PROCESSING, FAILED, Status of commissioning
SUCCESS
commissioningCode Mandatory String Commissioning code assigned by
multidrive
errorMessage Mandatory String Error message which caused the
commission to fail
Description
Property Optional/ Format Valid Values Description
Mandatory
MACAddress Mandatory String MAC Address of In Home Display Device
date Mandatory String Date of commissioning event
status Mandatory String PROCESSING, FAILED, Status of commissioning
SUCCESS
commissioningCode Mandatory String Commissioning code assigned by
multidrive
errorMessage Mandatory String Error message which caused the
commission to fail
Page 72
MultiDrive Web API 2.8 User Guide
9.6. Modems
Description
Property Optional/ Format Valid Values Description
Mandatory
modemId Mandatory Integer Modem Auto Id
imei Mandatory String modem IMEI (http://en.wikipedia.org/wiki/
International_Mobile_Station_Equipment_Identity)
status Mandatory String WAITING Status of Modem
INSTALLATION
/ INSTALLED /
OUT OF
SERVICE
modemModelName Optional String Modem Model Name
serialNumber Optional String Modem Serial Number
firmwareVersion Optional String Modem Firmware Version
Page 73
MultiDrive Web API 2.8 User Guide
Description
Property Optional/ Forma Valid Values Description
Mandatory t
simId Mandatory Integer SIM Auto Id
Page 75
MultiDrive Web API 2.8 User Guide
Page 76
MultiDrive Web API 2.8 User Guide
Description
Property Optional/ Format Valid Description
Mandatory Values
calorificValueId Mandatory Integer Calorific Value Auto Id
name Mandatory String Unique Identifier of the calorific group
conversionFactor Mandatory Float Conversion Factor
calorificValue Mandatory Float Calorific Value
/fleetManagement/writeDeviceSetupStages/plantNumber/{plantNumber}
Method POST
Permission mdpDeviceSetupTemplateAtlas2 [Create]
Payload
* Generic Atlas 2
Change TariffChangeoverData and TenancyData
{
"setupStages": [{
"stageName": "TariffChangeoverData",
"setupXml": "<TariffChangeoverData>
<CalendarChangeoverDate>2000-01-
01T00:00:00</CalendarChangeoverDate>
<PriceMatrixChangeoverDate>2000-01-
01T00:00:00</PriceMatrixChangeoverDate>
<BlockMonitorsChangeoverDate>2000-01-
01T00:00:00</BlockMonitorsChangeoverDate>
<CotChangeoverDate>2000-01-
18T00:00:00</CotChangeoverDate>
<StandingChargesChangeoverDate>2000-01-
01T00:00:00</StandingChargesChangeoverDate>
<MajorVersion>1</MajorVersion>
<MinorVersion>0</MinorVersion>
</TariffChangeoverData>"
},
{
"stageName": "TenancyData",
"setupXml": "<TenancyData>
<TenancyID>12</TenancyID>
<COT>2016-01-23T00:00:00</COT>
<MajorVersion>1</MajorVersion>
<MinorVersion>0</MinorVersion>
</TenancyData>"
}]
}
Page 78
MultiDrive Web API 2.8 User Guide
Change of Tenancy
{
"setupStages": [{
"stageName": "Tenancy",
"setupXml": "
<TenancyData>
<COT>2017-03-08T11:00:00</COT>
<TenancyID>somestring</TenancyID>
<ChangeOverDateTime>2017-03-08T11:00:00</ChangeOverDateTime>
</TenancyData>"
}]
}
Change of Supplier
{
"setupStages": [{
"stageName": "SMETS1Supplier",
"setupXml": "
<SMETS1SupplierData>
<NewSupplierDateTime >2017-03-08T11:00:00</NewSupplierDateTime>
<NewSupplierID>somestring</NewSupplierID>
<ChangeOverDateTime>2017-03-08T11:00:00</ChangeOverDateTime>
</SMETS1SupplierData>"
}]
}
Calorific Value
{
Page 79
MultiDrive Web API 2.8 User Guide
"setupStages": [{
"stageName": "CalorificValue",
"setupXml": "
<CalorificValue>
<PassiveConversionDataValue>
<CalorificValue>33300</CalorificValue>
</PassiveConversionDataValue>
<ActivateValuePassiveTime>2017-02-
28T10:00:00</ActivateValuePassiveTime>
</CalorificValue>"
}]
}
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can be
Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 80
MultiDrive Web API 2.8 User Guide
"retryCount": 2,
"retryDelay": 300000, // milliseconds
"timeToLive": 96, // hours
"executionTime": "2016-05-16T16:50:00Z"
}
}
Returns 202 Accepted - includes location header with the endpoint "/scheduling/executions/{executionId}" to
determine if schedule has been sent to the meter. This endpoint will return a 200 OK with a
representation of the commands status when the device has successfully received the command.
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device does not exist, or plantNumber not found)
500 Internal Error
Description
Property Format Default Value Valid Values Description
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given before
failing.
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", "Very MultiDrive schedules.
Low"
retry count Integer 2 0 to 255 Maximum number of retries for the schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the schedule
retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution status will
remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should run.
String If the specified time has passed when the request
reaches MultiDrive, the schedule will be executed
immediately.
Page 81
MultiDrive Web API 2.8 User Guide
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Description
Property Format Default Value Valid Values Description
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given before
failing.
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", "Very MultiDrive schedules.
Low"
retry count Integer 2 0 to 255 Maximum number of retries for the schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the schedule
retries.
Page 82
MultiDrive Web API 2.8 User Guide
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution status will
remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should run.
String If the specified time has passed when the request
reaches MultiDrive, the schedule will be executed
immediately.
Returns 200 OK
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device does not exist, or plantNumber not found)
500 Internal Server Error
{
"deviceSetup": {
"setupDate": "2016-01-01T00:00:00Z",
"setupString": "<<device setup string in MTR or XML format, Base64-
encoded>>"
}
}
Page 83
MultiDrive Web API 2.8 User Guide
}
Note: When specifying the setup template to create, the revision can be 0 and/or the firmwareVersion
can be omitted.
Payload
Page 84
MultiDrive Web API 2.8 User Guide
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Description
Property Format Default Value Valid Values Description
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given before
failing.
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", "Very MultiDrive schedules.
Low"
retryCount Integer 2 0 to 255 Maximum number of retries for the schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the schedule
retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution status will
remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should run.
String If the specified time has passed when the request
reaches MultiDrive, the schedule will be executed
immediately.
Page 85
MultiDrive Web API 2.8 User Guide
Chapter
Scheduling API
10
0
ter1
p
a
h
C
10.1 Schedules
10.1.1. List / Search Schedules
URL /scheduling/schedules
Method GET
Permission mdpSchedule [View]
Parameters Name Description Type Optional/ Valid values Default
Mandatory
name Filter by match in string Optional *
schedule name
status Filter by schedule string Optional Active, Manual *
status, whether the
schedule is activated
or needs to be
manually triggered
deviceId Filter by schedules Integer Optional
associated with this
device
scheduleIncludes- Limits inclusion of string Optional List of comma *
Features schedules which separated operations
perform. TOU, LOAD_PROFILE,
SETTIME, SETUP,
FIRMWARE
Returns 200 OK
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
500 Internal Server Error
{
"schedules" : [
{
"scheduleId" : 12,
"name" : "Important Read Schedule 1",
"lastExecution" :
{
"executionId" : 14,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"connectAttempts" : 1
}
"nextRun" : "2013-01-22T10:00:00",
"status" : "Active",
"maxRetries" : 2
},
{
"scheduleId" : 14,
"name" : "Important Read Schedule 2",
"lastExecution" :
{
"executionId" : 0,
"startDate" : "",
"endDate" : "",
Page 86
MultiDrive Web API 2.8 User Guide
"jobsWithSuccess" : 0,
"jobsWithFailure" : 0,
"status" : "",
"hasWarning" : "false",
"connectAttempts" : 0
}
"nextRun" : "",
"status" : "Manual Trigger",
"maxRetries" : 3
},
{
"scheduleId" : 15,
"name" : "Important Read Schedule 3",
"lastExecution" :
{
"executionId" : 14,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Failed",
"hasWarning" : "true",
"connectAttempts" : 2,
}
"nextRun" : "2013-01-22T10:00:00",
"status" : "Active",
"maxRetries" : 3
}
]
}
Description
Property Optional/ Format Description
Mandatory
scheduleId Mandatory Integer A unique identifier for the schedule.
name Mandatory Text A descriptive name for the schedule.
recurrence Optional Recurrence rule for schedules that are set to run automatically. Omitted for
schedules that are only triggered manually/via the API.
lastRun Optional ISO8601 The date and time the schedule was last run. Omitted if the schedule has
never been triggered.
nextRun Optional ISO8601 The next date and time the schedule is set to run (if the schedule is set to
run automatically).
status Mandatory Active, Active indicates the schedule is set to run automatically by the system.
Manual Manual indicates the schedule can only be triggered by an external request.
Page 87
MultiDrive Web API 2.8 User Guide
10.2. Executions
10.2.1. Trigger Regular Schedule As Configured
URL /scheduling/schedules/{scheduleId}/executions
/scheduling/schedules/name/{scheduleName}/executions
Method POST
Permission mdpScheduleRunNow [View]
Description Triggers a schedule to run as configured in the system using the device groups it has been
configured for. This does not run the schedule on any user defined devices or groups.
Notification is an optional element and when present will mean that a notification will be POSTed
to the URI provided based on the notificationEvent requested. If not requiring notification (using
polling instead) then payload can be Empty.
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can be
Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a
Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the
queue "schedule-execution-
callback" on the configured
RabbitMQ broker
Kafka The callback will be sent to the
topic "schedule-execution-
callback" on the configured Kafka
broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 88
MultiDrive Web API 2.8 User Guide
Returns 201 Created - includes location header containing the URN of the created execution
(/scheduling/executions/{executionId})
400 Bad Request (Payload is invalid or not well formed or device ids are be invalid)
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found
500 Internal Server Error
Notification is an optional element and when present will mean that a notification will be POSTed
to the URI provided based on the notificationEvent requested. If not requiring notification (using
polling instead) then payload can be Empty.
Payload {
"devices" :
[
{
"deviceId" : 1,
},
{
"deviceId" : 2,
},...
]
}
or by device plant number
{
"devices" :
[
{
"plantNumber" : "Meter at Level 1",
},
{
"plantNumber" : "Meter at Level 2",
},...
]
}
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can
be Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a
Kafka topic
callbackQueueType Description
Page 89
MultiDrive Web API 2.8 User Guide
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 90
MultiDrive Web API 2.8 User Guide
"totalJobs" : 9,
"queuedJobs" : 2,
"scheduleCreated" : "2013-01-21T09:00:00",
"scheduleLastRun" : "2013-01-21T09:30:00"
},
{
"executionId" : 15,
"scheduleId" : 54,
"scheduleName" : "Another Important Read Schedule",
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 0,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 5,
"queuedJobs" : 1,
"scheduleCreated" : "2013-01-21T09:00:00",
"scheduleLastRun" : "2013-01-21T09:31:00"
},
{
"executionId" : 83,
"scheduleId" : 54,
"scheduleName" : "Unimportant schedule...",
"startDate" : "2013-01-21T10:00:00",
"endDate" : "",
"jobsWithSuccess" : 0,
"jobsWithFailure" : 0,
"status" : "Pending",
"hasWarning" : "true",
"totalJobs" : 16,
"queuedJobs" : 7,
"scheduleCreated" : "2013-01-21T09:00:00",
"scheduleLastRun" : "2013-01-21T09:32:00"
},
...
]
}
Note: "scheduleCreated" and "scheduleLastRun" are only available for predefined schedules. These
fields are not applicable to ad-hoc schedule execution.
10.2.4. Get Schedule Execution
URL /scheduling/executions/{executionId}
Method GET
Permission mdpScheduleExecutions [View]
Returns 200 OK
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found
500 Internal Server Error
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2,
"scheduleCreated" : "2013-01-21T09:00:00",
"scheduleLastRun" : "2013-01-21T09:30:00"
}
}
Note: "scheduleCreated" and "scheduleLastRun" are only available for predefined schedules. These
fields are not applicable to ad-hoc schedule execution.
Page 91
MultiDrive Web API 2.8 User Guide
Page 92
MultiDrive Web API 2.8 User Guide
"hasWarning" : "false",
"lastError" : ""
},...
]
}
Page 93
MultiDrive Web API 2.8 User Guide
{
"entryDate" : "2013-01-25T09:57:09+0000",
"logEntry" : "Login"
},
{
"entryDate" : "2013-01-25T09:58:09+0000",
"logEntry" : "Timeout on meter "124000001""
},
{
"entryDate" : "2013-01-25T09:59:09+0000",
"logEntry" : "Rescheduled for 2013-01-24 18:20:41.432"
},...
]
}
Description
Property Format Optional/ Description
Mandatory
entryDate ISO8601 Mandatory Date and time data was sent/received,
data Text Mandatory Raw data sent/received.
transmitted Boolean Mandatory true - data was sent to the device
false - data was received from the device
Page 95
MultiDrive Web API 2.8 User Guide
{
"entryDate" : "2013-01-25T09:58:09+0000",
"data" : "8F4BBE80E62347CF2CFB45444D49 ",
"transmitted" : true,
},
{
"entryDate" : "2013-01-25T09:59:09+0000",
"data" : "8F066B60",
"transmitted" : false,
},...
]
}
Description
Property Format Optional/ Description
Mandatory
entryDate ISO8601 Mandatory Date and time data was sent/received,
data Text Mandatory Raw data sent/received.
transmitted Boolean Mandatory true - data was sent to the device
false - data was received from the device
Page 96
MultiDrive Web API 2.8 User Guide
Chapter
11
Prepayment API
URL /prepayment/credit/{deviceId}
/prepayment/credit/plantNumber/{plantNumber}
Method POST
Permission mdpPrepaymentTopup [View]
Payload {
"prepaymentCredit" :
{
"dollarValue" : 1.00,
},
}
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can be
Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a Kafka
topic
callbackQueueType Description
RabbitMQ The callback will be sent to the
queue "schedule-execution-callback"
on the configured RabbitMQ broker
Kafka The callback will be sent to the topic
"schedule-execution-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
Page 97
MultiDrive Web API 2.8 User Guide
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Description
Property Format Default Value Valid Values Description
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given before
failing.
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", "Very MultiDrive schedules.
Low"
retryCount Integer 2 0 to 255 Maximum number of retries for the schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the schedule
retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution status will
remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should run.
String If the specified time has passed when the request
reaches MultiDrive, the schedule will be executed
immediately.
Page 98
MultiDrive Web API 2.8 User Guide
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a
Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the
queue "schedule-execution-
callback" on the configured
RabbitMQ broker
Kafka The callback will be sent to the
topic "schedule-execution-
callback" on the configured Kafka
broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 99
MultiDrive Web API 2.8 User Guide
Description
Property Format Default Value Valid Values Description
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given before
failing.
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", MultiDrive schedules.
"Very Low"
retryCount Integer 2 0 to 255 Maximum number of retries for the schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the schedule
retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution status
will remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should run.
String If the specified time has passed when the request
reaches MultiDrive, the schedule will be
executed immediately.
11.3. Get prepayment information for a device (with EDMI Atlas Proprietary
Prepayment System)
URL /prepayment/status/{deviceId}
/prepayment/status/plantNumber/{plantNumber}
Method GET
Permission mdpPrepaymentInformation [View]
Returns 200 OK
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device Id, plant number or device group id does not exist)
500 Internal Server Error
{
"prepaymentStatus" :
{
"readingDate" : "2013-01-21T10:00:00",
"prepaymentMode" : "credit",
"currency" : "dollars",
"creditType" : "",
"normalCredit" : 1.00,
"emergencyCredit" : 5.00,
"fuelDebt" : 1.00,
"nonFuelDebt" : 1.33,
"totalCreditAdded" : 10.00,
"miscInfo" : "",
},
}
Page 100
MultiDrive Web API 2.8 User Guide
}
Property Format Default Valid Values Description
Value
creditBalance Integer None -9223372036854775808 Depending on the meter firmware
to implementations, this is either the new
9223372036854775807 value for credit balance or the
adjustment to be applied to the
existing credit balance.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a Kafka
topic
callbackQueueType Description
RabbitMQ The callback will be sent to the queue
"schedule-execution-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the topic
"schedule-execution-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 101
MultiDrive Web API 2.8 User Guide
Page 102
MultiDrive Web API 2.8 User Guide
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can be
Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a Kafka
topic
callbackQueueType Description
RabbitMQ The callback will be sent to the queue
"schedule-execution-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the topic
"schedule-execution-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 103
MultiDrive Web API 2.8 User Guide
404 Not Found (Device Id, plant number or device group id does not exist)
500 Internal Error
Description
Property Format Default Value Valid Values Description
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given before
failing.
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", "Very MultiDrive schedules.
Low"
retryCount Integer 2 0 to 255 Maximum number of retries for the schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the schedule
retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution status will
remain in the system.
{
"utrn" :
{
"token" : "00004398128020693249"
},
}
{
"tokenTransfer": {
Page 104
MultiDrive Web API 2.8 User Guide
"executionId": 125,
"transactionDateTime": "2018-01-21T10:00:00",
"devices": [{
"deviceId": 32,
"plantNumber": "Device01",
"tokens": [{
"tokenSequence": 1,
"token": "azxjv0asjtoaj9ghaond",
"tokenStatus": ["Accepted"],
"creditBalance": null
},{
"tokenSequence": 2,
"token": "yxp4anywyxnqdg9hajln",
"tokenStatus": ["Overflow_credit_balance"],
"creditBalance": 3.00
}]
}, ... ]
}
}
Description
Property Format Description
executionId Integer Id of schedule execution through which the token
transfers are transacted
transactionDateTime ISO8601 The date and time at which the token transfers are
transacted
devices An array of devices for which token transfers are
transacted
deviceId Integer ID of the device
plantNumber String Plant number of the device
tokens An array of tokens transferred for the device
tokenSequence Integer The sequence number of the token transferred
token String The token transferred
tokenStatus Array of String The statuses of the token transfer.
Valid values:
• Authentication_failed,
• Validation_failed,
• Token_older_than_oldest_token_in_meter,
• Token_used_in_meter,
• Meter_key_expired,
• Accepted,
• Token_has_Error,
• First_KCT_entered,
• Second_KCT_entered,
• Overflow_credit_balance
creditBalance Double The new credit balance after the token transfer (as
dollar and cent)
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
Page 105
MultiDrive Web API 2.8 User Guide
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a
Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the
queue "schedule-execution-
callback" on the configured
RabbitMQ broker
Kafka The callback will be sent to the
topic "schedule-execution-
callback" on the configured Kafka
broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Description
Page 106
MultiDrive Web API 2.8 User Guide
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", MultiDrive schedules.
"Very Low"
retryCount Integer 2 0 to 255 Maximum number of retries for the schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the schedule
retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution status
will remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should run.
String If the specified time has passed when the request
reaches MultiDrive, the schedule will be
executed immediately.
Description
Page 107
MultiDrive Web API 2.8 User Guide
Page 108
MultiDrive Web API 2.8 User Guide
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can be
Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a
Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the
queue "schedule-execution-
callback" on the configured
RabbitMQ broker
Kafka The callback will be sent to the topic
"schedule-execution-callback" on
the configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 109
MultiDrive Web API 2.8 User Guide
Description
Page 110
MultiDrive Web API 2.8 User Guide
},
...
]
}
Optional Call back notification is an optional element and when present will mean that a notification will be
Payload POSTed to the URI provided. If not requiring notification (using polling instead) then payload can be
Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a Kafka
topic
callbackQueueType Description
RabbitMQ The callback will be sent to the queue
"schedule-execution-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the topic
"schedule-execution-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 111
MultiDrive Web API 2.8 User Guide
Returns 202 Accepted - includes location header to schedule execution history to determine if it has been sent
to the meter /scheduling/executions/{executionId}, This/scheduling/executions/{executionId} endpoint
will return a 200 OK with a representation of the commands status, or a when the device has
successfully received the command.
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
404 Not Found (Device Id, plant number or device group id does not exist)
500 Internal Error
Description
URL /prepayment/info/devices
Method POST
Permission mdpPrepaymentInformation [View]
Payload by device id
{
"devices" : [
{
"deviceId" : 12,
},
{
"deviceId" : 13,
},
{
"deviceId" : 14,
}, ...
]
}
Payload
Additional parameter to be added to existing payload if callback is required:
Page 112
MultiDrive Web API 2.8 User Guide
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback
callback Service, the callback will be sent to a RabbitMQ queue or a
Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the
queue "schedule-execution-
callback" on the configured
RabbitMQ broker
Kafka The callback will be sent to the
topic "schedule-execution-
callback" on the configured Kafka
broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Page 113
MultiDrive Web API 2.8 User Guide
Description
Page 114
MultiDrive Web API 2.8 User Guide
{
"prepaymentInfo": [
{
"deviceId" : 14,
"plantNumber" : "Meter at Level 3",
"prepaymentMode": "Prepaid",
"stsKeyRevisionNumber": 456,
"stsSupplyGroupCode": "1234567890",
"tariffIndex": 1,
"remainingCredit": 12.3,
"creditType": "TokenCredit",
"priority": 1,
"warningThreshold": 10.3,
"creditLimit": 5.3,
"creditConfigurations": [ "RequiresVisual", "RequiresConfirmation",
"RequiresCreditPaidBack" ],
"creditStatus": "Selectable",
"presetCreditAmount": 12.3,
"availableThreshold": 10.3,
"period": "2016-04-28T12:30:00.000+0000",
"lastReadDate": "2016-04-28T12:30:00.000+0000",
"lastTopUpTime": "2016-04-28T11:30:00.000+0000",
"lastTopUpAmount": 10.0,
"lastTopUpToken: "8F4BA6945A1F74C5791C45444D49",
"totalUsedAmount": 50.6,
"totalCredit": 40.6
},
...
]
}
Description
Page 115
MultiDrive Web API 2.8 User Guide
Chapter
12
Diagnostic API
URL /diagnostic/readRegister/{deviceId}
/diagnostic/readRegister/plantNumber/{plantNumber}
/diagnostic/readRegister/deviceGroup/{deviceGroupId}
/diagnostic/readRegister/deviceGroup/name/{deviceGroupName}
Method POST
Permission mdpDiagnosticRegister [View]
Page 116
MultiDrive Web API 2.8 User Guide
Payload
{
"diagnosticRegisters" : [
{
"registerNumber" : "F002",
"type" : "String"
},...
]
}
Optional Payload Call back notification is an optional element and when present will mean that a notification
will be POSTed to the URI provided. If not requiring notification (using polling instead) then
payload can be Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in
callback Callback Service, the callback will be sent to a
RabbitMQ queue or a Kafka topic
Page 117
MultiDrive Web API 2.8 User Guide
callbackQueueType Description
RabbitMQ The callback will be sent to
the queue "schedule-
execution-callback" on the
configured RabbitMQ
broker
Kafka The callback will be sent to
the topic "schedule-
execution-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Description
Property Format Default Value Valid Values Description
Page 118
MultiDrive Web API 2.8 User Guide
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given before
failing.
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", "Very MultiDrive schedules.
Low"
retryCount Integer 2 0 to 255 Maximum number of retries for the schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the schedule
retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution status will
remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should run.
String If the specified time has passed when the request
reaches MultiDrive, the schedule will be executed
immediately.
AKA Diagnostic Registers. Note diagnostic registers are not supported by iE2 at this time.
Page 119
MultiDrive Web API 2.8 User Guide
"recordDateTime":"2012-06-10T12:30:00.000+0000",
"diagnosticValues":[{
"registerNumber":"F061",
"type":"DateTime",
"value":"2012-06-10T10:30:00.000+0000"
},{
"registerNumber":"2020",
"type":"Float",
"value":"123"
}, ...]
}]
}
23.2.1. Description
Property iE2 Import Format Description
Usage
diagnosticDataSet Unused -
deviceId Unused Integer Device Id
plantNumber Unused Text The manufacturer serial number of the
device
recordDateTime Unused ISO8601 The timestamp when the values were
recorded
diagnosticValues Unused - Values for a single diagnostic register
registerNumber Unused Text The register number being recorded
type Unused See data The datatype from this register
types
below
value Unused Text The value from this register
• Word,
• DWORD,
• ShortInt,
• SmallInt,
• LongInt,
• Int64,
• Float,
• Double,
• Extended,
• Boolean,
• String,
• Date,
• Time,
• DateTime,
• Blob,
• Format,
• ErrorInfo,
• NULL,
• Address,
• Currency,
• WavHarm,
• WideString
Optional Payload Call back notification is an optional element and when present will mean that a notification will
be POSTed to the URI provided. If not requiring notification (using polling instead) then payload
can be Empty.
Payload
Additional parameter to be added to existing payload if callback is required:
{
"notification":
{
"uri": "http://someserver/notifyme"
},
"notifyStatus":
{
"status": [ "Complete", "No Jobs" ]
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://schedule-execution- Depending on the "callbackQueueType" setting in Callback Service,
callback the callback will be sent to a RabbitMQ queue or a Kafka topic
callbackQueueType Description
RabbitMQ The callback will be sent to the queue
"schedule-execution-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the topic
"schedule-execution-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request.
Payload will be the same as Get Schedule Execution (/scheduling/executions/{executionId})
Page 121
MultiDrive Web API 2.8 User Guide
{
"execution": {
"executionId" : 14,
"scheduleId" : 12,
"startDate" : "2013-01-21T10:00:00",
"endDate" : "2013-01-21T12:00:00",
"jobsWithSuccess" : 3,
"jobsWithFailure" : 5,
"status" : "Complete",
"hasWarning" : "true",
"totalJobs" : 10,
"queuedJobs" : 2
}
}
Status can be Unknown, Queued, Running, Complete, No Jobs, Cancelled, Paused
Description
Property Format Default Value Valid Values Description
duration Integer 86400 60 to 2147483647 Number of seconds the schedule is given before
failing.
priority String “Medium” "Very High", "High", Priority of the schedule relative to all other
"Medium", "Low", "Very MultiDrive schedules.
Low"
retryCount Integer 2 0 to 255 Maximum number of retries for the schedule.
retryDelay Integer 300000 60000 to 2147483647 Number of milliseconds to wait for the schedule
retries.
timeToLive Integer 96 1 to 32767 Number of hours the schedule execution status will
remain in the system.
executionTime ISO8601 Date - - Date and time when the schedule should run.
String If the specified time has passed when the request
reaches MultiDrive, the schedule will be executed
immediately.
Page 122
MultiDrive Web API 2.8 User Guide
Page 123
MultiDrive Web API 2.8 User Guide
Chapter
13
Notification API
3
ter1
p
a
h
C
Page 124
MultiDrive Web API 2.8 User Guide
notificationId Integer The notification identifier to be used when acknowledging the alarm. Note:
Multiple alarms may contain the same notification identifier.
Page 125
MultiDrive Web API 2.8 User Guide
Chapter
14
System API
URL /system/authToken
Method POST
Payload None
Permission NA
Authentication This call requires basic HTTP authentication credentials to be set
Returns 200 OK
400 Bad Request (Request is not properly formed)
401 Unauthorized (Username/password is invalid)
403 Forbidden (Username has been disabled)
500 Internal Server Error
{
"authToken" : {
"token" : "a0a8b777cd73739e99d000dfff",
}
}
Basic HTTP authentication is done using the username/password of the user as current stored in MultiDrive. This also
provides the access capabilities for the user.
All users must first request an access token from the System Management API. That token then must be passed in with all
API calls.
All API calls will validate the token in the system before allowing any request.
• Any request for which the token does not exist (or has been deleted) will respond with a “HTTP 401 Unauthorised”
response.
• Any request for which the token indicates that the user is not allowed to access will respond with a “HTTP 403
Forbidden” response.
Page 126
MultiDrive Web API 2.8 User Guide
Returns 200 OK
400 Bad Request (Request is incorrectly formed)
401 Unauthorized (username/password is invalid)
403 Forbidden (Username is disabled)
404 Not Found (Token not found)
500 Internal Server Error
Page 127
MultiDrive Web API 2.8 User Guide
Chapter
15
Method POST
Permission mdpDevice [Modify]
Payload {
"start": "2017-05-21",
"end": "2017-06-21",
"devices": [
{
"deviceId": 12,
},
{
"deviceId": 13,
},
{
"deviceId": 14,
}
]
}
Or
{
"start": "2017-05-21",
"end": "2017-06-21",
"devices": [
{
"plantNumber": "Meter1",
},
{
"plantNumber": "Meter2",
},
{
"plantNumber": "Meter3",
}
]
}
Page 128
MultiDrive Web API 2.8 User Guide
Optional Non-async call back notification is an optional element. When present in the request, a notification will
Payload be POSTed to the URI provided when the processing of the request is complete.
Payload
Additional parameter to be added to existing payload if non-async callback is required:
{
"notification":
{
"uri": "<scheme>://someserver/notifyme"
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
https https://someserver/notifyme The callback will be posted to the HTTP URL
"https://someserver/notifyme"
topic topic://non-async-callback Depending on the "callbackQueueType" setting in Callback
Service, the callback will be sent to a RabbitMQ queue or a Kafka
topic
callbackQueueType Description
RabbitMQ The callback will be sent to the queue
"non-async-callback" on the
configured RabbitMQ broker
Kafka The callback will be sent to the topic
"non-async-callback" on the
configured Kafka broker
Notification
URI passed in will be called back as a POST request with the following payload format
{
"callback":
{
"requestUri": "http://server/api/xxxx/1",
"callbackId": "653a20db-adbb-41c9-a09b-371798fbc058",
"statusCode": "404",
"message": "Device Id (17) not found",
"errorCode": "XXXXX-002"
}
}
Property Description
requestUri The URI of the original Web API request
callbackId The unique identifier used to correlate the current callback to the
original Web API request
statusCode The response HTTP status code of the Web API request
message (Optional) Response message from the Web API
errorCode (Optional) Error code from the Web API, when statusCode is not 2XX.
Page 129
MultiDrive Web API 2.8 User Guide
Or
{
"start": "2017-05-21",
"devices": [
{
"plantNumber": "Meter1",
},
{
"plantNumber": "Meter2",
},
{
"plantNumber": "Meter3",
}
]
}
Optional Non-async call back notification is an optional element. When present in the request, a notification will
Payload be POSTed to the URI provided when the processing of the request is complete.
Payload
Additional parameter to be added to existing payload if non-async callback is required:
{
"notification":
{
"uri": "<scheme>://someserver/notifyme"
}
}
<scheme> can be "http", "https" or "topic".
Scheme Example Uri Descripion
http http://someserver/notifyme The callback will be posted to the HTTP URL
"http://someserver/notifyme"
Page 130
MultiDrive Web API 2.8 User Guide
Notification
URI passed in will be called back as a POST request with the following payload format
{
"callback":
{
"requestUri": "http://server/api/xxxx/1",
"callbackId": "653a20db-adbb-41c9-a09b-371798fbc058",
"statusCode": "404",
"message": "Device Id (17) not found",
"errorCode": "XXXXX-002"
}
}
Property Description
requestUri The URI of the original Web API request
callbackId The unique identifier used to correlate the current callback to the
original Web API request
statusCode The response HTTP status code of the Web API request
message (Optional) Response message from the Web API
errorCode (Optional) Error code from the Web API, when statusCode is not 2XX.
Page 131
MultiDrive Web API 2.8 User Guide
Or
{
"start": "2017-05-21",
"end": "2017-06-21",
"devices": [
{
"plantNumber": "Meter1",
},
{
"plantNumber": "Meter2",
},
{
"plantNumber": "Meter3",
}
]
}
Returns 200 OK
400 Bad Request (Request is not properly formed, or end date is not later than start date)
401 Unauthorized (Token invalid)
403 Forbidden (Access not allowed)
500 Internal Server Error (MDDCS not reachable, or download start/end dates not set correctly for one
or more devices)
Page 132
MultiDrive Web API 2.8 User Guide
Appendix
A
API Error Codes
Page 133
MultiDrive Web API 2.8 User Guide
Page 134
MultiDrive Web API 2.8 User Guide
Page 135
MultiDrive Web API 2.8 User Guide
Page 136
MultiDrive Web API 2.8 User Guide
Page 137
MultiDrive Web API 2.8 User Guide
Page 138
MultiDrive Web API 2.8 User Guide
Page 139
MultiDrive Web API 2.8 User Guide
Page 140
MultiDrive Web API 2.8 User Guide
Page 141
MultiDrive Web API 2.8 User Guide
Page 142
MultiDrive Web API 2.8 User Guide
Page 143
MultiDrive Web API 2.8 User Guide
Page 144
MultiDrive Web API 2.8 User Guide
Page 145
MultiDrive Web API 2.8 User Guide
msg_OK OK
Notification Notification-000 Invalid payload
Notification-001 remark property not specified
Notification-002 notifications property not specified
Notification-003 Invalid notificationId
Notification-004 Exceeds maximum number of notifications allowed for acknowledgment
Notification-005 Invalid Callback url
Notification-006 Payload not specified
Notification-007 Uri not specified for callback notification
Notification-404 Notification Ids not found in MultiDrive
Notification-500 Internal Error occurred. Please contact your System Administrator.
Notification-501 Internal Server Error. There was an error in MDSCI method call. Please
check the MDSCI logs
Notification-502 Component for Alarm Callback is not initialized correctly
MDDCS MDDCS-000 Payload is not valid
MDDCS-001 Payload is empty
MDDCS-002 Device Id not found
MDDCS-003 MDDCS unreachable
MDDCS-004 Start date is not valid
MDDCS-005 End date is not valid
MDDCS-006 End date must be later than Start date
MDDCS-007 Device Id is not valid
MDDCS-008 Should not specify both Device Id and Plant number
MDDCS-009 Device Id/Plant number property is empty
MDDCS-010 MDDCS API application setting is not configured
MDDCS-011 Plant number not found
MDDCS-012 Failed to request MDDCS AuthToken
MDDCS-013 Start date must be later than current date
MDDCS-014 Start/End date must not be later than current date
MDDCS-015 End date must be later than or equal to Start date
MDDCS-500 Internal Error occurred. Please contact your System Administrator
Page 146
MultiDrive Web API 2.8 User Guide
Appendix
B
Value Description
NONE No flow direction.
DELIVERED Forward or Import as per IEC definition. Also known as Consumption; Inbound.
RECEIVED Reverse or Export as per IEC definition. Also known as Generation; outbound
ABSOLUTE Total as per IEC definition. Sum of delivered and received; total flow.
Page 147
MultiDrive Web API 2.8 User Guide
Page 148
MultiDrive Web API 2.8 User Guide
NONE
C (degrees) Celsius NONE NONE MIN MAX AVG
M3 m³, cubic metre DELIVERED NONE SUM
RECEIVED
L l, Litre DELIVERED NONE SUM
RECEIVED
GAL Gallon NONE NONE SUM
KG kilogramme DELIVERED NONE SUM
RECEIVED
J Joule DELIVERED NONE SUM
RECEIVED
OHM Ohm NONE NONE AVG
CURRENCY Currency DELIVERED
RECEIVED
NONE
DB Decibel (dB) NONE NONE AVG
HZ hertz NONE NONE AVG
PHASE_ANGLE Phase angle (º) NONE ABC AVG
NONE
VOLTAGE_ANGLE Voltage angle (º) NONE ABC AVG
NONE
PERCENT Percent (%) NONE NONE AVG
NUMERIC Numeric (no unit) NONE NONE SUM
BOOLEAN Boolean (true and false) NONE NONE MAX
CURRENT_THD Currrent Total Harmonic Distortion NONE ABC AVG
NONE
VOLTAGE_THD Voltage Total Harmonic Distortion NONE ABC AVG
NONE
CUMULATIVE Value is accumulated since the day device had been installed and activated
The diagram below explained the different between Interval and Cumulative value:
Page 149
MultiDrive Web API 2.8 User Guide
Appendix
C
Device Setup Template
8
ter1
p
a
h
C
Page 150
MultiDrive Web API 2.8 User Guide
</TestTask>
<TestTask>
<Name>Apply_Config</Name>
<DLMSTask>SetAttribute</DLMSTask>
<ObisCode>0.0.96.128.4.255</ObisCode>
<InterfaceClass>1</InterfaceClass>
<Index>2</Index>
<DLMSAttributeValues>
<Unsigned Value="01" /></DLMSAttributeValues>
</TestTask>
</TestTasks>
Page 151