REST (REpresentational State Transfer) is an architecture for distributed systems. In a REST architecture, data and functionality are considered "resources":
Any information can be a resource: document, image, temporal service, collection of other resources, even a "non-virtual" object, such as a person.
REST uses a Uniform Resource Identifier (URI) to identify the resource.
The state of a resource is the "resource representation": data, metadata, and hyperlinks.
The data format of a representation is the "media type," which defines how a representation is to be processed.
Resource representations are self-descriptive based on the resource's media-type.
A clearly defined set of operations is used to act upon resources. Clients and servers exchange representations of resources using a standardized interface and protocol (e.g., HTTP).
Every resource method needed to change the resource state is part of the response for that resource. Resource methods may correspond to HTTP GET, PUT, POST, and DELETE methods, although no particular assignment is required to make an API RESTful.
To be considered "RESTful," an interface must possess these properties:
Client/server – The user interface is separated from the data storage.
Stateless – Each client request must contain all the information necessary to understand the request (the session state is kept on the client).
Cacheable – The data in a response must be labeled as cacheable or non-cacheable (if cacheable, a client can reuse that response later).
Uniform interface – REST has four interface constraints: identification of resources; manipulation of resources through representations, self-descriptive messages, and hypermedia as the engine of application state.
Layered system – The architecture is a hierarchy of layers. Each component cannot see beyond the immediate layer with which it is interacting.
Code on demand (optional) – REST allows client functionality to be extended with applets or scripts.
c-treeACE REST API
FairCom has made c-treeACE available via a REST interface. The current offering is a Navigational API, which is ideally suited for handling raw sensor data, providing high-speed processing with immediately-consistent ACID transactions. See Navigational REST API.