Endpoint Data

GET POST /v6/endpoint-data/user-sessions Endpoint user session list

Returns a list of all endpoint user sessions. Sessions from the last round are provided unless an explicit start and end is provided with from, to or window optional parameters.

Optional (Querystring) Parameters

  • format=json|xml optional, specifies the format of output requested. See Output Formats for more information
  • window=[0-9]+[smhdw]? specifies a window of time for the result set. See Time Ranges for more information.
  • from=YYYY-mm-ddTHH:MM:SS&to=YYYY-mm-ddTHH:MM:SS specifies an explicit start (and optionally, end) for your range of data. See Time Ranges for more information.
  • page={pageNo} specifies result page. See Pagination for more information.
  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Optional Filtering

/endpoint-data endpoints support optional filtering. See Endpoint Data Filtering for more information.

Request

  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-data/user-sessions.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back an object. userSessions parameter returns an array of endpoint user sessions, either the latest sessions, or based on the time range specified. Each entry represents an endpoint user session.

FieldData TypeUnitsNotes
userSessionIdstringn/aendpoint user session ID; each endpoint user session occurrence has a unique ID
agentIdstringn/aendpoint agent ID
roundIdintegern/aendpoint user session round ID
datedateTimeyyyy-MM-dd hh:mm:ssthe date/time when endpoint user session took place; all dates are UTC
committeddateTimeyyyy-MM-dd hh:mm:ssthe date/time when endpoint user session was committed to the controller; all dates are UTC
sourceAddrstringn/apublic IP address of the endpoint agent during the session
orgNamestringn/aname of the AS organization sourceAddr belongs to
visitedSitestringn/adomain used to visit target website
protocolstringn/aprotocol used to visit target website
portintegern/aport used to visit target website
numberOfPagesintegern/anumber of web pages visited on target website
permalinkstringn/ahyperlink to endpoint user session details in ThousandEyes Application

HTTP/1.1 200 OK Server: nginx Date: Mon, 22 Mar 2017 13:41:02 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 599 X-Organization-Rate-Limit-Reset: 1490622120 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-3

Body

{ "userSessions": [ { "agentId": "3fde6422-f119-40e1-ae32-d08a1243c038", "committed": "2017-03-22 11:58:44", "date": "2017-03-22 11:58:42", "numberOfPages": 1, "orgName": "T-2 Access Network", "permalink": "https://app.thousandeyes.com/view/endpoint-agent/?roundId=1490529480&scenarioId=sessionDetails&binSize=300000&__aid=7625", "port": 80, "protocol": "http", "roundId": 1490529480, "sourceAddr": "84.255.241.1", "userSessionId": "07625:1490529480:aVDViw0i", "visitedSite": "thousandeyes.com" }, { "agentId": "3fde6422-f119-40e1-ae32-d08a1243c038", "committed": "2017-03-22 11:58:46", "date": "2017-03-22 11:58:43", "numberOfPages": 2, "orgName": "T-2 Access Network", "permalink": "https://app.thousandeyes.com/view/endpoint-agent/?roundId=1490529480&scenarioId=sessionDetails&binSize=300000&__aid=7625", "port": 443, "protocol": "https", "roundId": 1490529480, "sourceAddr": "84.255.241.1", "userSessionId": "07625:1490529480:h3qJQTpl", "visitedSite": "www.thousandeyes.com" } [...] } "pages": { "current": 1 } }

For error responses, see the response status codes documentation.

GET /v6/endpoint-data/user-sessions/{sessionId} Endpoint user session details

Returns details for an endpoint user session

Optional (Querystring) Parameters

  • format=json|xml optional, specifies the format of output requested. See Output Formats for more information
  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Request

  • {sessionId} corresponds to the id of a endpoint user sessions, see the Endpoint user session list endpoint for a listing of endpoint user sessions.
  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-data/user-sessions/07625:1490529480:h3qJQTpl.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back detailed data of an endpoint user session.

FieldData TypeUnitsNotes
userSessionIdstringn/aendpoint user session ID; each endpoint user session occurrence has a unique ID
agentIdstringn/aendpoint agent ID
roundIdintegern/aendpoint user session round ID
datedateTimeyyyy-MM-dd hh:mm:ssthe date/time when endpoint user session took place; all dates are UTC
committeddateTimeyyyy-MM-dd hh:mm:ssthe date/time when endpoint user session was committed to the controller; all dates are UTC
sourceAddrstringn/apublic IP address of the endpoint agent during the session
orgNamestringn/aname of the AS organization sourceAddr belongs to
visitedSitestringn/adomain used to visit target website
protocolstringn/aprotocol used to visit target website
portintegern/aport used to visit target website
numberOfPagesintegern/anumber of web pages visited on target website
permalinkstringn/ahyperlink to endpoint user session details in ThousandEyes Application
browserobjectn/aobject contains two string parameters, name and version of the browser
coordinatesobjectn/aobject contains approximate GPS location of the endpoint agent, based on endpoint agent’s public IP address; latitude and longitude are numeric representations of GPS coordinates, location is a string representing named geographical location
pagesarrayn/aarray of objects containing details about web pages visited during session; each object represents one visitage web page
networkobjectn/aobject contains details about network profile and conditions during session

Each page object in pages array has following properties:

FieldData TypeUnitsNotes
idstringn/aweb page ID; page ID is unique only within an endpoint user session
titlestringn/aweb page title
startedDateTimedateTimeyyyy-MM-dd hh:mm:ssthe date/time when page load started; all dates are UTC
responseCodeintegern/aHTTP response code
pageTimingsobjectn/aobject with two integer parameters returning the number of milliseconds to DOM Load (onContentLoad) and Page Load ( onLoad)

network object has following properties:

FieldData TypeUnitsNotes
networkProfileobjectn/acontains basic network connectivity parameters, such as IP settings, DNS settings, NIC type, WiFi settings, Proxy settings; see Example for details
gatewayPingobjectn/acontains numeric parameters representing results of a ping test performed against the endpoint agent default gateway: pktsSent, pktsReceived, minRtt, avgRtt, maxRtt, meanDevRtt; contains only string error parameter if there is an error
pingobjectn/acontains number parameters representing results of a ping test performed against the target website: pktsSent, pktsReceived, minRtt, avgRtt, maxRtt, meanDevRtt; contains only string error parameter if there is an error
tracerouteobjectn/acontains parameters representing results of a traceroute test performed against the target website: string parameter destination represents target IP address, hops is an array of hop objects; each hop object has parameters representing hop number (integer hop), delay in milliseconds (integer delay), hop IP address (string ipAddress) and rDNS name (string name). If hop IP address is in public IP space, network string prefix and integer asn are also provided. If hop is in MPLS network, mpls parameter provides array of MPLS flag strings. Contains only string error parameter if there is an error.
connectobjectn/aobject has one number parameter, rtt. rtt represents the number of milliseconds required to establish TCP connectivity with the target.
icmpBlockedbooleann/aSet to true if network target is blocking ICMP echo (ping) queries
errorsarrayn/aarray of string representing possible network errors, i.e. “ping: Request timed out before getting response”

HTTP/1.1 200 OK Server: nginx Date: Mon, 22 Mar 2017 17:12:12 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 599 X-Organization-Rate-Limit-Reset: 1490642120 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-3

Body

{ "userSessions": [ { "agentId": "3fde6422-f119-40e1-ae32-d08a1243c038", "browser": { "name": "Google Chrome", "version": "57.0.2987.98" }, "committed": "2017-03-26 11:58:46", "coordinates": { "latitude": 46.0552778, "location": "Slovenia", "longitude": 14.5144444 }, "date": "2017-03-22 11:58:43", "network": { "connect": { "rtt": 77.449 }, "errors": [], "gatewayPing": { "avgRtt": 7, "maxRtt": 66, "meanDevRtt": 11, "minRtt": 0.875, "pktsReceived": 10, "pktsSent": 10 }, "icmpBlocked": false, "networkProfile": { "dnsServers": [ "8.8.8.8", "8.8.4.4" ], "gateway": "10.0.0.1", "hardwareType": "Wireless", "interfaceName": "en0", "ipAddress": "10.0.0.13", "localPrefix": "10.0.0.0", "proxyProfile": { "method": "System", "proxies": [ { "bypass": "*.local;169.254/16", "proxy": "<direct>" } ] }, "publicIpAddress": "84.255.241.1", "publicIpRange": "84.255.241.0-84.255.241.255", "subnetMask": "255.255.255.0", "type": "Ethernet", "wirelessProfile": { "bssid": "4c:ba:ba:f4:fa:fa", "channel": 1, "noise": -95, "phyMode": "802.11n", "quality": 100, "rssi": -38, "ssid": "Internet for the masses", "txRate": 130, "vendor": "Cisco" } }, "ping": { "avgRtt": 24, "maxRtt": 116, "meanDevRtt": 36, "minRtt": 6.909912109375, "pktsReceived": 10, "pktsSent": 10 }, "traceroute": { "destination": "13.32.22.232", "hops": [ { "delay": 1, "hop": 1, "ipAddress": "10.0.0.1", "name": "router.local" }, { "asn": 34779, "delay": 2, "hop": 2, "ipAddress": "89.210.0.1", "name": "89-210-0-1.gw.t-2.net", "prefix": "89.210.0.0/18" }, { "asn": 34779, "delay": 2, "hop": 3, "ipAddress": "89.210.88.65", "name": "89-210-88-65.access.t-2.net", "prefix": "89.210.64.0/18" }, { "asn": 34779, "delay": 3, "hop": 4, "ipAddress": "84.255.250.46", "name": "84-255-250-46.core.t-2.net", "prefix": "84.255.192.0/18" }, { "delay": 8, "hop": 5, "ipAddress": "52.95.218.66", "name": "52.95.218.66" }, { "delay": 14, "hop": 6, "ipAddress": "52.93.38.116", "mpls": [ "L=301472,E=0,S=1,T=1" ], "name": "52.93.38.116" }, { "delay": 7, "hop": 7, "ipAddress": "52.93.38.131", "name": "52.93.38.131" }, { "delay": 7, "hop": 8, "ipAddress": "176.32.124.93", "name": "176.32.124.93" }, { "asn": 16509, "delay": 7, "hop": 12, "ipAddress": "13.32.22.232", "name": "13.32.22.232", "prefix": "13.32.20.0/22" } ] } }, "numberOfPages": 2, "orgName": "T-2 Access Network", "pages": [ { "id": "page_1", "pageTimings": { "onContentLoad": 874, "onLoad": 3492 }, "responseCode": 200, "startedDateTime": "2017-03-26 11:58:54", "title": "Network Performance Resources | ThousandEyes" }, { "id": "page_0", "pageTimings": { "onContentLoad": 1483, "onLoad": 4569 }, "responseCode": 200, "startedDateTime": "2017-03-26 11:58:43", "title": "Network Intelligence Software | ThousandEyes" } ], "permalink": "https://app.thousandeyes.com/view/endpoint-agent/?roundId=1490529480&scenarioId=sessionDetails&binSize=300000&__aid=7625", "port": 443, "protocol": "https", "roundId": 1490529480, "sourceAddr": "84.255.241.1", "userSessionId": "07625:1490529480:h3qJQTpl", "visitedSite": "www.thousandeyes.com" } ] }

For error responses, see the response status codes documentation.

GET POST /v6/endpoint-data/user-sessions/web Endpoint web pages list

Returns a list of all endpoint web sessions. Sessions from the last round are provided unless an explicit start and end is provided with from, to or window optional parameters.

Optional (Querystring) Parameters

  • format=json|xml optional, specifies the format of output requested. See Output Formats for more information
  • window=[0-9]+[smhdw]? specifies a window of time for the result set. See Time Ranges for more information.
  • from=YYYY-mm-ddTHH:MM:SS&to=YYYY-mm-ddTHH:MM:SS specifies an explicit start (and optionally, end) for your range of data. See Time Ranges for more information.
  • page={pageNo} specifies result page. See Pagination for more information.
  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Optional Filtering

/endpoint-data endpoints support optional filtering. See Endpoint Data Filtering for more information.

Request

  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-data/user-sessions/web.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back an object. webSessions parameter returns an array of web pages user loaded in an endpoint session. Pages shown are from the latest round, or based on the time range specified. Each entry represents an endpoint user session web page.

Each page object in webSessions array has following properties:

FieldData TypeUnitsNotes
pageIdstringn/aweb page ID; page ID is unique only within an endpoint user session
pageUrlstringn/aweb page title
datedateTimeyyyy-MM-dd hh:mm:ssthe date/time when page load started; all dates are UTC
responseCodeintegern/aHTTP response code
responseTimeintegern/anumber of milliseconds to HTTP server response
pageTimingsobjectn/aobject with two integer parameters returning the number of milliseconds to DOM Load (onContentLoad) and Page Load ( onLoad)
agentIdstringn/aendpoint agent ID
userSessionIdstringn/aendpoint user session ID
roundIdintegern/aendpoint user session round ID

HTTP/1.1 200 OK Server: nginx Date: Mon, 22 Mar 2017 13:47:12 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 598 X-Organization-Rate-Limit-Reset: 1490622120 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-3

Body

{ "webSessions": [ { "agentId": "3fde6422-f119-40e1-ae32-d08a1243c038", "date": "2017-03-22 11:58:54", "pageId": "page_1", "pageTimings": { "onContentLoad": 874, "onLoad": 3492 }, "pageTitle": "Network Performance Resources | ThousandEyes", "pageUrl": "https://www.thousandeyes.com/resources", "responseCode": 200, "responseTime": 150, "roundId": 1490529480, "userSessionId": "07625:1490529480:h3qJQTpl" }, { "agentId": "3fde6422-f119-40e1-ae32-d08a1243c038", "date": "2017-03-22 11:58:43", "pageId": "page_0", "pageTimings": { "onContentLoad": 1483, "onLoad": 4569 }, "pageTitle": "Network Intelligence Software | ThousandEyes", "pageUrl": "https://www.thousandeyes.com/", "responseCode": 200, "responseTime": 395, "roundId": 1490529480, "userSessionId": "07625:1490529480:h3qJQTpl" } ] "pages": { "current": 1 } }

For error responses, see the response status codes documentation.

GET /v6/endpoint-data/user-sessions/{sessionId}/page/{pageId} Endpoint web page details

Returns details for endpoint user session web page request. Provides complete waterfall information with all object requests.

Optional (Querystring) Parameters

  • format=json|xml optional, specifies the format of output requested. See Output Formats for more information
  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Request

  • {sessionId} corresponds to the id of a endpoint user sessions, see the Endpoint user session list endpoint for a listing of endpoint user sessions.
  • {pageId} corresponds to the id of a web page, see the Endpoint user session details endpoint for a listing of web pages.
  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-data/user-sessions/07625:1490529480:h3qJQTpl/page/page_1.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back detailed data of an endpoint user session web page request.

Returned object has one parameter: har. har is an HAR object according to the HTTP Archive 1.2 specifications. You can read more about the specification here.

HTTP/1.1 200 OK Server: nginx Date: Mon, 22 Mar 2017 17:13:02 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 598 X-Organization-Rate-Limit-Reset: 1490642120 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-3

Body

{ "har": { "log": { "browser": { "name": "Google Chrome", "version": "57.0.2987.98" }, "creator": { "name": "ThousandEyes Endpoint Agent", "version": "0.47.0" }, "entries": [ { "pageref": "page_1", "request": { "headers": [ { "name": "Upgrade-Insecure-Requests", "value": "1" }, { "name": "User-Agent", "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36" }, { "name": "Accept", "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" }, { "name": "Referer", "value": "https://www.thousandeyes.com/" }, { "name": "Accept-Encoding", "value": "gzip, deflate, sdch, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.6" }, { "name": "Cookie", "value": "(removed)" } ], "method": "GET", "queryString": [], "url": "https://www.thousandeyes.com/resources" }, "response": { "bodySize": 17776, "content": { "mimeType": "text/html;charset=ISO-8859-1", "size": 17776 }, "headers": [ { "name": "Content-Type", "value": "text/html;charset=ISO-8859-1" }, { "name": "Content-Length", "value": "17776" }, { "name": "Connection", "value": "keep-alive" }, { "name": "Date", "value": "Sun, 26 Mar 2017 11:58:54 GMT" }, { "name": "Server", "value": "Apache" }, { "name": "Cache-Control", "value": "max-age=600, must-revalidate" }, { "name": "Content-Language", "value": "en-US" }, { "name": "Content-Encoding", "value": "gzip" }, { "name": "X-Frame-Options", "value": "sameorigin" }, { "name": "Strict-Transport-Security", "value": "max-age=31536000" }, { "name": "Vary", "value": "Accept-Encoding" }, { "name": "X-Cache", "value": "Miss from cloudfront" }, { "name": "Via", "value": "1.1 5dbe09af3a2c87121e31ffa67f174f66.cloudfront.net (CloudFront)" }, { "name": "X-Amz-Cf-Id", "value": "YkvlkBNKgHt5aMu9vcS22Z8kHn1MUr-8adupwhDk3j9vF-TpSyIxZA==" } ], "headersSize": 527, "redirectURL": "", "status": 200, "statusText": "OK" }, "serverIPAddress": "13.32.22.80", "startedDateTime": "2017-03-22T11:58:54.123+02:00", "time": 177, "timings": { "blocked": -1, "connect": -1, "dns": -1, "receive": 27, "send": -1, "ssl": -1, "wait": 150 } }, { "pageref": "page_1", "request": { "headers": [ { "name": "User-Agent", "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36" }, { "name": "Accept", "value": "*/*" }, { "name": "Referer", "value": "https://www.thousandeyes.com/resources" }, { "name": "Accept-Encoding", "value": "gzip, deflate, sdch, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.6" } ], "method": "GET", "queryString": [], "url": "https://use.typekit.net/cjy5myw.js" }, "response": { "bodySize": 0, "content": { "mimeType": "text/javascript;charset=utf-8", "size": 7814 }, "headers": [ { "name": "status", "value": "200" }, { "name": "access-control-allow-origin", "value": "*" }, { "name": "cache-control", "value": "public, max-age=600, stale-while-revalidate=604800" }, { "name": "content-encoding", "value": "gzip" }, { "name": "content-type", "value": "text/javascript;charset=utf-8" }, { "name": "server", "value": "nginx" }, { "name": "status", "value": "200 OK" }, { "name": "timing-allow-origin", "value": "*" }, { "name": "vary", "value": "Accept-Encoding" }, { "name": "content-length", "value": "7814" }, { "name": "date", "value": "Sun, 26 Mar 2017 11:58:43 GMT" } ], "headersSize": 334, "redirectURL": "", "status": 200, "statusText": "OK" }, "serverIPAddress": "104.103.103.234", "startedDateTime": "2017-03-22T11:58:54.123+02:00", "time": 72, "timings": { "blocked": -1, "connect": -1, "dns": -1, "receive": 10, "send": -1, "ssl": -1, "wait": 62 } } [...] ], "pages": [ { "id": "page_1", "pageTimings": { "onContentLoad": 874, "onLoad": 3492 }, "responseCode": 200, "startedDateTime": "2017-03-22T11:58:54.123+02:00", "title": "Network Performance Resources | ThousandEyes" } ], "version": "1.2" } } }

For error responses, see the response status codes documentation.

GET POST /v6/endpoint-data/user-sessions/network Endpoint network sessions list

Returns a list of all endpoint network sessions. Sessions from the last round are provided unless an explicit start and end is provided with from, to or window optional parameters.

Optional (Querystring) Parameters

  • format=json|xml optional, specifies the format of output requested. See Output Formats for more information
  • window=[0-9]+[smhdw]? specifies a window of time for the result set. See Time Ranges for more information.
  • from=YYYY-mm-ddTHH:MM:SS&to=YYYY-mm-ddTHH:MM:SS specifies an explicit start (and optionally, end) for your range of data. See Time Ranges for more information.
  • page={pageNo} specifies result page. See Pagination for more information.
  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Optional Filtering

/endpoint-data endpoints support optional filtering. See Endpoint Data Filtering for more information.

Request

  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-data/user-sessions/network.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back an object. networkSessions parameter returns an array of endpoint network session. Network sessions shown are from the latest round, or based on the time range specified. Each entry represents an endpoint network session.

Each page object in networkSessions array has following properties:

FieldData TypeUnitsNotes
userSessionIdstringn/aendpoint user session ID; each endpoint user session occurrence has a unique ID
agentIdstringn/aendpoint agent ID
roundIdintegern/aendpoint user session round ID
datedateTimeyyyy-MM-dd hh:mm:ssthe date/time when endpoint user session took place; all dates are UTC
destinationobjectn/acontains number parameters representing results of a network test performed against the target website: latency, loss and jitter, avgRtt, maxRtt, meanDevRtt; string parameter target represents target IP address

HTTP/1.1 200 OK Server: nginx Date: Mon, 22 Mar 2017 13:47:53 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 597 X-Organization-Rate-Limit-Reset: 1490622120 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-3

Body

{ "webSessions": [ "networkSessions": [ { "agentId": "3fde6422-f119-40e1-ae32-d08a1243c038", "date": "2017-03-22 11:58:42", "destination": { "jitter": 46, "latency": 150, "loss": 0.0, "target": "54.208.6.220" }, "roundId": 1490529480, "userSessionId": "07625:1490529480:aVDViw0i" }, { "agentId": "3fde6422-f119-40e1-ae32-d08a1243c038", "date": "2017-03-22 11:58:43", "destination": { "jitter": 36, "latency": 24, "loss": 0.0, "target": "13.32.22.232" }, "roundId": 1490529480, "userSessionId": "07625:1490529480:h3qJQTpl" } ] "pages": { "current": 1 } }

For error responses, see the response status codes documentation.

GET POST /v6/endpoint-data/network-topology Endpoint network topology list

Returns a list of all endpoint network topology results. Results from the last round are provided unless an explicit start and end is provided with from, to or window optional parameters.

Optional (Querystring) Parameters

  • format=json|xml optional, specifies the format of output requested. See Output Formats for more information
  • window=[0-9]+[smhdw]? specifies a window of time for the result set. See Time Ranges for more information.
  • from=YYYY-mm-ddTHH:MM:SS&to=YYYY-mm-ddTHH:MM:SS specifies an explicit start (and optionally, end) for your range of data. See Time Ranges for more information.
  • page={pageNo} specifies result page. See Pagination for more information.
  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Optional Filtering

/endpoint-data endpoints support optional filtering. See Endpoint Data Filtering for more information.

Request

  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-data/network-topology.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back an object. networkProbes parameter returns an array of network topology probes. Network topology probes shown are from the latest round, or based on the time range specified. Each entry represents a network topology probe.

Each object in networkProbes array has following properties:

FieldData TypeUnitsNotes
networkProbeIdstringn/anetwork probe ID; each network probe occurrence has a unique ID
agentIdstringn/aendpoint agent ID
roundIdintegern/aendpoint user session round ID
datedateTimeyyyy-MM-dd hh:mm:ssthe date/time when network probe took place; all dates are UTC
targetstringn/aIP of the target the network probe was performed against; this is typically a default gateway, proxy or VPN endpoint
icmpPingobjectn/acontains number parameters representing results of a ping test performed against the target: pktsSent, pktsReceived, minRtt, avgRtt, maxRtt and meanDevRtt

HTTP/1.1 200 OK Server: nginx Date: Mon, 22 Mar 2017 13:48:23 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 596 X-Organization-Rate-Limit-Reset: 1490622120 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-3

Body

{ "networkProbes": [ { "agentId": "c7a58c49-4d1a-481f-b41c-0e72ea4b9239", "date": "2017-03-26 13:55:01", "icmpPing": { "avgRtt": 0, "maxRtt": 0, "meanDevRtt": 0, "minRtt": 0.0, "pktsReceived": 10, "pktsSent": 10 }, "networkProbeId": "00160:54c3a4b180c6:1490536500:c7a58c49", "roundId": 1490536500, "target": "10.0.2.2" }, { "agentId": "c7a58c49-4d1a-481f-b41c-0e72ea4b9239", "date": "2017-03-26 14:02:00", "icmpPing": { "avgRtt": 0, "maxRtt": 0, "meanDevRtt": 0, "minRtt": 0.0, "pktsReceived": 10, "pktsSent": 10 }, "networkProbeId": "00160:54c3a4b180c6:1490536800:c7a58c49", "roundId": 1490536800, "target": "10.0.2.2" } ] "pages": { "current": 1 } }

For error responses, see the response status codes documentation.

GET /v6/endpoint-data/network-topology/{networkProbeId} Endpoint network topology details

Returns details for a network topology probe

Optional (Querystring) Parameters

  • format=json|xml optional, specifies the format of output requested. See Output Formats for more information
  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Request

  • {networkProbeId} corresponds to the id of a network probe, see the Endpoint network topology list endpoint for a listing of network probes.
  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-data/network-topology/00160:39c518560de9:1491651900:236e6f18.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back detailed data of a network topology probe.

FieldData TypeUnitsNotes
networkProbeIdstringn/anetwork probe ID; each network probe occurrence has a unique ID
agentIdstringn/aendpoint agent ID
roundIdintegern/aendpoint user session round ID
datedateTimeyyyy-MM-dd hh:mm:ssthe date/time when network probe took place; all dates are UTC
targetstringn/aIP of the target the network probe was performed against; this is typically a default gateway, proxy or VPN endpoint
coordinatesobjectn/aobject contains approximate GPS location of the endpoint agent, based on endpoint agent’s public IP address; latitude and longitude are numeric representations of GPS coordinates, location is a string representing named geographical location
icmpPingobjectn/acontains number parameters representing results of a ping test performed against the target: pktsSent, pktsReceived, minRtt, avgRtt, maxRtt and meanDevRtt
networkProfileobjectn/acontains basic network connectivity parameters, such as IP settings, DNS settings, NIC type, WiFi settings, Proxy settings; see Example for details

HTTP/1.1 200 OK Server: nginx Date: Mon, 22 Mar 2017 18:03:02 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 599 X-Organization-Rate-Limit-Reset: 1490642120 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-3

Body

{ "networkProbes": [ { "agentId": "236e6f18-9637-4a2f-b15f-7aa6a29c9fce", "coordinates": { "latitude": 46.0552778, "location": "Slovenia", "longitude": 14.5144444 }, "date": "2017-03-21 11:49:35", "icmpPing": { "avgRtt": 5, "maxRtt": 26, "meanDevRtt": 6, "minRtt": 0.9130859375, "pktsReceived": 9, "pktsSent": 10 }, "networkProbeId": "00160:39c518560de9:1491651900:236e6f18", "networkProfile": { "dnsServers": [ "10.20.10.1" ], "gateway": "10.20.10.1", "hardwareType": "Wireless", "interfaceName": "en0", "ipAddress": "10.20.10.13", "localPrefix": "10.20.10.0", "publicIpAddress": "84.255.241.1", "publicIpRange": "84.255.241.0-84.255.241.255", "subnetMask": "255.255.255.0", "type": "Ethernet", "wirelessProfile": { "bssid": "4c:ba:ba:f4:fa:fa", "channel": 11, "noise": -98, "phyMode": "802.11n", "quality": 84, "rssi": -58, "ssid": "Internet for the masses", "txRate": 130, "vendor": "Cisco" } }, "roundId": 1491651900, "target": "10.20.10.1" } ] }

For error responses, see the response status codes documentation.

Endpoint data filtering

/endpoint-data API endpoints support optional filtering. Results from the following API endpoints:

  • /endpoint-data/user-sessions
  • /endpoint-data/user-sessions/web
  • /endpoint-data/user-sessions/network
  • /endpoint-data/network-topology

can be filtered by providing additional filters in form of POST JSON object.

Request

Standard request to the endpoints supporting filtering is performed using the GET method. In order to apply filtering, request has to be done with POST method.

Post Data

When POSTing data to the endpoints, users can use provide filters as a JSON object containing searchFilters parameter. searchFilters is an array of searchFilter objects. Each searchFilter object must have the following parameters:

FieldData TypeNotes
keystringparameter to be filtered
valuesarrayan array

When multiple searchFilter objects are provider, a logical AND is applied between the filters.

When a searchFilter contains multiple values, a logical OR is applies between the filters

Search filter key can be any of the following:

KeyAPI endpointNotes
locationalllocation of the endpoint agent, i.e. San Francisco Bay Area or Germany
connectionallnetwork connection type; Ethernet, Loopback or Wireless
triggeralluser session trigger; auto or user
platformallendpoint agent platform OS; Mac or Windows
gatewayallendpoint agent default gateway IP address
proxyTargetallendpoint agent proxy IP address
vpnTargetallendpoint agent VPN endpoint IP address
agentIdallendpoind agent ID, i.e. 3fde6422-f119-40e1-ae32-d08a1243c038
networkIdallnetwork ID, i.e. 660b34109d12
ssidallWiFi SSID
bssidallWiFi BSSID
domain/user-sessionsweb site base domain visited during the session, i.e. thousandeyes.com
visitedSite/user-sessionsweb site domain visited during the session, i.e. app.thousandeyes.com
destinationIp/user-sessionsweb site destination IP address
type/network-topologynetwork topology type; vpn, proxy or gateway

Example

Return all endpoint user sessions between 2017-04-08 00:00:00 and 20:00:00 UTC, performed from user agents on a WiFi connection AND visiting any sites from thousandeyes.com OR salesforce.com domains:

$ curl https://api.thousandeyes.com/v6/endpoint-data/user-sessions.json?from=2017-04-08T00:00:00\&to=2017-04-08T20:00:00 \ -d '{ "searchFilters": [ { "key": "connection", "values": ["Wireless"] }, { "key": "domain", "values": ["thousandeyes.com","salesforce.com"] } ] }' \ -H "Content-Type: application/json" \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Returns normal response, as documented by each API endpoint. If filter conditions match no objects in a given time period, returned main object array has no children elements.

HTTP/1.1 200 OK Server: nginx Date: Sun, 09 Apr 2017 10:00:04 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 599 X-Organization-Rate-Limit-Reset: 1491732060 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-3

Body

{ "from": "2017-04-08 00:00:00", "pages": { "current": 1 }, "to": "2017-04-08 20:00:00", "userSessions": [ { "agentId": "236e6f18-9637-4a2f-b15f-7aa6a29c9fce", "committed": "2017-04-08 11:49:38", "date": "2017-04-08 11:49:36", "numberOfPages": 3, "orgName": "Happy Network Services", "permalink": "https://app.thousandeyes.com/view/endpoint-agent/?roundId=1491652140&scenarioId=sessionDetails&binSize=300000&__aid=160", "port": 443, "protocol": "https", "roundId": 1491652140, "sourceAddr": "78.153.54.206", "userSessionId": "00160:1491652140:EDG4jXHI", "visitedSite": "success.thousandeyes.com" }, { "agentId": "236e6f18-9637-4a2f-b15f-7aa6a29c9fce", "committed": "2017-04-08 11:53:29", "date": "2017-04-08 11:53:28", "numberOfPages": 1, "orgName": "Happy Network Services", "permalink": "https://app.thousandeyes.com/view/endpoint-agent/?roundId=1491652380&scenarioId=sessionDetails&binSize=300000&__aid=160", "port": 443, "protocol": "https", "roundId": 1491652380, "sourceAddr": "78.153.54.206", "userSessionId": "00160:1491652380:CEwYgJIF", "visitedSite": "app.thousandeyes.com" } ] }

GET /v6/endpoint-agents Endpoint agent list

Returns a list of all endpoint agents available to your account in ThousandEyes.

Optional (Querystring) Parameters

  • format=json|xml optional, specifies the format of output requested. See Output Formats for more information
  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Request

  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-agents.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back an array of endpoint agents, specifying agentId, which can be used by other endpoint agent API calls. The endpoint agent’s host machine information will be shown, such as computer name, hardware model & manufacturer and OS & kernel version.

FieldData TypeUnitsNotes
agentIdstringn/aunique ID of enterprise agent
computerNamestringn/adisplay name of the computer
osVersionstringn/aversion of the OS computer is running
kernelVersionstringn/aversion of the kernel computer is running
manufacturerstringn/acomputer hardware manufacturer
modelstringn/acomputer hardware model
statusstringn/astatus of endpoint agent in ThousandEyes, set to “enabled” or “disabled”
deletedbooln/aset to true if endpoint agent has been deleted

HTTP/1.1 200 OK Server: nginx Date: Sun, 23 Mar 2017 09:25:32 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 599 X-Organization-Rate-Limit-Reset: 1490520360 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-2

Body

{ "endpointAgents": [ { "agentId": "eb6131f2-baba-84e4-fafa-8f616304a9cb", "computerName": "Primoz's MacBook Air", "deleted": false, "kernelVersion": "Darwin 13.1.0", "manufacturer": "Apple, Inc.", "model": "MacBookAir6,2", "osVersion": "OS X 10.9.2 (13C64)", "status": "enabled" }, { "agentId": "34990e59-139a-4666-b7ed-70beefe66229", "computerName": "DESKTOP-QO44GO9", "deleted": false, "kernelVersion": "10.0.10586", "manufacturer": "innotek GmbH", "model": "VirtualBox", "osVersion": "Microsoft Windows 10 Pro", "status": "enabled" } ] }

For error responses, see the response status codes documentation.

GET /v6/endpoint-agents/{agentId} Endpoint agent details

Returns details for an endpoint agent, when the endpoint agent has been created, when the endpoint agent has last contacted the application and the version of the endpoint agent.

Optional (Querystring) Parameters

  • format=json|xml optional, specifies the format of output requested. See Output Formats for more information
  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Request

  • {agentId} corresponds to the ID of an endpoint agent, see the Endpoint agent list endpoint for a listing of endpoint agents.
  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-agents/9236a4f0-baba-84e4-fafa-8b2d2f0c933e.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back endpoint agent details for an agent. Metadata is shown below:

FieldData TypeUnitsNotes
agentIdstringn/aunique ID of enterprise agent
computerNamestringn/adisplay name of the computer
osVersionstringn/aversion of the OS computer is running
kernelVersionstringn/aversion of the kernel computer is running
manufacturerstringn/acomputer hardware manufacturer
modelstringn/acomputer hardware model
statusstringn/astatus of endpoint agent in ThousandEyes, set to “enabled” or “disabled”
deletedbooln/aset to true if endpoint agent has been deleted
numberOfClientsintegern/anumber of users using the end point agent on a single desktop computer
createdTimedateTimen/ayyyy-MM-dd hh:mm:ss, expressed in UTC
lastSeendateTimen/ayyyy-MM-dd hh:mm:ss, expressed in UTC
versionstringn/aendpoint agent software version

HTTP/1.1 200 OK Server: nginx Date: Sun, 23 Mar 2017 09:32:29 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 600 X-Organization-Rate-Limit-Remaining: 599 X-Organization-Rate-Limit-Reset: 1490520780 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-3

Body

{ "endpointAgents": [ { "agentId": "eb6131f2-baba-84e4-fafa-8f616304a9cb", "computerName": "Primoz's MacBook Air", "createdTime": "2017-03-22 16:33:46", "deleted": false, "kernelVersion": "Darwin 13.1.0", "lastSeen": "2017-03-22 18:19:01", "manufacturer": "Apple, Inc.", "model": "MacBookAir6,2", "numberOfClients": 1, "osVersion": "OS X 10.9.2 (13C64)", "status": "enabled", "version": "0.61.0.3583" } ] }

For error responses, see the response status codes documentation.

GET /v6/endpoint-data/networks Endpoint networks

Returns a list of all the networks from which endpoint agents performed user sessions.

Optional (Querystring) Parameters

  • aid={aid} optional and requires the user to be assigned to the target account group, specifies the account group context of the request, obtained from the /account-groups endpoint. Specifying this parameter without the user being assigned to the target account will result in an error response. See Account group context for more information

Request

  • no request body

Example

$ curl https://api.thousandeyes.com/v6/endpoint-data/networks.json \ -u noreply@thousandeyes.com:g351mw5xqhvkmh1vq6zfm51c62wyzib2

Response

Sends back an object. privateNetworks parameter returns an array of networks.

Each network object in privateNetworks array has following properties:

FieldData TypeUnitsNotes
networkIdstringn/anetwork ID; each network occurrence has a unique ID
networkNamestringn/anetwork name
localPrefixstringn/alocal private address of the network
publicIpRangestringn/apublic IP range of the network

HTTP/1.1 200 OK Server: nginx Date: Sun, 09 Apr 2017 11:15:32 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Cache-Control: no-store X-Organization-Rate-Limit-Limit: 970 X-Organization-Rate-Limit-Remaining: 969 X-Organization-Rate-Limit-Reset: 1491736560 Strict-Transport-Security: max-age=31536000 X-Server-Name: 1-4

Body

{ "privateNetworks": [ { "id": "006c4fa7a054", "localPrefix": "10.5.51.0", "name": "10.5.51.0 (in 178.216.56.0/21)", "publicIpRange": "178.216.56.0-178.216.63.255" }, { "id": "06e8270d2582", "localPrefix": "172.22.2.0", "name": "172.22.2.0 (in 188.230.129.0/24)", "publicIpRange": "188.230.129.0-188.230.129.255" } ] }

For error responses, see the response status codes documentation.