## Overview The NuBot Platform features a full fledged [RESTful](http://en.wikipedia.org/wiki/RESTful) API giving our users the ability to programmatically interact with the platform. Some noteworthy use cases include: * Launch a Test Session from a build process; * Get raw test session date to provide trend analysis over time; * Gather metrics to be displayed on a web dashboard; * Collect information to be sent to third-party components such as Splunk, Logstash, Flume, or Graphite; * Set SNMP traps based on status API requests; ## API in a Nutshell Every user has access to our web API. In fact, our Eclipse ITE Plug-In leverage this API to communicate with our server. Upon registration, you have been assigned an API end-point (e.g., URI) which represents the API base path. Such URI should have the following form: https://nubot.nuecho.com/api/v0.1/<site> where `site` represents your account name. Every single request to our platform is performed over that base URI. ### Authentication Along with the URI, your registration details contain authentication credentials in the form of an account name and a secret key. Our web API uses standard [HTTP Digest authentication](http://en.wikipedia.org/wiki/Http_digest_authentication) scheme over an SSL-encrypted HTTP connection. Hence, whatever the HTTP agent you intend to use, the authentication method remains the same. For instance, using [cURL](http://en.wikipedia.org/wiki/CURL), the following can be used: curl --user <account:secret> https://nubot.nuecho.com/api/v0.1/<account>/status/ping where `account` and `secret` are your account name and secret key respectively. #### Note Obviously, you're far from being restricted to cURL. There are many HTTP client libraries out there for any programming languages, from Ruby, Perl, or Python, to Java or PHP. Which language are you using? [Let us know](mailto:nubot-support@nuecho.com)! ## Services Our platform is layered on top of several services, each one dealing with specific tasks. | Service | Description | |---------------------------------|------------------------------------------------------------------------------| |**status** | Provides meta information about the platform. | |**[operations](api/operations)** | Is responsible for launching and monitoring any ongoing test session. | |**[resources](api/resources)** | Manages the test resources used at runtime. | |**[results](api/results)** | Accumulates data about every single test session call. | |**[audio](api/audio)** | Stores audio resources used by test case scenarios. | |**recording** | Provides access to full call recording. | |**analytics** | Responsible for crunching analytical statistics regarding past test sessions.| |**telephony** | Provides low-level interaction with the underlying telephony platform. | Each service name can be used to forge an URL request, interacting with the platform. ### Generalities While independent, each and every service features a series of common `GET` methods: | Method | Description | |-----------|------------------------------------------------------------------------------------------| |**ping** | returns if the service is up and running. | |**meta** | returns meta information about the service. | |**uuid** | returns a universally unique identifier (aka [uuid](http://en.wikipedia.org/wiki/Uuid)). | |**epoch** | returns a timestamp based on optionally a timezone and/or a date; | #### Important Aside from our **resources** service which supports XML content type (`application/xml`), all of our services support [JSON](http://en.wikipedia.org/wiki/Json) content type (`application/json`) for both requests and responses.