OpenSearch/rest-api-spec
Karel Minarik 3632c5bd68 Added the API definition for `_explain` 2013-05-26 17:05:29 +02:00
..
api Added the API definition for `_explain` 2013-05-26 17:05:29 +02:00
.gitignore Initial commit (blank repository) 2013-05-23 17:56:22 +02:00
Gemfile [UTIL] Added a JSON files generator 2013-05-24 12:06:04 +02:00
LICENSE.txt [SETUP] Added README and LICENSE 2013-05-24 12:06:08 +02:00
README.markdown [SETUP] Added README and LICENSE 2013-05-24 12:06:08 +02:00
Thorfile [UTIL] Changed, that JSON generator sorts API `parts` and `params` 2013-05-26 12:18:40 +02:00

README.markdown

Elasticsearch REST API JSON specification

This repository contains a collection of JSON files which describe the Elasticsearch HTTP API.

Their purpose is to formalize and standardize the API, to facilitate development of libraries and integrations.

Example for the "Create Index" API:

    {
      "indices.create": {
        "documentation": "http://elasticsearch.org/guide/reference/mapping/",

        "methods": ["PUT", "POST"],

        "url": {
          "path": "/{index}",

          "paths": ["/{index}"],

          "parts": {
            "index": {}
          },

          "params": {
            "index": {},
            "timeout": {}
          }
        },
        "body": {
        }
      }
    }

The specification contains:

  • The name of the API (indices.create), which usually corresponds to the client calls
  • Link to the documentation at http://elasticsearch.org
  • List of HTTP methods for the endpoint
  • URL specification: path, parts, parameters
  • Whether body is allowed for the endpoint or not

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.

The repository also contains a utility script in Ruby which will scan and parse the Elasticsearch source code to extract the information from the Java source files. Run bundle install and then thor help api:generate:spec.

License

This software is licensed under the Apache 2 license.