The Capture API is a set of RESTful API calls that are used to communicate with a managed capture device, including an Echo360 Pro, an Echo360 Pod, a Universal Capture installation or legacy devices (SCHD, CCAP installation). This communication is used to control or view device operations and includes the ability to look at system status, retrieve diagnostics, schedule and control captures, among other tasks.
Besides an Administrator generating calls manually, this API is called by 3 main system 'users':
- The legacy device Web UI: The legacy device Web UI (also called the Ad Hoc Web UI) is used by an instructor to log in and perform an ad hoc capture. The ad hoc interface uses the Capture API to talk to the capture appliance and perform the actions indicated by the instructor through the interface, such as to start a capture when the instructor clicks Start Capture.
- Room Control Systems: Room control systems such as Crestron, AMX, and Extron use the Capture API to control the capture device so that the AMX room control panel used by the instructor can display a Capture button, show the next upcoming capture, etc.
- Universal Capture or legacy CCAP Installation: When the Classroom Capture or Universal Capture product is installed in on a classroom PC, the application uses the Capture API to get all of the status information shown in the interface, as well as to control the capture through the interface, as initiated by the instructor when applicable (start, pause, stop, or extend a capture).
The Basics
Each API call identified in this guide is listed with a title that identifies its function along with a brief description of what the call does. In addition, each call is listed with the following items, designed to show how the call is structured and how to use it.
Term | Definition |
---|---|
Call | Shows whether the call is a GET or a POST call, and identifies the structure of the call. |
GET |
Call is made using the HTTP 1.1. GET method. Often, GET calls are used to obtain specifics that can then be used in other calls. |
POST | Call is made using the HTTP 1.1 POST method. A POST call is usually used to create an object or make some change via the API. For example, the call to create a new capture is a POST call, as is the call to generate a Ping to test network connectivity. POST requests usually require POST data to be appended to the request. |
{base-uri} | A placeholder that represents the DNS Hostname or IP address of the device. Best practice is to include the port number along with the Hostname/IP address. For example: https://10.3.11.24:8443 . |
Request Data | Where applicable, identifies the data parameters that must be included in the call and provides a brief description of each. |
Example | Shows a populated example of the API call that has been tested. |
Response XML | Where possible, the full XML response of the provided Example call is provided as an example of the information returned by a device. |
NOTE: Where feasible, the Response XML is provided in the main document along with the call that generated it. If the Response XML is much longer than a single page, it is provided in Appendix: Response XML Examples. Where this is the case, a link is provided to the corresponding response in the Appendix, and the response in the Appendix provides a link back to the call in the main document. This is done for ease of navigation and reference.
In addition to the basic API call items listed above, each call is listed with a CURL Example, for users using the curl command line tool for calls. The basic syntax of a CURL call is:
curl --user $adminlogincreds --insecure –data --url $apiurl/capture/extend
Where:
- $adminlogincreds provide the username:password combination needed to authorize the user making the call.
- $apiurl identifies the IP address (and protocol if possible) of the device.
- --data precedes the POST data being included with the call, if applicable. These are the parameters defined in the URL encoded payload to be sent through the API. The set of data parameters is typically surrounded by single quotes, to exempt any special characters that may be present in the parameter data.
A fully populated example of a GET method CURL call that does not require request parameters:
curl --user admin:password --insecure --url https://192.168.61.10:8443/status/system
A fully populated example of a POST method CURL call that does require request parameters:
curl --user admin:password --insecure --data 'duration=300&capture_profile_name=Display/Video (Podcast/Vodcast/EchoPlayer). Optimized for quality/full motion video&description=test-description' --url https://192.168.61.10:8443/capture/new_capture
As a final note on this Capture API guide, most of the calls provided in this document can be performed by any user. All of the calls listed in the Status API Calls and Capture API Calls sections of this guide can be performed by any user with login access to the system.
The calls in the Diagnostics API Calls section of this document can only be performed by an Administrator.
API Call Definitions
Device and Capture Status API Calls
The Status API calls are used to return status and capture information for the device. The Status calls in this section are GET only and are used specifically to retrieve information.
Get System Status
Returns the current status of the device.
Call: GET {base-uri}/status/system
Example: https://10.3.11.24:8443/status/system
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/status/system
The Response XML includes the information outlined in the below table. An example is provided below the table.
Device Tags | |
---|---|
wall-clock-time | GMT Time string from the device |
api-versions | API Version number of the client being communicated with. The current Capture API is version 3.0. |
capture-profiles | The capture profiles able to be captured by the device. These are descriptive text strings that can be used in calls that require capture profile information, such as Create New Capture. Capture Profiles appear in the WebUI as a dropdown box for the user to select what type of ad hoc capture to run. |
monitor-profiles | The capture inputs that can be provided for device monitoring. |
host-address | Name of the host. |
serial-number | The MAC address of the device (a unique identifier). |
system-version | Version string of the client software on the device. |
up-since | GMT Date/Time when the system was last started. |
last-sync | GMT Date/Time when the system last contacted the system. |
Content Tags | |
state | State of the current transfer: active, idle, or error. |
archive-space-usage | Percentage of the allocated space on the device currently being used for saved data. |
uploaded | Number of items that have been uploaded since the “up-since” time noted in the Device tags above. |
uploads-pending | Number of items waiting to be uploaded from the device to the cloud. |
bytes-pending | Number of bytes of data waiting to be uploaded from the device to the cloud. |
uploading | Is either true or false. If true, the upload block is populated with the tags described immediately below. If false, the below tags do not appear. |
upload/bytes-per-second | Bytes per second of the current file transfer. |
upload/filename | Filename of the file currently being uploaded. |
upload/start-time | GMT start time of the current file upload. |
Log Tags | |
utc-offset | Returns the offset in seconds between the time zone of current time and the UTC. |
location | String identifying the room to which the device has been assigned on the active learning platform. |
Response XML:
<status> <wall-clock-time>2014-02-12T14:21:29.550Z</wall-clock-time> <api-versions> <api-version>3.0</api-version> </api-versions> <capture-profiles> <capture-profile>Audio Only (Podcast). Balanced between file size & quality</capture-profile> <capture-profile>Display Only (Podcast/Vodcast/EchoPlayer). Balanced between file size & quality</capture-profile> <capture-profile>Display/Video (Podcast/Vodcast/EchoPlayer). Balanced between file size & quality</capture-profile> <capture-profile>Display/Video (Podcast/Vodcast/EchoPlayer). Optimized for quality/full motion video</capture-profile> <capture-profile>Dual Display (Podcast/Vodcast/EchoPlayer). Optimized for file size & bandwidth</capture-profile> <capture-profile>Dual Video (Podcast/Vodcast/EchoPlayer) - Balance between file size & quality</capture-profile> <capture-profile>Dual Video (Podcast/Vodcast/EchoPlayer) - High Quality</capture-profile> <capture-profile>Video Only (Podcast/Vodcast/EchoPlayer). Balanced between file size & quality</capture-profile> </capture-profiles> <monitor-profiles> <monitor-profile>Display/Video (Podcast/Vodcast/EchoPlayer). Balanced between file size & quality</monitor-profile> </monitor-profiles> <host-address>echo001404</host-address> <serial-number>00-1c-08-00-14-04</serial-number> <system-version>5.4.39512</system-version> <up-since>2014-02-09T06:33:09.212Z</up-since> <last-sync>2014-02-12T14:21:08.066Z</last-sync> <content> <state>idle</state> <archive-space-usage /> <uploaded>0</uploaded> <uploads-pending>0</uploads-pending> <bytes-pending>0</bytes-pending> <uploading>false</uploading> </content> <log> <state>idle</state> <archive-space-usage>37.8</archive-space-usage> <uploaded>956</uploaded> <uploads-pending>0</uploads-pending> <bytes-pending>0</bytes-pending> <uploading>false</uploading> </log> <location>Dulles: Atlantic Blvd, Appliance Dev Miki's SCHD</location> <utc-offset>-300</utc-offset> </status>
Get Capture Status
Returns information on the status of both the next and the current capture.
Call: GET {base-uri}/status/captures
Example: https://10.3.11.24:8443/status/captures
CURL Example:
curl --user admin:password –insecure --url https://192.168.61.10:8443/status/captures
Response XML: The below table lists and describes the tags included in the Response received from the device.
See Get Capture Status Response XML in the Appendix of this document for an example XML response for this call.
Device Tags | |
---|---|
wall-clock-time | GMT Time string from the device |
api-versions | API Version number of the client being communicated with. The current Capture API is version 3.0. |
capture-profiles | The capture profiles able to be captured by the device. These are descriptive text strings that can be used in calls that require capture profile information, such as Create New Capture. Capture Profiles appear in the WebUI as a dropdown box for the user to select what type of ad hoc capture to run. |
next | A capture data block describing the next scheduled capture (if any), including the information shown for the Capture Tags described below. |
current | A capture data block describing the currently running capture (if any), including the information shown for the Capture Tags described below. |
Capture Tags | |
type | Type of capture. |
start-time | GMT Time/Date string for when the capture started or is scheduled to start. |
duration | Number of seconds for which the capture is configured to run. |
title | The title of the course being captured. |
section | The section being captured, showing both the GUID and the Section Name. |
presenters | List of presenters for the section, including both the name and GUID or Alternate ID for each presenter. |
capture-profile id | The GUID (unique identifier) for the capture profile configured for this capture. |
name | The plain text name of the capture profile (product group) configured for this capture. The Product Tags shown below identify the specific information about this capture profile inputs. |
Product Tags | |
source name / type | Identifies each of the capture input sources for the capture profile (product group) being used for the capture. Each source section provides information about each, as identified in the below entries. |
audio | Identifies the below parameters as audio settings |
-- source name | Name given to the source input. |
-- input | Configuration of the input (e.g., balanced) |
-- mode | Channel mode of input: stereo or mono |
-- analog-gain | Setting of the analog gain input |
-- samplerate | The number of samples of audio carried per second |
-- gain | Gain setting of the input |
-- agc | Whether or not automatic gain control is set: true or false. |
display | Identifies the below parameters as display settings |
-- source name | Name given to the source input. |
-- channel | The input channel for this source |
-- input | The input method for the source (i.e., DVI or composite) |
-- brightness | Brightness setting for the source input |
-- contrast | Contrast setting for the source input |
-- saturation | Saturation setting for the source input |
-- framerate | Framerate setting for the source input |
-- width | Width setting of the display resolution |
-- height | Height setting of the display resolution |
-- fix-aspect-ratio | Whether the aspect ratio of the display input is fixed (true or false) |
-- is-display | Identifies whether the input is display or not. Shows true if the source is from a display (as from a computer screen); shows false if the source is video input. |
video | Identifies the below parameters as video settings |
-- source name | Name given to the source input. |
-- channel | The input channel for this source |
-- input | The input method for the source (i.e., DVI or composite) |
-- brightness | Brightness setting for the source input |
-- contrast | Contrast setting for the source input |
-- saturation | Saturation setting for the source input |
-- framerate | Frame rate setting for the source input |
-- width | Width setting of the display resolution |
-- height | Height setting of the display resolution |
-- fix-aspect-ratio | Whether the aspect ratio of the display input is fixed (true or false) |
-- is-display | Identifies whether the input is display or not. Shows false if the source is from a video input; shows true if the source is from a display. |
-- standard | Identifies the video standard being used for the input, either NTSC or PAL. |
Transformation to Output Tags | |
transform name / type | Identifies the name and type given to the output stream being generated. |
input | Identifies which source input this transformed output is being generated for. |
codec | The type of encoding being used for this output. |
encode-on-host |
Whether the encoding is being done on the host device. |
codec-parameters | Identifies the below tags as the parameters for the encoding for this output. Some/All of the below tags may appear, depending on the type of output file being generated (based on input type). |
-- bitrate-control | Identifies the control mechanism being used for bitrate settings. |
-- bitrate | Identifies the bitrate for the output file |
-- max-bitrate | Identifies the maximum possible bitrate for the output file. |
-- profile | The codec profile being used for the transformed output, i.e., 1c for audio or base for video. |
-- frames-per-keyframe | Number of frames per interval for the output. |
sink-name | Identifies the final output being created for each transformed input, including the tag information below. |
-- input | The transform name being used to generate this final output file. |
-- output <type> | The type of item being generated as output. |
-- output <filename> | The actual filename of the output file being generated for this transformed input stream. |
Get Next Capture Status
Returns information on the status of only the next capture.
Call: GET {base-uri}/status/next_capture
Example: https://10.3.11.24:8443/status/next_captures
CURL Example:
curl --user admin:password –insecure --url https://192.168.61.10:8443/status/next_capture
Response XML: Refer to the tags defined in the table in the section above for details on the information returned for this call.
For an example XML response for this call, see Get Next Capture Status Response XML in the Appendix of this document.
Get Current Capture Status
Returns information on the status of only the current capture.
Call: GET {base-uri}/status/current_capture
Example: https://10.3.11.24:8443/status/current_capture
CURL Example:
curl --user admin:password –insecure --url https://192.168.61.10:8443/status/current_capture
Response XML: Refer to the tags defined in the table in the section above for details on the information returned for this call.
For an example XML response for this call, see Get Current Capture Status Response XML in the Appendix of this document.
Get Capture Status with Monitoring Information
Returns real-time monitoring information on the current capture. This call is useful for returning the filename for a thumbnail (display or video) to use in the Show Current Video or Display View API call described in section 3.1.6 below.
Call: GET {base-uri}/status/monitoring
Example: https://10.3.11.24:8443/status/monitoring
CURL Example:
curl --user admin:password –insecure --url https://192.168.61.10:8443/status/monitoring
The Response XML includes the information outlined in the below table. An example is provided below the table.
Capture Status Tags | |
---|---|
state | State of the current capture, e.g., active or pending. |
start-time | GMT Time/Date string for when the capture started or is scheduled to start. |
duration | Number of seconds for which the capture is configured to run. |
output-type | The type of output being generated for this capture. This indicates if the output is to be streamed live, archived (made into an echo), or both. |
Source Tags | |
class | Identifies the source input to which the subsequent parameters apply (audio, video, vga, etc.). These tags are described below and some/all of these tags appear, depending on the class identified. |
subclass | Subclass of the class/source identified (e.g., pcm, display, video). |
name | Name of the input stream of the class/source. |
signal-present | Boolean value identifying if there is a signal present during capture (true or false) |
thumbnail | The file name of the thumbnail image of the capture input (display or video). This is the filename that can be used in the Show Current Video or Display View API call described in section 3.1.6 below. |
format | Format of the source. |
channels | Audio channel information including: position: audio position (right or left) average: average audio level peak: peak audio level. |
confidence-monitoring | Whether the capture input is being monitored: true or false. |
Response XML:
<status> <state>active</state> <start-time>2014-02-12T15:33:12.000Z</start-time> <duration>900</duration> <output-type>archive</output-type> <sources> <source> <class>audio</class> <subclass>pcm</subclass> <name>audio-stream0</name> <signal-present>false</signal-present> <format>pcm</format> <supported>true</supported> <channels> <channel> <position>left</position> <average>1</average> <peak>5</peak> </channel> <channel> <position>right</position> <average>1</average> <peak>5</peak> </channel> </channels> </source> <source> <class>vga</class> <subclass>display</subclass> <name>graphics-channel1-stream0</name> <signal-present>false</signal-present> <thumbnail>vga_display_graphics-channel1-stream0.jpg</thumbnail> </source> <source> <class>video</class> <subclass>ntsc</subclass> <name>graphics-channel2-stream0</name> <signal-present>false</signal-present> <thumbnail>video_ntsc_graphics-channel2-stream0.jpg</thumbnail> </source> </sources> <confidence-monitoring>true</confidence-monitoring> </status>
Show Current Video or Display View
Returns a snapshot image of the video or display input for the current capture. This is an image of what the Video input or Display input for the current capture is at the moment the call is made.
Use the filename information returned from the Get Capture Status call described in section 3.1.5 immediately above.
Request: Provide data for each of the parameters described in the below table.
Parameter | Description |
---|---|
duration | How long, in seconds, the capture is to be. |
capture_profile_name | The capture profile name or Product Group output to be used for the capture. The options available for the device can be obtained from the <capture-profiles> returned using the Get System Status call described in section 3.1.1 of this document. |
description | A string that provides a name for the capture. |
Call:
- Video: GET {base-uri}/monitoring/{filename-of-Video-Snapshot.jpg}
- Display: GET {base-uri}/monitoring/{filename-of-Display-Snapshot.jpg}
Example: https://10.3.11.24:8443/monitoring/video_ntsc_graphics-channel2-stream0.jpg
CURL Examples:
-
Video:
-
curl --user admin:password --insecure --data 'duration=900&capture_profile_name=Display/Video (Podcast/Vodcast/EchoPlayer). Optimized for quality/full motion video&description=test-description' --url https://192.168.61.10:8443/monitoring/video_ntsc_graphics-channel2-stream0.jpg
-
-
Display:
-
curl --user admin:password --insecure --data 'duration=900&capture_profile_name=Display/Video (Podcast/Vodcast/EchoPlayer). Optimized for quality/full motion video&description=test-description' --url https://192.168.61.10:8443/monitoring/vga_display_graphics-channel1-stream0.jpg
-
Response: Returns the image captured from the video or display input, depending on which call was made.
Get User Sections
Returns a list of the sections assigned to the user whose credentials (username and password) are sent with the API call. Response includes both Section Name and GUID along with the capture profile configured for each section.
Call: GET {base-uri}/status/get_user_sections
Example: https://10.3.11.24:8443/status/get_user_sections
CURL Example:
curl --user instructor:password –insecure --url https://192.168.61.10:8443/status/get_user_sections
Response XML:
<sections> <section ref="ec7a622a-da43-4a31-897f-841ea192f63d"> <name>Underwater Basket Weaving 101 (UWBW-101-100) Spring 2014</name> <capture-profile ref="74156b84-8edb-4016-a597-35abc0c1c486">Display Only (Podcast/Vodcast/EchoPlayer). Balanced between file size & quality</capture-profile> <products /> </section> </sections>
Get Authenticated User Reference ID
Returns the user reference ID (GUID) of the user whose credentials (username and password) are sent with the API call.
Call: GET {base-uri}/status/get_user_ref
Example: https://10.3.11.24:8443/status/get_user_ref
CURL Example:
curl --user admin:password –insecure --url https://192.168.61.10:8443/status/get_user_ref
Response XML:
<authenticated-user-ref>9d56966e-3b39-4e26-b0f4-58bebc3ec4de</authenticated-user-ref>
Diagnostics API Calls
The API calls identified below retrieve and perform diagnostic and maintenance duties for the capture device identified in the call. This section includes log retrieval calls.
The API calls in this section can only be performed by an Administrator.
Post Device.xml
This allows users to re-upload or upload a fresh device.xml to an Echo360 PRO device or an Echo360 POD device. This call will NOT work for a SafeCapture HD device.
NOTE: This is the only REST API command that will work prior to a device beig initialized for the first time.
Call: POST {base-uri}/config/upload/device.xml
Example: https://10.3.11.24:8443/config/upload/device.xml
CURL Example:
curl –user admin:password -X POST -d @device.xml –insecure –url http://10.3.11.24:8443/config/upload/device.xml
Response:
200 OK
Clear User Cache
Clears the user cache on the device.
Generally speaking, most Capture API calls can be performed by either “local users”, such as an admin or instructor, or system users, such as capture devices. When a user accesses any of the capture API calls, the user is authenticated against the active learning platform. The API sends the credentials to the cloud and the system responds to the API indicating authentication (or failure) for the user. This process can take some time, so it is not done for every call. Instead, whenever successful authentication occurs, the API caches the user credentials and validates against that, speeding up response time. However, if an administrator changes a user’s password, deletes an account or a device, or other similar action, the Capture API has no way of knowing. In this instance, the admin can either, reset/power cycle the capture device, or use this API call to force clear the cache.
Call: POST {base-uri}/diagnostics/clear_cache
Example: https://10.3.11.24:8443/diagnostics/clear_cache
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/clear_cache
Response:
User Cache Cleared Successfully.
Ping Host Connectivity
Test the connectivity of a host or an IP using the ping utility.
Call: POST {base-uri}/diagnostics/ping/www.google.com
Example: https://10.3.11.24:8443/diagnostics/ping/www.google.com
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/ping/www.google.com
Response:
Ping successful: www.google.com
Trace Route Path and Time
Returns the route path and transit time of a host on an IP.
Call: POST {base-uri}/diagnostics/traceroute/www.google.com
Example: https://10.3.11.24:8443/diagnostics/traceroute/www.google.com
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/traceroute/www.google.com
Response:
traceroute to www.google.com (74.125.228.83), 30 hops max, 60 byte packets<br/> 1 pfsense.echo360.local (192.168.60.1) 0.089 ms<br/> 2 10.3.10.1 (10.3.10.1) 0.833 ms<br/> 3 74.10.95.1 (74.10.95.1) 3.005 ms<br/> 4 205.232.184.113 (205.232.184.113) 3.108 ms<br/> 5 ge-0-0-0-1-12.tycrva03h00cr01.paetec.net (169.130.97.8) 6.002 ms<br/> 6 so-1-0-1.asbnvacyh43ig02.paetec.net (169.130.80.37) 91.006 ms<br/> 7 ge-5-0-0.asbnvacyh43ig02.paetec.net (209.252.156.18) 3.193 ms<br/> 8 eqixva-google-gige.google.com (206.126.236.21) 4.374 ms<br/> 9 209.85.252.46 (209.85.252.46) 5.911 ms<br/>10 72.14.238.247 (72.14.238.247) 6.345 ms<br/>11 iad23s07-in-f19.1e100.net (74.125.228.83) 6.058 ms<br/>
Restart Appliance Executables
Restarts all of the appliance executables.
Call: POST {base-uri}/diagnostics/restart_all
Example: https://10.3.11.24:8443/diagnostics/restart_all
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/restart_all
Response:
Restarting appliance executables...
Reboot Appliance
Performs a soft reboot of the appliance.
Call: POST {base-uri}/diagnostics/reboot
Example: https://10.3.11.24:8443/diagnostics/reboot
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/reboot
Response:
Rebooting appliance ...
Get Appliance Network Configuration
Returns the network configuration for the appliance.
Call: GET {base-uri}/diagnostics/system-info/ifconfig
Example: https://10.3.11.24:8443/diagnostics/system-info/ifconfig
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/system-info/ifconfig
Response:
eth0 Link encap:Ethernet HWaddr 00:1c:08:00:14:04
inet addr:192.168.61.10 Bcast:192.168.63.255 Mask:255.255.252.0
inet6 addr: fe80::21c:8ff:fe00:1404/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5672 errors:0 dropped:0 overruns:0 frame:0
TX packets:5698 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:914158 (892.7 KiB) TX bytes:1240932 (1.1 MiB)
Interrupt:19 Base address:0xa000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:558 errors:0 dropped:0 overruns:0 frame:0
TX packets:558 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:80582 (78.6 KiB) TX bytes:80582 (78.6 KiB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.25.10.10 P-t-P:172.25.11.11 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:1264 (1.2 KiB) TX bytes:1680 (1.6 KiB)
tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.25.20.20 P-t-P:172.25.22.22 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:1264 (1.2 KiB) TX bytes:1680 (1.6 KiB)
Get Appliance Tasks
Returns the current tasks file for the appliance. The task file is basically a list of the currently scheduled captures (tasks) for the device.
Call: GET {base-uri}/diagnostics/system-info/tasks
Example: https://10.3.11.24:8443/diagnostics/system-info/tasks
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/system-info/tasks
Response XML: For an example XML response for this call, see Get Appliance Tasks Response XML in the Appendix of this document.
Get Device Configuration File
Returns the contents of the device XML file for the appliance.
Call: GET {base-uri}/diagnostics/system-info/device
Example: https://10.3.11.24:8443/diagnostics/system-info/device
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/system-info/device
Response XML: For an example XML response for this call, see Get Device Configuration File Response XML in the Appendix of this document.
Get Device Processes
Returns a list of the processes currently running on the appliance.
Call: GET {base-uri}/diagnostics/system-info/top
Example: https://10.3.11.24:8443/diagnostics/system-info/top
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/system-info/top
Response XML: For an example XML response for this call, see Get Device Processes Response XML in the Appendix of this document.
Get Device Message Buffer
Returns the message buffer of the appliance kernel.
Call: GET {base-uri}/diagnostics/system-info/dmesg
Example: https://10.3.11.24:8443/diagnostics/system-info/dmesg
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/system-info/dmesg
Response: For an example XML response for this call, see Get Device Message Buffer Response XML in the Appendix of this document.
Get Saved Content on the Device
Returns a list of all saved content on the device. Can be used to determine if recovery of a capture is necessary, and if so, to obtain the capture ID of the capture to be re-uploaded.
Call: GET {base-uri}/diagnostics/recovery/saved-content
Example: https://10.3.11.24:8443/diagnostics/recovery/saved-content
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/recovery/saved-content
Response XML:
<captures>
<capture version="1.0" id="0797b8dd-4c2d-415a-adf9-daf7f10e1759">
<title>Underwater Basket Weaving 101 (UWBW-101-100) Spring 2014</title>
<start-time>2014-02-12T15:30:00.000Z</start-time>
<duration>3000</duration>
<section ref="ec7a622a-da43-4a31-897f-841ea192f63d">Underwater Basket Weaving 101 (UWBW-101-100) Spring 2014</section>
<capture-profile ref="74156b84-8edb-4016-a597-35abc0c1c486" />
<presenters>
<presenter ref="9d56966e-3b39-4e26-b0f4-58bebc3ec4de">John Doe</presenter>
</presenters>
<device ref="00-1c-08-00-14-04" />
</capture>
</captures>
Re-Upload Content from the Device to the Echo360 active learning platform
Reuploads saved content from the device to the cloud. Use the capture ID returned from the Get Saved Content on the Device call identified in the section above to identify the capture to upload and obtain the capture ID.
Call: POST {base-uri}/diagnostics/{capture-id}/upload
Example: https://10.3.11.24:8443/diagnostics/{capture-id}/upload
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/diagnostics/recovery/0797b8dd-4c2d-415a-adf9-daf7f10e1759/upload
Response:
<HTML><HEAD><TITLE>200 OK</TITLE></HEAD><BODY><H4>200 OK</H4>
Successfully moved 0797b8dd-4c2d-415a-adf9-daf7f10e1759
</BODY></HTML>
Retrieve the Last X Number of Log Messages
Returns the last x number of log messages specified in the call.
Call: GET {base-uri}/log-list-last-count/{#}
Example: https://10.3.11.24:8443/log-list-last-count/3
CURL Example:
curl --user admin:password --insecure --url https://192.168.61.10:8443/log-list-last-count/3
Response:
<log-entries>
<log-entry>
<![CDATA[ch2: Composite='none_idle' DVI='none_idle' VGA='none_idle'
level: Stats
message: "Channel 2: Composite='none_idle' DVI='none_idle' VGA='none_idle'"
pid: 23106
service: SystemStatus
source-file: src/SystemStatusService.cpp:335
type: SystemStatusService
version: 5.4.39512
when: 2014-02-12T17:37:52.365Z
who: echo001404
]]>
</log-entry>
<log-entry>
<![CDATA[ch1: Composite='none_idle' DVI='none_idle' VGA='none_idle'
level: Stats
message: "Channel 1: Composite='none_idle' DVI='none_idle' VGA='none_idle'"
pid: 23106
service: SystemStatus
source-file: src/SystemStatusService.cpp:332
type: "SystemStatusService: "
version: 5.4.39512
when: 2014-02-12T17:37:52.365Z
who: echo001404
]]>
</log-entry>
<log-entry>
<![CDATA[level: Stats
message: "Temperature: Congatec Board: 46.0 C"
pid: 23106
service: SystemStatus
source-file: src/SystemStatusService.cpp:251
temp: 46.0
type: SystemTemperature
version: 5.4.39512
when: 2014-02-12T17:37:52.364Z
who: echo001404
]]>
</log-entry>
</log-entries>
Capture Control API Calls
The API calls described below are used to create and manipulate captures performed by the capture device identified in the call.
Create New Capture
Creates and starts a new ad hoc capture using the parameters described in the table below. All parameters must be defined.
Call: POST {base-uri}/capture/new_capture
Http Request header: Content-Type=application/xml
Request: Provide data for each of the parameters described in the below table.
Parameter | Description |
---|---|
duration | How long, in seconds, the capture is to be. |
capture_profile_name | The capture profile name or Product Group output to be used for the capture. The options available for the device can be obtained from the <capture-profiles> returned using the Get System Status call described above. |
description | A string that provides a name for the capture. |
CURL Example:
curl --user admin:password --insecure --data 'duration=300&capture_profile_name=Display/Video (Podcast/Vodcast/EchoPlayer). Optimized for quality/full motion video&description=test-description' --url https://192.168.61.10:8443/capture/new_capture
Response:
<ok text="Capture scheduled for start" />
Create “Confidence Monitor” Capture
Creates and starts a new ad hoc “confidence monitor” capture, providing monitoring of the capture. All parameters, described in the below table, must be defined.
A confidence monitor is a dummy capture that does not get archived, sent to the cloud, or saved in any way. In all other regards. this call functions the same as a “new_capture” call described immediately above.
If you want to confirm a real capture will work, use the Show Current Video or Display View call described in the section above.
Call: POST {base-uri}/capture/confidence_monitor
Http Request header: Content-Type=application/xml
Request: Provide data for each of the parameters described in the below table.
Parameter | Description |
---|---|
duration | How long, in seconds, the capture is to be. |
capture_profile_name | The capture profile name or Product Group output to be used for the capture. The options available for the device can be obtained from the <capture-profiles> returned using the Get System Status call described above. |
description | A string that provides a name for the capture. |
CURL Example:
curl --user admin:password --insecure --data 'duration=900&capture_profile_name=Display/Video (Podcast/Vodcast/EchoPlayer). Optimized for quality/full motion video&description=test-description' --url https://192.168.61.10:8443/capture/confidence_monitor
Response:
<ok text="Capture scheduled for start" />
Extend a Capture
Sends a command to extend the current capture by the amount of time, in seconds, provided in the duration parameter. Captures cannot be extended past the start time of the next scheduled capture.
If the capture cannot be extended for the duration identified, the capture will be extended as far as possible within the given schedule constraints.
Call: POST {base-uri}/capture/extend
Http Request header: Content-Type=application/xml
Request: Provide duration of extension in number of sections. For example, duration=600 extends the capture by 10 minutes.
CURL Example:
curl --user admin:password --insecure --data 'duration=600' --url https://192.168.61.10:8443/capture/extend
Response:
<ok text="Extend by 600 seconds received" />
Pause a Capture
Sends a command to pause the current recording. There must be a running capture in the recording state for this command to have any effect.
Call: POST {base-uri}/capture/pause
CURL Example:
curl --user admin:password --insecure --data '' --url https://192.168.61.10:8443/capture/pause
Response:
<ok text="Command (pause) submitted" />
Start or Resume a Capture
Sends a command to start recording. This command only works under following two conditions:
- There is a running capture that is currently paused. This command resumes the paused capture.
- There is a scheduled capture in the “waiting“ or pre-roll state. This command allows you to start the scheduled recording early/immediately.
Call: POST {base-uri}/capture/record
CURL Example:
curl --user admin:password --insecure --data '' --url https://192.168.61.10:8443/capture/record
Response:
<ok text="Command (record) submitted" />
Stop a Capture
Sends the command to stop recording. There must be a currently recording capture for this command to have any effect. NOTE that captures are processed and uploaded immediately upon stopping the capture.
Call: POST {base-uri}/capture/stop
CURL Example:
curl --user admin:password --insecure --data '' --url https://192.168.61.10:8443/capture/stop
Response:
<ok text="Command (stop) submitted" />