REST API

As Small.World was designed to be relatively simple to integrate into other systems,
a method of communicating with the coordinator was required. A REST API was chosen for this as REST makes use of standard HTTP protocol for sending commands (via the message body)
and requesting information (Masse, 2011), allowing developers to work with a widely used and familiar protocol rather than one tailor made for Small.World. It was decided that commands themselves would be formatted as JavaScript Object Notation (JSON),chosen because it is lightweight and used in many other web services.

Jobs Functionality

The REST API can request a single job (specied by its ID). It can also request a collection of all jobs (or all job IDs) currently in the system (Maximilien  et al, 2007). The REST API can request a timestamp indicating the last time that any job was added or deleted(but not modified). There is also a method that returns a collection of all jobs which have been modified since a specified time.The REST API can also call a method to delete a single job, specified by its ID.

Agents Functionality

The REST API can request a single Agent by specifying its ID. It can also request a collection of all Agents currently in the database (not just the currently connected Agents). There is a method which returns a collection of all jobs currently assigned a specified Agent (on any of its cores). There is also a method which allows the REST API to manually delete an Agent from the system. This will force the Agent to disconnect(if it is currently connected), will unassign all of its currently allocated jobs, and will remove the Agent (and all of its cores) from the database. For a specific Agent, the REST API is able to request the number of jobs which are currently allocated to that Agent’s cores, and is able to request a collection including those jobs. It can also request a boolean indicating whether or not the Agent is currently online.

Languages Functionality

The REST API can request a collection of all languages currently supported by Small.World and its Agents. An assumption is made that all Agents support the same languages, since language support is determined by Small.World.

References:

Masse, M. (2011). REST API design rulebook. ” O’Reilly Media, Inc.”.

Maximilien, E. M., Wilkinson, H., Desai, N., & Tai, S. (2007). A domain-specific language for web apis and services mashups (pp. 13-26). Springer Berlin Heidelberg.