What’s here?

This page describes the Aeris AerTraffic™ System Web Services interface for retrieving Device traffic and billing data. Similar information is available via our web-based UI, AerPort™.

AerTraffic Overview

The AerTraffic 2.1 API includes the following set of APIs:

The Online Reports API provides quick reports with a feature to download a report preview and the complete report file.

The Scheduled Reports API provides the ability to create report templates with a defined frequency. The API will trigger the reports on their scheduled frequency and an email will be forwarded to the defined recipients once report generation is complete. A link will be provided in the email to allow the user to download the report.

The Trend Reports API provides various account trends including device counts, overage charges, and packet/SMS usage.

Base URLs

The URL address for the production service is shown in the table below.

Base URLVersionPurpose
https://aertrafficapi.aeris.com/v11AerTraffic production instance
Table1: AerTraffic Base URL

API XSD Documentation

EnvironmentURL
Productionhttps://aertrafficapi.aeris.com/index.html
Table 2: API XSD Documentation
XSDs
report-attributes.xsd.txt
report-basetypes.xsd.txt
report-compositetypes.xsd.txt
report-persistence.xsd.txt
Table 3: XSDs

API Request, Headers and Parameters

AerTraffic 2.1 APIs are only available over HTTPS.

Each API access must include the appropriate API Key in the request URL as shown in the examples. The parameter name is “apiKey”.

All API must include Content-Type header with value application/json.

API Client Authentication

Every request to the API should be authorized with a valid API Key. This should be passed as a query parameter in the URLs.

There is a direct relation between the accountID and the apiKey passed in the URL. A valid apiKey but of a different account will face un-authorized Exceptions.

The API Keys are unique and secret keys. These must be saved securely and should be shared with authorized users or applications only.

Unique IDs

There are 2 sets of Unique IDs:

Request ID: Every Response will hold a unique 36-bit, alpha-numeric request ID and can be used to track the complete transaction.

Archive ID: Every report generated will be stored with a unique 36-bit, alpha-numeric archive ID.

Date Information

All dates are in Greenwich Mean Time (GMT) for input and output parameters.

Start date inputs are interpreted as “begin” dates and will return records starting with the first second of the date entered.

End date inputs are interpreted as “through” dates and will return records ending with the last second of the date entered.

The billing period calendar month also starts and stops on GMT monthly boundaries.

Report Definitionstopics

Account Reports

Account level reports provide general data for all devices in the account, or for a specified group of devices. There are three Account level reports:

Account Traffic Cost Summary Report

Formerly named Traffic Cost Summary Report

Summarizes usage and overage charges based on Pool Name or Report Group over a specified time period.

Account Devices Detail Report

Formerly named Device Detail Report

Provides a listing of all devices and device attributes within the selected Device Filters.

Account Devices Summary Report

Formerly named Device Summary Report

Provides a device count based on the group of devices selected.

Device Reports

Device level reports allow you to obtain detailed data for a specific device or group of devices. There are four Device level reports:

Daily Device Traffic Usage Report

Formerly named: Daily Traffic Cost Report

Provides the total SMS, Data, and Voice usage for the indicated device(s) for each day during a specified time period.

Device Traffic Summary Report

Formerly named Traffic Detail Report

Provides details for all network and traffic events (billable and non-billable) for the indicated device(s) over a specified time period. All traffic events are timestamped.

Device Status Activity

Formerly named Device Activity Report

Lists all status changes, rate plan changes, and pool changes for the indicated device(s) over a specified time period in chronological order. This report does not contain any traffic information.

Trend Reports

There are three trend reports available through AerTraffic 2.1:

Device Summary

Provides a high level view of all devices categorized by current status (Provisioned, Billed or Suspended) for the last 3 months.

Overage Charges

Provides overage charges for Packet Data, SMS, and Voice for the last 3 months.

SMS/Packet

Provides total SMS (MO and MT) and Packet usage for each day over the past week.

Online Reports

Online reports are generated upon request and provide an immediate report output.

Once report generation is complete, an email containing a link to download the full report is sent to the user.

The download link provided in the email is valid for 5 days. After 5 days, the link will expire and the report must be generated again.

Scheduled Reports

Scheduled reports are generated and delivered to a set of configured email recipients based on a user-defined frequency, for example a billing report or a summary report that is generated and delivered via email once per week.

To define a scheduled report, report “templates” are created to specify the report type, report parameters and delivery frequency.

The download link provided in the email is valid for 5 days. After 5 days, the link will expire and the report must be generated again.

Scheduled reports can be delivered on a daily, weekly, or monthly frequency.

A maximum of 5 scheduled reports is allowed per account (additional scheduled reports can be requested by contacting your account manager).

Once report generation is complete, an email containing a link to download the full report is sent to each email recipient.

The download link provided in the email is valid for 5 days. After 5 days, the link will expire and the report must be retrieved from the report archives (if the report is still available).

Scheduled Report Generation

Scheduled reports are recurring and will continue to generate by the indicated frequency until the report template is deleted.

Scheduled report generation will begin at midnight GMT for the selected frequency and be delivered to the set of configured email recipients once the report is complete.

Email Recipients

Email recipients for scheduled reports are configured per report type, not by individual report.

Any change made to the recipient group of one report will affect all other scheduled reports of the same report type.

Report Archives

The amount of time that a report is available in the archives will vary:

Online Reports

Each online report will be archived for 5 days.

After 5 days, the report will expire and the report will need to be created again in order to obtain the same data.

Scheduled Reports

The 5 most recent reports for each scheduled report template will be archived.

Each daily report will be archived for 5 days.

Each weekly report will be archived for 5 weeks.

Each monthly report will be archived for 5 months.

Report Limitations

The daily scheduled report generation will start at midnight GMT. The device details captured in these reports will be correct up to the last hour.

Cost reports will be run after the End of Day rating process. Therefore, the cost details captured in these reports will be correct up to midnight GMT.

The EOD job takes variable time depending on the volume of traffic. Also, the time increases towards the end of the month therefore the report generation time will vary. The report generation will start 15 minutes after the EOD rating process.

For example: A Traffic Cost Summary Report is scheduled to run daily. On 6/10 the EOD rating process completes at 04:00 GMT. The report generating will start at 04:15 GMT and will reflect the results of the last EOD.

If the EOD rating process fails and is fixed the next day, then the cost data will not be available for cost reports. The scheduled report will still run but the email will contain a note indicating that the report may not be accurate.

It may take up to 60 minutes before new devices or recent changes are reflected in reports.

API Detailstopics

Online Reports Operations

OperationRequest URIDescription
POST/{accountId}/onlineReports?apiKey={apiKey}Create a new report.
GET/{accountId}/onlineReports/{reportId}/status?preview={BOOLEAN}&apiKey={apiKey}Get the status of a specific report. The following report status are possible: FAILED, PERSISTED, IN_PROGRESS, PREVIEW_READY, COMPLETE.

Query Params:

preview: If preview QueryParam is true then Preview report file is returned else Complete report file is returned.

Note: This API internally redirects to download URL when Report Files are available
GETreports/{reportId}/download?fileAppender={fileAppender}&fileType={fileType}&apiKey={apikey}Download an archived report file (online or scheduled).
Query Params:

fileAppender: Preview (to download preview file with 100 records) or Complete (to download complete file). Default is Complete.

fileType: To support diff file formats however currently 'csv' is supported. Default is also 'csv'.
GET /{accountId}/reports/archives?count={count}&apiKey={apiKey}Get a list of the last n 'ONLINE' archived reports.

Query Params:

count: Specify how many archives needs to be listed
GET/{accountId}/reports/archives/{archiveId}?fileType={fileType}&fileAppender={fileAppender}&apiKey={apiKey}Download an archived report file.

Query Params:

fileAppender: Preview (to download preview file with 100 records) or Complete (to download complete file). Default is Complete

fileType: To support diff file formats however currently 'csv' is supported. Default is also 'csv.'
Table 4: API Operations

Getting Started

RequestResponse
/{accountId}/onlineReports?apiKey={apiKey}Status Code: 202 Accepted

Show explanation Loading time: 666
Request headers
Location: {root_url}/{accountId}/onlineReports/{reportId}/status?preview=true&apiKey={apiKey}
/{accountId}/onlineReports/{reportId}/status?preview=true&apiKey={apiKey}SUCCESS USE-CASE

Status Code: 301 Moved Permanently
Request headers
Location:{root_url}/{accountId}/reports/reportId/download?fileAppender=Preview&apiKey=apiKey
/{accountId}/onlineReports/{reportId}/status?preview=true&apiKey={apiKey}IN-PROGRESS AND FAILURE USE-CASE

Status Code: 200 OK

{
  "reportStatus" : "IN_PROGRESS",
  "eta" : "10min",
  "message" : null
}


{
  "reportStatus" : "FAILED",
  "eta" : "null",
  "message" : "A Database related error has occurred."
}



Schema Definition: ReportInProgressResponse
/{accountId}/reports/reportId/download?fileAppender=Preview&apiKey=apiKeyA CSV file containing report data is sent back,. Response Headers
"Content-Disposition", "attachment; filename="
Table 5: Getting Started

Create New Report

Account Traffic Cost Summary Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "TRAFFIC_COST_SUMMARY",
  "reportType": "TRAFFIC_COST_SUMMARY",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "duration": {
    "duration": "MONTHTODATE",
    "startDate": null,
    "endDate": null
  },
  "filters": [],
  "groupBy": "REPORT_GROUP",
  "sortBy": null,
  "reportGroup": null,
  "reportOnHierarchy": false,
  "isReportPreview": "true",
  "outputRecordCount": null,
  "schedule": null,
  "columns": []
}
//Response
HTTP/1.1 202 Accepted Server: Apache-Coyote/1.1 Location: http://aertrafficapi.aeris.com/v1/{accountID}/onlineReports/e25dd6f6-5f5f-11e4-acf8-0b0da3fe1efc/status?preview=true&apiKey={API Key}
Content-Length: 0

Account Device Detail Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "DEVICE_DETAIL",
  "reportType": "DEVICE_DETAIL",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "duration": {},
  "filters": [],
  "groupBy": "REPORT_GROUP",
  "sortBy": null,
  "reportGroup": null,
  "reportOnHierarchy": false,
  "isReportPreview": "true",
  "outputRecordCount": null,
  "schedule": null,
  "columns": []
}
HTTP/1.1 202 Accepted
Server: Apache-Coyote/1.1
Location: http://aertrafficapi.aeris.com/v1/{accountID}/onlineReports/6d10ee31-5f61-11e4-9697-b972ae2f4993/status?preview=true&apiKey={API Key}
Content-Length: 0

Account Device Summary Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Response
{
  "reportName": "DEVICE_SUMMARY",
  "reportType": "DEVICE_SUMMARY",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "duration": {
    "duration": "MONTHTODATE",
    "startDate": null,
    "endDate": null
  },
  "filters": null,
  "groupBy": "REPORT_GROUP",
  "sortBy": null,
  "reportGroup": null,
  "reportOnHierarchy": false,
  "isReportPreview": "true",
  "outputRecordCount": null,
  "schedule": null,
  "columns": null
}
HTTP/1.1 202 Accepted
Server: Apache-Coyote/1.1
Location: http://aertrafficapi.aeris.com/v1/{accountID}/onlineReports/19fea518-5f62-11e4-9697-dd94a1550c9d/status?preview=true&apiKey={API Key}
Content-Length: 0

Daily Device Traffic Usage Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "DEVICE_DAILY_TRAFFIC_USAGE",
  "reportType": "DEVICE_DAILY_TRAFFIC_USAGE",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "duration": {
    "duration": "MONTHTODATE",
    "startDate": null,
    "endDate": null
  },
  "filters": [
    {
      "column": {
        "columnName": "MDN",
        "value": "5772681090,11835004615,5772527129,5772681082,5772681081,5772681072,5772681071,5772681077"
      },
      "operator": "IN"
    }
  ],
  "sortBy": null,
  "reportGroup": null,
  "reportOnHierarchy": false,
  "isReportPreview": "true",
  "outputRecordCount": null,
  "schedule": null,
  "columns": []
}
//Response
HTTP/1.1 202 Accepted
Server: Apache-Coyote/1.1
Location: http://aertrafficapi.aeris.com/v1/{accountID}/onlineReports/879c83db-5f63-11e4-9697-950730e3f669/status?preview=true&apiKey={API Key}
Content-Length: 0

Device Traffic Summary Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "DEVICE_TRAFFIC_USAGE",
  "reportType": "DEVICE_TRAFFIC_USAGE",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "duration": {
    "duration": "MONTHTODATE",
    "startDate": null,
    "endDate": null
  },
  "filters": [
    {
      "column": {
        "columnName": "MDN",
        "value": "5772681090,11835004615,5772527129,5772681082,5772681081,5772681072,5772681071,5772681077"
      },
      "operator": "IN"
    }
  ],
  "sortBy": null,
  "reportGroup": null,
  "reportOnHierarchy": false,
  "isReportPreview": "true",
  "outputRecordCount": null,
  "schedule": null,
  "columns": []
}
//Response
HTTP/1.1 202 Accepted
Server: Apache-Coyote/1.1
Location: http://aertrafficapi.aeris.com/v1/{accountID}/onlineReports/bffce362-5f63-11e4-9697-0bd9c9aeda2a/status?preview=true&apiKey={API Key}
Content-Length: 0

Daily Traffic Detail Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "TRAFFIC_DETAIL",
  "reportType": "TRAFFIC_DETAIL",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "duration": {
    "duration": "LAST_3_DAYS",
    "startDate": null,
    "endDate": null
  },
  "filters": [
    {
      "column": {
        "columnName": "MDN",
        "value": "5772681090,11835004615,5772527129,5772681082,5772681081,5772681072,5772681071,5772681077"
      },
      "operator": "IN"
    },
    {
      "column": {
        "columnName": "TRAFFIC_TYPE",
        "value": "ALL"
      },
      "operator": "IN"
    }
  ],
  "sortBy": null,
  "reportGroup": null,
  "reportOnHierarchy": false,
  "isReportPreview": "true",
  "outputRecordCount": null,
  "schedule": null,
  "columns": []
}
//Response
HTTP/1.1 202 Accepted
Server: Apache-Coyote/1.1
Location: http://aertrafficapi.aeris.com/v1/{accountID}/onlineReports/439cfbb9-5f63-11e4-9697-b359c0d6dab0/status?preview=true&apiKey={API Key}
Content-Length: 0

Device Status Activity Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "DEVICE_STATUS_ACTIVITY",
  "reportType": "DEVICE_STATUS_ACTIVITY",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "duration": {
    "duration": "MONTHTODATE",
    "startDate": null,
    "endDate": null
  },
  "filters": [
    {
      "column": {
        "columnName": "MDN",
        "value": "5772681090,11835004615,5772527129,5772681082,5772681081,5772681072,5772681071,5772681077"
      },
      "operator": "IN"
    }
  ],
  "sortBy": null,
  "reportGroup": null,
  "reportOnHierarchy": false,
  "isReportPreview": "true",
  "outputRecordCount": null,
  "schedule": null,
  "columns": []
}
//Response
HTTP/1.1 202 Accepted
Server: Apache-Coyote/1.1
Location: http://aertrafficapi.aeris.com/v1/{accountID}/onlineReports/153cc574-5f64-11e4-9697-9194ab854daf/status?preview=true&apiKey={API Key}
Content-Length: 0

Get Report Status

URL GET https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports/{reportId}/status?preview=true&apiKey={apiKey}

Schema definition: ReportDefinition

//Response
Status Code:301 Moved Permanently
Location:https://report.preprod.aeriscloud.com/v1/1/reports/{reportId}/download?fileAppender=Preview&apiKey={apiKey}

Get List of Online Report Archives

URL GET http://aertrafficapi.aeris.com/v1/{accountID}/reports/archives?count=1&apiKey={apiKey}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Response
[ {
  "accountId" : 1,
  "reportURL" : "https://aer-reports-preprod.s3-us-west-2.amazonaws.com/PreProd/1/2014-12/ONLINE/6d522a09-7985-11e4-bdb5-d3cb1f7c0b3c/DEVICE_DETAIL_Complete.csv?AWSAccessKeyId=AKIAITG76A4CJK2HOBYA&Expires=1418062272&Signature=5o2zn62d7KVJm86hCbzFc6iQB%2F0%3D",
  "status" : "COMPLETE",
  "previewTimeTaken" : 609,
  "timeTaken" : 2646,
  "lastDownloaded" : "2014-12-01 18:11:12Z",
  "reportPreViewURL" : "https://aer-reports-preprod.s3-us-west-2.amazonaws.com/PreProd/1/2014-12/ONLINE/6d522a09-7985-11e4-bdb5-d3cb1f7c0b3c/DEVICE_DETAIL_Preview.csv?AWSAccessKeyId=AKIAITG76A4CJK2HOBYA&Expires=1418062270&Signature=S4D019u7IhZLjfKtMIJJhueXinQ%3D",
  "isScheduled" : false,
  "message" : "",
  "createTime" : "2014-12-01 18:11:09Z",
  "reportName" : "DEVICE_DETAIL",
  "reportType" : "DEVICE_DETAIL",
  "createdBy" : "aerport@aeris.net",
  "lastUpdated" : null,
  "reportId" : "{reportID}",
  "archiveId" : "{archiveID}"
} ]

Scheduled Reports Operations

OperationRequest URIDescription
POST/{accountId}/scheduledReports?apiKey={apiKey}Create new scheduled report template
GET/{accountId}/scheduledReports?count={count}&apiKey={apiKey}Get a list of scheduled templates for an account.

Query Params:

count: Specify count of templates needs to be listed.
GET/{accountId}/scheduledReports/archives?count={count}&apiKey={apiKey}Get a map of reports generated (archives) as a result of scheduled templates for an account. The map holds the report ID as key and list of archives corresponding to that ID as a value.

Query Params:

count: Specify count of templates needs to be listed. Default is 5
GET/{accountId}/scheduledReports/{reportId}?apiKey={apiKey}View a scheduled report template

Query Params:

count: Specify how many archives needs to be listed
GET/{accountId}/reports/archives/{archiveId}?
fileType={fileType}&fileAppender={fileAppender}&apiKey={apiKey}
Download an archived report file (online or scheduled)
Query Params:
fileAppender: Preview (to download preview file with 100 records) or Complete (to download complete file). Default is Complete.
fileType: To support diff file formats however currently 'csv' is supported. Default is also 'csv.'

Query Params:

count: Specify how many archives needs to be listed
PUT/{accountId}/scheduledReports/{reportId}?apiKey={apiKey}Update a scheduled report template
DELETE/{accountId}/scheduledReports/{reportId}?category={category}&apiKey={apiKey}/{accountId}/scheduledReports/{reportId}?category={category}&apiKey={apiKey}
DELETE/{accountId}/scheduledReports/archives/{archiveId}?requestType={requestType}&apiKey={apiKey}Delete an archived report

Query Params:

requestType: It can have: 'ONLINE', 'SCHEDULE' and 'TREND' types. Default is 'SCHEDULE'
GET/{accountId}/scheduledReports/recipients/{reportType}?apiKey={apiKey}View recipient list for a given account ID and report type

Path Params:

reportType: Specify report types: DEVICE_DETAIL, TRAFFIC_DETAIL, TRAFFIC_COST_SUMMARY, DEVICE_DAILY_TRAFFIC_USAGE, DEVICE_SUMMARY, DEVICE_STATUS_ACTIVITY, DEVICE_TRAFFIC_USAGE,
PUT/{accountId}/scheduledReports/recipients?apiKey={apiKey}Update recipient list for a given account and report type.

Sample json:

{"reportType":"DEVICE_DETAIL","recipients":["aerport@aeris.net"]}

Note: You can provide multiple comma-separated email address. Max email address limit is 5
Table 6: Scheduled reports - API operations

Sample Requests and Responses

Create New Report Template

Account Traffic Cost Summary Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/scheduledReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "MyTrafficCostSummary",
  "reportType": "TRAFFIC_COST_SUMMARY",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "filters": null,
  "duration": {
    "duration": "MONTHTODATE"
  },
  "groupBy": "POOL_NAME",
  "sortBy": {
    "columnName": "STATUS",
    "order": "ASC"
  },
  "schedule": {
    "frequency": "DAILY"
  },
  "reportOnHierarchy": false,
  "isReportPreview": false,
  "outputRecordCount": 100,
  "columns": []
}
// note: code sample shown is JSON

//Response
{
  "reportId" : "a20807f0-6021-11e4-b40f-b5aae317b0de",
  "archiveId" : null,
  "reportStatus" : "PERSISTED",
  "resourceURL" : "https://aertrafficapi.aeris.com/v1/{accountID}/scheduledReports/a20807f0-6021-11e4-b40f-b5aae317b0de?apiKey={API Key}",
  "reportURL" : null,
  "errorMessage" : null,
  "data" : null,
  "requestType" : null,
  "reportPreViewURL" : null,
  "eta" : null,
  "processStartTime" : null,
  "timeTaken" : null,
  "onlinePreviewReportProcessed" : null
}

Account Device Detail Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "MyDeviceDetail",
  "reportType": "DEVICE_DETAIL",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "filters": null,
  "duration": {
    "duration": "LASTMONTH"
  },
  "sortBy": {
    "columnName": "STATUS",
    "order": "ASC"
  },
  "schedule": {
    "frequency": "SPECIFIC_DAY_OF_MONTH",
    "dayOfTheMonth": "1"
  },
  "reportOnHierarchy": false,
  "isReportPreview": false,
  "outputRecordCount": 100,
  "columns": []
}
// note: code sample shown is JSON

//Response
{
  "reportId" : "9e82c780-6023-11e4-96c5-b3672df63f9c",
  "archiveId" : null,
  "reportStatus" : "PERSISTED",
  "resourceURL" : "https://aertrafficapi.aeris.com/v1/(Account ID)/scheduledReports/9e82c780-6023-11e4-96c5-b3672df63f9c?apiKey={API Key}",
  "reportURL" : null,
  "errorMessage" : null,
  "data" : null,
  "requestType" : null,
  "reportPreViewURL" : null,
  "eta" : null,
  "processStartTime" : null,
  "timeTaken" : null,
  "onlinePreviewReportProcessed" : null
}

Account Device Summary Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/scheduledReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "MyDeviceSummary",
  "reportType": "DEVICE_SUMMARY",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "filters": null,
  "groupBy": "REPORT_GROUP",
  "sortBy": {
    "columnName": "STATUS",
    "order": "ASC"
  },
  "schedule": {
    "frequency": "SPECIFIC_DAY_OF_WEEK",
    "dayOfTheWeek": "FRIDAY"
  },
  "reportOnHierarchy": false,
  "isReportPreview": false,
  "outputRecordCount": 100,
  "columns": []
}
// note: code sample shown is JSON

//Response
{
  "reportId" : "1f9ab8f1-6024-11e4-96c5-cbedbb8e0938",
  "archiveId" : null,
  "reportStatus" : "PERSISTED",
  "resourceURL" : "https://aertrafficapi.aeris.com/v1/(Account ID)/scheduledReports/1f9ab8f1-6024-11e4-96c5-cbedbb8e0938?apiKey={API Key}",
  "reportURL" : null,
  "errorMessage" : null,
  "data" : null,
  "requestType" : null,
  "reportPreViewURL" : null,
  "eta" : null,
  "processStartTime" : null,
  "timeTaken" : null,
  "onlinePreviewReportProcessed" : null
}

Daily Device Traffic Usage Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "MyDailyDeviceTrafficUsage",
  "reportType": "DEVICE_DAILY_TRAFFIC_USAGE",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "filters": [
    {
      "column": {
        "columnName": "MDN",
        "value": "5772681090,11835004615,5772527129,5772681082,5772681081,5772681072,5772681071,5772681077"
      },
      "operator": "IN"
    }
  ],
  "duration": {
    "duration": "MONTHTODATE"
  },
  "sortBy": {
    "columnName": "STATUS",
    "order": "ASC"
  },
  "schedule": {
    "frequency": "SPECIFIC_DAY_OF_MONTH",
    "dayOfTheMonth": "15"
  },
  "reportOnHierarchy": false,
  "isReportPreview": false,
  "outputRecordCount": 100,
  "columns": []
}
//Response
HTTP/1.1 202 Accepted
Server: Apache-Coyote/1.1
Location: http://aertrafficapi.aeris.com/v1/{accountID}/onlineReports/879c83db-5f63-11e4-9697-950730e3f669/status?preview=true&apiKey={API Key}
Content-Length: 0

Device Traffic Summary Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "MyDeviceTrafficSummary",
  "reportType": "DEVICE_TRAFFIC_USAGE",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "filters": [
    {
      "column": {
        "columnName": "MDN",
        "value": "5772681090,11835004615,5772527129,5772681082,5772681081,5772681072,5772681071,5772681077"
      },
      "operator": "IN"
    }
  ],
  "duration": {
    "duration": "LASTMONTH"
  },
  "sortBy": {
    "columnName": "STATUS",
    "order": "ASC"
  },
  "schedule": {
    "frequency": "SPECIFIC_DAY_OF_MONTH",
    "dayOfTheMonth": "1"
  },
  "reportOnHierarchy": false,
  "isReportPreview": false,
  "outputRecordCount": 100,
  "columns": []
}
// note: code sample shown is JSON

//Response
{
  "reportId" : "5e37a9f3-6025-11e4-96c5-29d0d6e51bf2",
  "archiveId" : null,
  "reportStatus" : "PERSISTED",
  "resourceURL" : "https://aertrafficapi.aeris.com/v1/(Account ID)/scheduledReports/5e37a9f3-6025-11e4-96c5-29d0d6e51bf2?apiKey={API Key}",
  "reportURL" : null,
  "errorMessage" : null,
  "data" : null,
  "requestType" : null,
  "reportPreViewURL" : null,
  "eta" : null,
  "processStartTime" : null,
  "timeTaken" : null,
  "onlinePreviewReportProcessed" : null
}

Daily Traffic Detail Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "MyDeviceTrafficDetail",
  "reportType": "TRAFFIC_DETAIL",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "filters": [
    {
      "column": {
        "columnName": "TRAFFIC_TYPE",
        "value": "ALL"
      },
      "operator": "IN"
    },
    {
      "column": {
        "columnName": "MDN",
        "value": "5772681090,11835004615,5772527129,5772681082,5772681081,5772681072,5772681071,5772681077"
      },
      "operator": "IN"
    }
  ],
  "duration": {
    "duration": "LAST_1_DAY"
  },
  "sortBy": {
    "columnName": "STATUS",
    "order": "ASC"
  },
  "schedule": {
    "frequency": "DAILY"
  },
  "reportOnHierarchy": false,
  "isReportPreview": false,
  "outputRecordCount": 100,
  "columns": []
}
// note: code sample shown is JSON

//Response
{
  "reportId" : "c89d3674-6025-11e4-96c5-07b2d655c15c",
  "archiveId" : null,
  "reportStatus" : "PERSISTED",
  "resourceURL" : "https://aertrafficapi.aeris.com/v1/(Account ID)/scheduledReports/c89d3674-6025-11e4-96c5-07b2d655c15c?apiKey={API Key}",
  "reportURL" : null,
  "errorMessage" : null,
  "data" : null,
  "requestType" : null,
  "reportPreViewURL" : null,
  "eta" : null,
  "processStartTime" : null,
  "timeTaken" : null,
  "onlinePreviewReportProcessed" : null
}

Device Status Activity Report

URL POST https://aertrafficapi.aeris.com/v1/{accountID}/onlineReports?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "MyDeviceStatusActivity",
  "reportType": "DEVICE_STATUS_ACTIVITY",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "filters": [
    {
      "column": {
        "columnName": "MDN",
        "value": "5772681090,11835004615,5772527129,5772681082,5772681081,5772681072,5772681071,5772681077"
      },
      "operator": "IN"
    }
  ],
  "duration": {
    "duration": "LASTMONTH"
  },
  "sortBy": {
    "columnName": "STATUS",
    "order": "ASC"
  },
  "schedule": {
    "frequency": "SPECIFIC_DAY_OF_MONTH",
    "dayOfTheMonth": "1"
  },
  "reportOnHierarchy": false,
  "isReportPreview": false,
  "outputRecordCount": 100,
  "columns": []
}
// note: code sample shown is JSON

//Response
{
  "reportId" : "1a05f8d5-6026-11e4-96c5-b190ad485d8e",
  "archiveId" : null,
  "reportStatus" : "PERSISTED",
  "resourceURL" : "https://aertrafficapi.aeris.com/v1/(Account ID)/scheduledReports/1a05f8d5-6026-11e4-96c5-b190ad485d8e?apiKey={API Key}",
  "reportURL" : null,
  "errorMessage" : null,
  "data" : null,
  "requestType" : null,
  "reportPreViewURL" : null,
  "eta" : null,
  "processStartTime" : null,
  "timeTaken" : null,
  "onlinePreviewReportProcessed" : null
}

Get List of Scheduled Templates

URL GET http://report.preprod.aeriscloud.com/v1/1/scheduledReports?apiKey={apiKey}

// note: code sample shown is JSON

//Response
[ {
  "accountId" : 1,
  "onBehalfOf" : 1,
  "visibleToSubAccount" : false,
  "reportName" : "Traffic Detail",
  "reportId" : "450db356-7939-11e4-b10a-a190e6677c23",
  "email" : "aerport@aeris.net",
  "reportType" : "TRAFFIC_DETAIL",
  "trafficType" : null,
  "product" : "ANY",
  "reportOnHierarchy" : false,
  "allDevices" : true,
  "groupBy" : null,
  "sortBy" : null,
  "filters" : [ {
    "column" : {
      "columnName" : "TRAFFIC_TYPE",
      "value" : "ALL"
    },
    "operator" : "IN"
  } ],
  "columns" : [ ],
  "isReportPreview" : false,
  "frequency" : "DAILY",
  "dayOfTheWeek" : null,
  "dayOfTheMonth" : 0,
  "lastUpdatedBy" : "aerport@aeris.net",
  "lastUpdatedDate" : "2014-12-01 10:05:43Z",
  "generationTime" : null,
  "creationTime" : "2014-12-01 09:06:00Z",
  "reportGroup" : null,
  "startDate" : "2014-11-30 00:00:00Z",
  "endDate" : "2014-11-30 23:59:59Z",
  "scheduleEndDate" : "2999-11-10 09:06:00Z",
  "timeToLive" : 0,
  "clientURL" : null,
  "requestType" : "SCHEDULE",
  "responseType" : null,
  "lastArchiveId" : "9293168d-86c5-4ebc-b202-cdfc964439dd",
  "lastArchiveDate" : "2014-12-01 10:05:43Z",
  "outputRecordCount" : null,
  "trendDuration" : null,
  "fileNameAppender" : null,
  "duration" : "LAST_1_DAY",
  "processStartTime" : null
} ]

Get Map of Schedule Report Archives

URL GET http://report.preprod.aeriscloud.com/v1/1/scheduledReports/archives?apiKey={apiKey}

// note: code sample shown is JSON

//Response
{
  "d4b09f2d-5da1-11e4-93ba-a918c60a4dde" : [ {
    "accountId" : 1,
    "reportURL" : "https://aer-reports-preprod.s3-us-west-2.amazonaws.com/PreProd/1/2014-12/SCHEDULE/DAILY/d4b09f2d-5da1-11e4-93ba-a918c60a4dde/bbe93044-7930-11e4-b477-93f314bace93/Test2-27Oct14_Complete.csv?AWSAccessKeyId=AKIAITG76A4CJK2HOBYA&Expires=1418025895&Signature=rXysoMKPnjjRdAu2NeOdQG3S5co%3D",
    "status" : "COMPLETE",
    "previewTimeTaken" : 0,
    "timeTaken" : 2375,
    "lastDownloaded" : null,
    "reportPreViewURL" : null,
    "isScheduled" : true,
    "message" : "NO DATA",
    "createTime" : "2014-12-01 08:04:55Z",
    "reportName" : "Test2-27Oct14",
    "reportType" : "DEVICE_DAILY_TRAFFIC_USAGE",
    "createdBy" : "aerport@aeris.net",
    "lastUpdated" : null,
    "reportId" : "d4b09f2d-5da1-11e4-93ba-a918c60a4dde",
    "archiveId" : "bbe93044-7930-11e4-b477-93f314bace93"
  }, {
    "accountId" : 1,
    "reportURL" : "https://aer-reports-preprod.s3-us-west-2.amazonaws.com/PreProd/1/2014-11/SCHEDULE/DAILY/d4b09f2d-5da1-11e4-93ba-a918c60a4dde/f6a59c07-782c-11e4-8513-af5ba55e9ce1/Test2-27Oct14_Complete.csv?AWSAccessKeyId=AKIAITG76A4CJK2HOBYA&Expires=1417914324&Signature=mLddy3mcGzse1FE2p7NTzgafsdc%3D",
    "status" : "COMPLETE",
    "previewTimeTaken" : 0,
    "timeTaken" : 1411,
    "lastDownloaded" : null,
    "reportPreViewURL" : null,
    "isScheduled" : true,
    "message" : "NO DATA",
    "createTime" : "2014-11-30 01:05:24Z",
    "reportName" : "Test2-27Oct14",
    "reportType" : "DEVICE_DAILY_TRAFFIC_USAGE",
    "createdBy" : "aerport@aeris.net",
    "lastUpdated" : null,
    "reportId" : "d4b09f2d-5da1-11e4-93ba-a918c60a4dde",
    "archiveId" : "f6a59c07-782c-11e4-8513-af5ba55e9ce1"
  }

View Scheduled Template

URL GET https://aertrafficapi.aeris.com/v1/{account ID}/scheduledReports/{report ID}?apiKey={API Key}

Schema definition: ReportMetadata

// note: code sample shown is JSON

//Response
{
  "accountId" : {Account ID},
  "onBehalfOf" : {Sub-account ID},
  "visibleToSubAccount" : false,
  "reportName" : "MyTrafficCostSummary",
  "reportId" : "a20807f0-6021-11e4-b40f-b5aae317b0de",
  "email" : "aerport@aeris.net",
  "reportType" : "TRAFFIC_COST_SUMMARY",
  "trafficType" : null,
  "product" : "ANY",
  "reportOnHierarchy" : false,
  "allDevices" : false,
  "groupBy" : "POOL_NAME",
  "sortBy" : null,
  "filters" : [ ],
  "columns" : [ ],
  "isReportPreview" : false,
  "frequency" : "DAILY",
  "dayOfTheWeek" : null,
  "dayOfTheMonth" : 0,
  "lastUpdatedBy" : "aerport@aeris.net",
  "lastUpdatedDate" : "2014-10-30 10:43:49Z",
  "generationTime" : null,
  "creationTime" : "2014-10-30 10:43:49Z",
  "reportGroup" : null,
  "startDate" : "2014-10-01 00:00:00Z",
  "endDate" : "2014-10-30 23:59:59Z",
  "scheduleEndDate" : "2999-11-10 10:43:49Z",
  "timeToLive" : 0,
  "clientURL" : null,
  "requestType" : "SCHEDULE",
  "responseType" : null,
  "lastArchiveId" : null,
  "lastArchiveDate" : null,
  "outputRecordCount" : null,
  "trendDuration" : null,
  "fileNameAppender" : null,
  "duration" : "MONTHTODATE",
  "processStartTime" : null
}

Update Scheduled Template

URL PUT https://aertrafficapi.aeris.com/v1/{account ID}/scheduledReports/{report ID}?apiKey={API Key}

Schema definition: ReportDefinition

// note: code sample shown is JSON

//Request
{
  "reportName": "MyTrafficCostSummary_UPDATED",
  "reportType": "TRAFFIC_COST_SUMMARY",
  "product": "ANY",
  "email": "aerport@aeris.net",
  "createdBy": "aerport@aeris.net",
  "filters": null,
  "duration": {
    "duration": "MONTHTODATE"
  },
  "groupBy": "POOL_NAME",
  "sortBy": {
    "columnName": "STATUS",
    "order": "ASC"
  },
  "schedule": {
    "frequency": "DAILY"
  },
  "reportOnHierarchy": false,
  "isReportPreview": false,
  "outputRecordCount": 100,
  "columns": []
}

Schema definition: ReportResponse

// note: code sample shown is JSON

//Response
{
  "reportId" : "a20807f0-6021-11e4-b40f-b5aae317b0de",
  "archiveId" : null,
  "reportStatus" : "PERSISTED",
  "resourceURL" : "https://aertrafficapi.aeris.com/v1/{accountID}/scheduledReports/a20807f0-6021-11e4-b40f-b5aae317b0de?apiKey={API Key}",
  "reportURL" : null,
  "errorMessage" : null,
  "data" : null,
  "requestType" : null,
  "reportPreViewURL" : null,
  "eta" : null,
  "processStartTime" : null,
  "timeTaken" : null,
  "onlinePreviewReportProcessed" : null
}

Delete Scheduled Template

URL DELETE https://aertrafficapi.aeris.com/v1/{account ID}/scheduledReports/{report ID}?apiKey={API Key}

//Response
HTTP/1.1 204 No Content

Delete Archived Report

URL DELETE http://report.preprod.aeriscloud.com/v1/1/scheduledReports/archives/{archiveId}?apiKey={apiKey}

//Response
HTTP/1.1 202 Accepted

View Report Recipients

URL GET https://aertrafficapi.aeris.com/v1/{account ID}/scheduledReports/recipients/{Report Type}?apiKey={API Key}

// note: code sample shown is JSON

//Response
{
  "reportType" : "DEVICE_STATUS_ACTIVITY",
  "recipients" : [ "abc@abc.com", "aerport@aeris.net" ],
  "accountId" : 1
}

Update Report Recipients

URL GET https://aertrafficapi.aeris.com/v1/{account ID}/scheduledReports/recipients?apiKey={API Key}

Schema definition: ReportRecipients

// note: code sample shown is JSON

//Request
{
  "reportType": "DEVICE_STATUS_ACTIVITY",
  "recipients": [
    "qqq@aa.com",
    "abc@abc.com",
    "aerport@aeris.net"
  ]
}

Schema definition: RecipientResponse

// note: code sample shown is JSON

//Response
{
  "resourceURL" : "https://aertrafficapi.aeris.com/v1/{account ID}/scheduledReports/recipients/DEVICE_STATUS_ACTIVITY?apiKey={API Key}",
  "errorMessage" : null
}

Trend Reports Operations

OperationRequest URIDescription
GET/{accountId}/systemReports/trafficSummary?durationInDays=n&apiKey={apiKey}&trafficType={trafficType}&subAccounts={BOOLEAN}Get Traffic Summary Report (Packet and SMS) for the last n days.

Default 'durationInDays' = 7 days.
Default trafficType is SMS. Currently we support only Packet and SMS trafficTypes.
Default 'subAccounts' = false; if subAccounts flag if set to 'true' this will include data from child accounts as well.
GET/{accountId}/systemReports/costSummary?durationInMonths=n&apiKey={apiKey}&subAccounts={BOOLEAN}Get Overage Charges Report for the last n months.

Default 'durationInMonths' = 3 months.
Default 'subAccounts' = false; if subAccounts flag if set to 'true' this will include data from child accounts as well.
GET/{accountId}/systemReports/deviceSummary?durationInMonths=n&apiKey={apiKey}&subAccounts={BOOLEAN}Get Device Summary Report for the last n months.

Default 'durationInMonths' = 3 months.
Default 'subAccounts' = false; if subAccounts flag if set to 'true' this will include data from child accounts as well.
Table 7: Trend Reports Operations

Sample Requests and Responses

Traffic Summary Report

URL GET https://aertrafficapi.aeris.com/v1/{accountID}/systemReports/trafficSummary?durationInDays=7&apiKey={API Key}&subAccounts=false

Schema definition: TrafficSummaryTrendResponse

// note: code sample shown is JSON

//Response
[
{
  "date" : "2014-10-23 00:00:00",
  "totalSMSCount" : "5",
  "packetDataKb" : "1216.21"
}, {
  "date" : "2014-10-24 00:00:00",
  "totalSMSCount" : "16",
  "packetDataKb" : "7220.57"
}, {
  "date" : "2014-10-26 00:00:00",
  "totalSMSCount" : "8",
  "packetDataKb" : "0"
}, {
  "date" : "2014-10-27 00:00:00",
  "totalSMSCount" : "0",
  "packetDataKb" : "9816.97"
}, {
  "date" : "2014-10-28 00:00:00",
  "totalSMSCount" : "0",
  "packetDataKb" : "12708.77"
}, {
  "date" : "2014-10-29 00:00:00",
  "totalSMSCount" : "0",
  "packetDataKb" : "1312.32"
}, {
  "date" : "2014-10-30 00:00:00",
  "totalSMSCount" : "0",
  "packetDataKb" : "56.32"
}]

Overage Charges Report

URL GET https://aertrafficapi.aeris.com/v1/{accountID}/systemReports/costSummary?durationInMonths=2&apiKey={API Key}&subAccounts=false

Schema definition: CostSummaryTrendResponse

// note: code sample shown is JSON

//Response
[ {
  "month" : "Aug 2014",
  "packetDataCharges" : "106.95",
  "smsCharges" : ".64",
  "voiceCharges" : "0"
}, {
  "month" : "Sep 2014",
  "packetDataCharges" : "250.05",
  "smsCharges" : "4.56",
  "voiceCharges" : "10.6"
}, {
  "month" : "Oct 2014",
  "packetDataCharges" : "28.49",
  "smsCharges" : "0",
  "voiceCharges" : ".4"
} ]

Device Summary Report

URL GET https://aertrafficapi.aeris.com/v1/{accountID}/systemReports/deviceSummary?durationInMonths=3&apiKey={API Key}&subAccounts=false

Schema definition: DeviceSummaryTrendResponse

// note: code sample shown is JSON

//Response
[ {
  "accountId" : "1",
  "month" : "2014-08",
  "provisionedCount" : "393",
  "billedCount" : "282",
  "suspendedCount" : "15",
  "cancelledCount" : "10640"
}, {
  "accountId" : "1",
  "month" : "2014-09",
  "provisionedCount" : "428",
  "billedCount" : "283",
  "suspendedCount" : "15",
  "cancelledCount" : "10779"
}, {
  "accountId" : "1",
  "month" : "2014-10",
  "provisionedCount" : "390",
  "billedCount" : "286",
  "suspendedCount" : "15",
  "cancelledCount" : "10942"
} ]

Error codestopics

Response CodesResponse MessageDescription
200OKThe request was successful and details about the response can be found in the body of the response.
202ACCEPTEDThe requested operation has been accepted and the body contains information to query on the progress of the request.
204NO_CONTENTThe requested operation was successful and there is no response body.
301MOVED_PERMANENTLYThe request was internally redirected to another URL.
400BAD_REQUESTYour request was improperly formatted. You should verify that your request conforms to this specification and re-issue the request in a properly formatted manner.
401UNAUTHORIZEDUnauthorized to access a particular resource.
404NOT_FOUNDThe requested resource does not exist.
415UNSUPPORTED_MEDIA_TYPEThe request entity has a media type which the server or resource does not support. For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.
422UNPROCESSABLE_ENTITYThe request was well-formed but was unable to be followed due to semantic errors.
500INTERNAL_SERVER_ERRORAPI failed to process the request because of an error inside the system.
Table 8: HTTP Status Codes
Error CodeError Message
1000Unexpected Error.
1001Unexpected Report Processing Error.
1002Data Validation Error (see Validation Message table below).
1003A Database related error has occurred.
1004Unexpected Error while processing the report. Try again later.
1005Data Exchange format error.
1006A Cassandra Database related error has occurred.
Table 9: Top Level Error Codes
CodeValidation Message
1002* Invalid Report Input Data.

* 'All Devices' option is only applicable for Scheduled Reports.

* 'Report Preview' is not applicable for Scheduled Reports.

* 'CUSTOM' Duration is not applicable for Scheduled Reports.

* Invalid Request Type - Should be either ONLINE or SCHEDULE.

* Report can be extracted for only previous one month.

* Invalid Schedule Frequency.

* Invalid Schedule End Date.

* Null Schedule End Date not allowed.

* Invalid Date Range.

* Invalid Date Range - Start date cannot be after end date.

* Invalid Date Range - Schedule End Date - Invalid Day of Month value, should be between 1 and 31.

* Invalid Date Range - Start date can only be first day of the month.

* Invalid Date Range - Start and End Date - Should specify the same month.

* Invalid Date Range - End Date - Should be the last date of the previous month.

* Invalid Date Range - Future dates not allowed.

* Invalid Date Range - Date beyond last 60 days not allowed.

* Account Not billable.

* Invalid Traffic Type filter.

* Input devices not found for the specified Account.

* Invalid device ID type value.

* Invalid MDN format value.

* Invalid MIN format value.

* Please enter less than 1000 devices.

* Invalid device filter or filter not found.

* Device list empty, please enter valid devices for the filter.

* 'All devices' report only allowed for a single day. Please enter same start and end date.

* 'All devices' option not applicable for this report.
Table 10: Validation Messages