Base URL: /eumcollector/iot/v1, Version: 4.5.2
API for IoT devices to communicate with AppDynamics
Path | Operation | Description |
---|---|---|
/application/{appKey}/beacons | POST |
Post beacons |
/application/{appKey}/enabled | GET |
Check if AppKey is enabled |
/application/{appKey}/validate-beacons | POST |
Validate beacons |
Post beacons from your IoT device to this endpoint. This accepts Content-Encoding gzip and identity. If Content-Encoding header is not specified, identity is assumed.
application/json
The beacons for all devices being reported. A single beacon can hold upto 200 events of each event type (CustomEvent, NetworkRequestEvent, and ErrorEvent). Often you will have only one beacon if your IoT device can directly transmit to the AppDynamics endpoint. You would have multiple beacons if you have more than 200 events of an event type from a single device, or more than one device sending beacons via an intermediate hub.
appKey | Application Key for your AppDynamics App |
path | string |
Beacons queued for ingestion. This does not mean that the beacon is valid.
The request was malformed. Likely due to an invalid Content-Encoding.
The IoT license associated with this app key is expired
This application is disabled or non-existent, this agent should stop sending beacons. Your IoT device may want to check the endpoint periodically, since you may have re-enabled the application through your AppDynamics Controller
This application is over its license limit, stop sending beacons until the next calendar month.
Checks if the supplied AppKey is valid and enabled. This can be used by apps after being disabled to easily check if the agent should get re-enabled.
application/json
appKey | Application Key for your AppDynamics App |
path | string |
App key is enabled
This application is disabled or non-existent, you should stop sending beacons.
Post beacons for validation. These beacons do not get ingested. This endpoint should be used only for debug purposes during development.
application/json
The beacons to validate
appKey | Application Key for your AppDynamics App |
path | string |
Beacons are valid
The request was malformed and could not be read. This could be from an invalid encoding or unreadable json. The reason will be in the response body.
The IoT license associated with this app key is expired
This application is disabled or non-existent, you should stop sending beacons.
One or more beacons are invalid
This endpoint is rate limited. You can call it at least once per minute per app key, but any more and you may get this response code.
All of the event data from one device. At least one event should be populated in one of the event arrays, if all of those arrays are empty, this beacon is meaningless.
The custom events from this device.
The network request events from this device.
The error events from this device.
An event that doesn't fit into the other event definitions. All of the analytics tools will still be available, but some widgets will not be automatically generated for these events. In addition to the 'timestamp' property, you must specify the 'eventType' property, which describes the type of this event for the 'deviceType', and the 'eventSummary' property, which is a human readable summary of the event.
The type of this event. Cannot contain the pipe character '|'. Valid Examples: "Temperature Reading", "Motion Detected",
The summary of this event. Appears in the Activity stream. Should be human readable and informative to someone reading through events looking for a specific one. Valid Examples: "Door closed", "Light turned on", "Switch to gear 4"
Human readable name of the device. This is not required and does not need to be unique. Valid Examples: "Thermostat in room 1302", "Vehicle 1532312"
Type of the device. Cannot contain the pipe character '|'. Valid Examples: "Thermostat", "Wind Turbine", "Camera"
Unique ID for this device. Valid Examples: "1877837d-66a9-4bfb-b6e8-6dd4ac62ea38", "CA 5UMH719"
An error event. Use this event to report errors and issues that you want to monitor. The only required fields are 'timestamp' and 'name'. AppDynamics will group errors based on many heuristics, but if you only include the minimum of 'name', then that is all that we can group on. Providing more information allows AppDynamics to group more intelligently.
The name of the error. This should be a short human readable name. Valid Examples: "SIGINT", "NullPointerException"
A longer description of the error. Valid Examples: "Tried to call open() before socket was initialized", "Max heap memory exceeded"
The StackTraces at the time of this error. The StackTrace that contained the error is the most important one, so be sure to populate errorStackTraceIndex if you include multiple StackTraces.
The index into the stackTraces array that caused the error. This is not required, but if there is more than one stackTrace, then it is highly recommended. If empty, the default is 0. If outside of the range of the stackTraces array, it is defaulted to 0.
The severity of the error. "alert" means that there was an error that didn't cause any issues. "critical" means that there was an error that caused issues. "fatal" means that there was an error that killed your app. The default is "critical"
The base definition that all event objects inherit from. This includes a timestamp, duration, and some additional typed property maps.
The start time of this event in milliseconds epoch time.
The duration of this event in milliseconds. If unpopulated, the duration is assumed to be 0.
A map of the string properties of this event. There cannot be more than 16 string properties per event. Entry keys have a max length of 24 characters. Entry values have a max length of 128 characters. Entry keys cannot contain the pipe character '|'. Valid Examples: { "username": "john.doe" }
A map of the long properties of this event. There cannot be more than 16 long properties per event. Entry keys have a max length of 24 characters. Entry keys cannot contain the pipe character '|'. Valid Examples: { "buttonId": 123 }
A map of the boolean properties of this event. There cannot be more than 16 boolean properties per event. Entry keys have a max length of 24 characters. Entry keys cannot contain the pipe character '|'. Valid Examples: { "error": false }
A map of the double properties of this event. There cannot be more than 16 double properties per event. Entry keys have a max length of 24 characters. Entry keys cannot contain the pipe character '|'. Valid Examples: { "Fahrenheit": 98.2 }
A map of the datetime properties of this event, in millisecond epoch time. There cannot be more than 16 datetime properties per event. Entry keys have a max length of 24 characters. Entry keys cannot contain the pipe character '|'. Valid Examples: { "bootTime": 1487119625012 }
A network request event. Should always populate timestamp, duration, url, and either networkError or statusCode. Other fields are included for ease of use.
The URL of the request. Must be a valid URL. Valid Example: "http://www.appdynamics.com"
The HTTP response status code returned. Should be defined if the 'networkError' is not defined. Valid Example: 200
If a network error occured (such as socket timeout), which caused the network request to fail without response/status. Valid Example: "Connection Interrupted", "ERR_NAME_NOT_RESOLVED"
The length in bytes of the http request body. Valid Example: 5432
The length in bytes of the http response body. Valid Example: 6123
HTTP response headers provided as a list of {"key": ["values"]} pairs. To enable BT correlation, add the headers {"ADRUM": "isAjax:true"} and {"ADRUM_1": "isMobile:true"} to your HTTP request. Attach all the response headers which will include BT headers in case your backend application is instrumented with AppDynamics APM Agent.
A platform agnostic view of a single stack frame. It is likely that you will not be able to populate all of the fields here.
The symbol of the frame. For C, this is the method name. For Java, this is the class name and method name. Valid Examples: "malloc()", "Utils.openFile()", "[Application load]"
The package that contains the symbol. For C, this is the library or executable. For Java, this is the package of the class. Valid Examples: "CoreFoundation", "com.my.app", "libFoo.so"
The path to the file that contains the symbol. Can be just the file name Valid Examples: "Main.java", "Util.c", "/home/code/myproject/src/foo.c"
The line number of the code in the symbol. Valid Examples: 42, 138
The absolute address of the instruction.
The offset of the instruction from the start of the image
The offset of the instruction from the start of the symbol
A set of stack frames
The name of the thread that this stack trace was on. Examples: "0", "Main-1", "UI", "Network Processor"
The runtime of the stack trace. This is purely used to format the UI nicely. By default this is "native", so no need to populate it if you are happy with that format.
All of the stack frames in this stack trace.
A human readable description of the validation error.
The hardware version of this device. Valid Example: "Board Rev. 13A"
The firmware version of this device. Valid Example: "123.5.31"
The software version of the embedded application being monitored. Valid Example: "9.1.3"
The operating system version of this device. Valid Example: "Linux 13.4"