JSON API
The API can logical be divided in three sections: running jobs, monitor job state and reading results.
Running Monitor ReadingCommand line
Using curl is a great way to explore the API from the command line:
curl -XPOST http://chemgps.bmc.uu.se/batchelor/api/json/queue -d '{"sort":"started","filter":"crashed"}'
Target method
The method name either be encoded in the URL (see previous example) or inside the JSON payload:
curl -XPOST http://chemgps.bmc.uu.se/batchelor/api/json/index -d '{"method":"queue","sort":"started","filter":"crashed"}'
Response
All responses (except from fopen()) is JSON encoded and contains at least the status member that is either 'success' or 'failure'. A success response contains the additional 'result' member containing the requested data:
{
"status": "success",
"result": "..."
}
A failed request contains the additional 'message' and 'code' members. The code is internal and can be ignored.
{
"status": "failure",
"message": "The task processor vorbis is missing",
"code": 0
}
The HTTP status code is always 200. If you get something else, its origin is not from this system.
Modify output
A couple of extra parameters can be passed that affects how the JSON response gets encoded:
curl -XPOST http://chemgps.bmc.uu.se/batchelor/api/json/queue?pretty=1&escape=0&numeric=1&unicode=0&fraction=1 -d '{"sort":"started","filter":"crashed"}'
- pretty: Use whitespace in returned data to format it.
- escape: Don't escape '/'.
- numeric: Encodes numeric strings as numbers.
- unicode: Encode multi-byte Unicode characters literally (default is to escape as \uXXXX).
- fraction: Ensures that float values are always encoded as a float value.
These options can be passed using POST or GET (as in the example above). The example also shows the value to enable/disable that particular option.