2013-05-24 05:23:25 -04:00
|
|
|
# Elasticsearch REST API JSON specification
|
|
|
|
|
2015-03-24 12:03:35 -04:00
|
|
|
This repository contains a collection of JSON files which describe the [Elasticsearch](http://elastic.co) HTTP API.
|
2013-05-24 05:23:25 -04:00
|
|
|
|
|
|
|
Their purpose is to formalize and standardize the API, to facilitate development of libraries and integrations.
|
|
|
|
|
2015-03-24 12:03:35 -04:00
|
|
|
Example for the ["Create Index"](http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html) API:
|
2013-05-24 05:23:25 -04:00
|
|
|
|
|
|
|
```json
|
2013-05-28 04:55:24 -04:00
|
|
|
{
|
|
|
|
"indices.create": {
|
2015-03-24 12:03:35 -04:00
|
|
|
"documentation": "http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html",
|
2013-05-28 04:55:24 -04:00
|
|
|
"methods": ["PUT", "POST"],
|
|
|
|
"url": {
|
|
|
|
"path": "/{index}",
|
|
|
|
"paths": ["/{index}"],
|
|
|
|
"parts": {
|
|
|
|
"index": {
|
|
|
|
"type" : "string",
|
|
|
|
"required" : true,
|
|
|
|
"description" : "The name of the index"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"params": {
|
|
|
|
"timeout": {
|
|
|
|
"type" : "time",
|
|
|
|
"description" : "Explicit operation timeout"
|
2013-05-24 05:23:25 -04:00
|
|
|
}
|
|
|
|
}
|
2013-05-28 04:55:24 -04:00
|
|
|
},
|
|
|
|
"body": {
|
|
|
|
"description" : "The configuration for the index (`settings` and `mappings`)"
|
2013-05-24 05:23:25 -04:00
|
|
|
}
|
2013-05-28 04:55:24 -04:00
|
|
|
}
|
|
|
|
}
|
2013-05-24 05:23:25 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
The specification contains:
|
|
|
|
|
|
|
|
* The _name_ of the API (`indices.create`), which usually corresponds to the client calls
|
2015-03-24 12:03:35 -04:00
|
|
|
* Link to the documentation at <http://elastic.co>
|
2013-05-24 05:23:25 -04:00
|
|
|
* List of HTTP methods for the endpoint
|
|
|
|
* URL specification: path, parts, parameters
|
2013-05-28 04:55:24 -04:00
|
|
|
* Whether body is allowed for the endpoint or not and its description
|
2013-05-24 05:23:25 -04:00
|
|
|
|
|
|
|
The `methods` and `url.paths` elements list all possible HTTP methods and URLs for the endpoint;
|
|
|
|
it is the responsibility of the developer to use this information for a sensible API on the target platform.
|
|
|
|
|
2013-06-19 09:12:20 -04:00
|
|
|
# Utilities
|
|
|
|
|
|
|
|
The repository contains some utilities in the `utils` directory:
|
|
|
|
|
|
|
|
* The `thor api:generate:spec` will generate the basic JSON specification from Java source code
|
|
|
|
* The `thor api:generate:code` generates Ruby source code and tests from the specs, and can be extended
|
|
|
|
to generate assets in another programming language
|
|
|
|
|
|
|
|
Run `bundle install` and then `thor list` in the _utils_ folder.
|
2013-05-24 05:23:25 -04:00
|
|
|
|
2013-12-08 07:35:18 -05:00
|
|
|
The full command to generate the api spec is:
|
|
|
|
|
|
|
|
thor api:spec:generate --output=myfolder --elasticsearch=/path/to/es
|
|
|
|
|
2013-05-24 05:23:25 -04:00
|
|
|
## License
|
|
|
|
|
2014-11-07 23:57:13 -05:00
|
|
|
This software is licensed under the Apache License, version 2 ("ALv2").
|